MySQL
openstack除了Dashboard的Horizon没用到mysql,其余组件都需要连接mysql存储信息,因此mysql数据尤为重要,生产中建议单独部署节点和主备,OpenStack 服务也支持其他 SQL 数据库,包括PostgreSQL
- 关系型数据库
- 以关系模型二维表组织存放数据
- 数据库: 数据库是一些关联表的集合
- 数据表: 表是数据的矩阵,就类似excel表格一样的行和列组成的数据
- 行: 二维表中的一行,在数据库中被称为记录
- 列: 二维表中的一列,在数据库中被称为字段
- 域:属性的取值范围,也就是数据库中某一列的取值限制
- 主键: 可以唯一标识元组的属性
- 外键:外键用于关联两个表
- 索引:使用索引可快速访问数据库表中的特定信息(书目录)
选择mysql数据库GA版本发布后6个月以上的GA版本(5.5版本)
mariadb是mysql的复制品,由于oracle收购mysql闭源,mariadb开源
安装mariadb软件包
yum -y install mariadb mariadb-server python2-PyMySQL
#python2-PyMySQL 使python2支持mysqldb
创建配置文件
cat > /etc/my.cnf.d/openstack.cnf <<-'EOF'
[mysqld]
bind-address = 192.168.0.210
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
解析
bind-address为监听地址,设置为管理节点IP,防止监听其他网卡ip
mysql的存储引擎:MyISAM与InnoDB
MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
参考:https://mp.weixin.qq.com/s/-r3qsTMwp8jGLxyVEmtDcg
扩展什么是事务?
启动服务
systemctl enable mariadb.service
systemctl start mariadb.service
常规化安全设置
mysql_secure_installation
#默认密码空,直接回车
#设置数据库密码
#删除匿名用户
#开启root用户远程登录,方便客户端登入
#删除test数据库
#重载权限表
数据库基础操作
mysql -u root -p
#登入数据库
show databases;
#查看数据库
use mysql;
#进入数据库
show tables;
#查看所有的表,进入数据库下查询
show grants;
#查看数据库的授权用户,新建用户名需要配置
详细参考:https://www.runoob.com/mysql/mysql-tutorial.html
MongDB
Telemetry 服务使用 NoSQL 数据库来存储信息,OpenStack采用MongDB
- NoSQL不使用SQL作为查询语言,其数据存储可以不需要固定的表格模式
- MongoDB数据存储格式:JSON与BSON格式,以文档的形式存在(区别mysql以表形式)
- 存储形式为键值对方式,也就是类似(姓名:xxxx),NAME-VALUE 配对(类似python中的字典)
配置安装
配置第三方yum源
yum -y install epel-release
安装MongDB包
yum install mongodb-server mongodb
配置文件
vi /etc/mongod.conf
bind_ip = 192.168.0.210
#设置为管理节点IP,防止监听其他网卡ip
smallfiles = true
#默认情况下,MongoDB会在``/var/lib/mongodb/journal`` 目录下创建几个 1 GB 大小的日志文件
#如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值:
启动MongoDB 并配置它随系统启动
systemctl enable mongod.service
systemctl start mongod.service
启动Mongo shell
mongo 192.168.0.210
详细命令操作:https://www.runoob.com/mongodb/mongodb-tutorial.html