- 网络:
内部网络:172.16.1.0/24(仅主机模式);
外部网络:192.168.1.0/24(桥接模式); - 服务器:
2 台 VMware Workstation 虚拟机(node103、node104);
安装 CentOS 7.2(已经过系统初始化操作);
yum 安装 MariaDB; - 实验环境基础服务:
外网 DNS & NTP:192.168.1.250;
内网 DNS & NTP:172.16.1.250;
2.1:安装 MariaDB
- 两台服务器均使用 yum 安装 mariadb-server:
]# yum install mariadb-server -y
2.2:配置 MariaDB
- 备份配置文件:
]# cp /etc/my.cnf{,.bak}
2.2.1:node103 配置
- 编辑 /etc/my.cnf:
[root@node103 ~]# vim /etc/my.cnf
[mysqld]
bind-address=172.16.1.103
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
max_connections=1024
innodb_file_per_table=1
innodb_buffer_pool_size=536870912
innodb_log_group_home_dir=/data/mysql_logs/
innodb_log_file_size=10485760
long_query_time=5
slow_query_log=1
slow_query_log_file=/data/mysql_logs/mysql-slow.log
server-id=103
log-bin=/data/mysql_logs/mysql-binlog
relay-log=/data/mysql_logs/mysql-relay
[mysqld_safe]
log-error=/data/mysql_logs/mysql-error.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
2.2.2:node104 配置
- 编辑 /etc/my.cnf:
[root@node104 ~]# vim /etc/my.cnf
[mysqld]
bind-address=172.16.1.104
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
max_connections=1024
innodb_file_per_table=1
innodb_buffer_pool_size=536870912
innodb_log_group_home_dir=/data/mysql_logs/
innodb_log_file_size=10485760
long_query_time=5
slow_query_log=1
slow_query_log_file=/data/mysql_logs/mysql-slow.log
server-id=104
log-bin=/data/mysql_logs/mysql-binlog
relay-log=/data/mysql_logs/mysql-relay
[mysqld_safe]
log-error=/data/mysql_logs/mysql-error.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
2.3:my.cnf 配置说明
2.3.1:MySQL 程序相关配置
- bind-address=172.16.1.104
指定 mysql 监听地址;
数据调用只使用内网环境,所以 mysql 只监听内网地址;
- socket=/var/lib/mysql/mysql.sock
指定 scoket 文件,保持默认; - user=mysql
指定 mysql 程序的启动用户;
默认应该也是 mysql 用户;
- symbolic-links=0
禁用软链接;
MySQL 建议禁用此项,以抵御安全风险;
相比于禁用此项,开启软链接可以将数据文件移动至别处,在数据目录中创建相应的软链接来指向真实数据文件;
- datadir=/data/mysql
自定义数据文件存放目录; - max_connections=1024
设置 MySQL 的最大并发连接数;
该选项默认值为 151;
MySQL 不是直接面向用户的,而是面向程序,所以无需过大;
2.3.2:InnoDB 相关配置
- innodb_file_per_table=1
使用单独表空间;
即每张表的数据和索引都存储于自己专用的表空间文件中;
InnoDB 的很多高级特性都依赖于此参数,建议设定为 ON;
- innodb_buffer_pool_size=536870912
InnoDB 的内存缓冲区大小;
如果是数据库专用服务器,该值尽量设得大一些;
虚拟机内存分配为 1G,这里分配给缓冲区的大小为 512M;
- innodb_log_group_home_dir=/data/mysql_logs/
指定事务日志的保存路径; - innodb_log_file_size=10485760
每个事务日志文件的大小;
默认 5M,这里调整为 10M;
对于事务频繁的数据库,该值建议调得再大些,有利于提高 IO 效率;
但也不宜过大,因为在需要恢复数据时,会延长数据恢复时间;
2.3.3:慢日志相关配置
- long_query_time=5
慢查询时长定义(即多长时间的查询会被认为是 “慢查询”);
默认就是 5s;
根据业务查询复杂程度和慢日志实际记录情况合理调整;
- slow_query_log=1
开启记录慢日志; - slow_query_log_file=/data/mysql_logs/mysql-slow.log
指定慢日志文件保存路径;
2.3.4:MySQL 复制相关配置
- server-id=103
定义 MySQL 服务器 ID,每个节点保证不同; - log-bin=/data/mysql_logs/mysql-binlog
开启二进制日志记录,并指定二进制日志文件保存路径;
主从复制架构中,从节点需要关闭二进制日志;
- relay-log=/data/mysql_logs/mysql-relay
开启中继日志,并指定中继日志文件保存路径;
主从复制架构中,主节点不需要开启中继日志;
2.3.5:mysqld_safe
- log-error=/data/mysql_logs/mysql-error.log
开启错误日志记录,并指定错误日志保存路径; - pid-file=/var/run/mariadb/mariadb.pid
指定 pid 文件路径;
2.4:启动 mariadb
- 创建相应目录:
]# mkdir /data/{mysql,mysql_logs} -pv
]# chown mysql:mysql /data/mysql* -R
- 启动 mariadb 并设置为开机启动:
]# systemctl enable mariadb
]# systemctl start mariadb
- 初始化安全配置:
]# mysql_secure_installation