硬件信息:CentOS Linux release 7.5.1804 (Core)
主数据库:172.16.116.40
从数据库:172.16.116.42、172.16.116.43
如果已经安装5.5版本需要升级10版本,可以参考:MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
安装MySQL服务(主从都需要)
开放数据库默认端口3306,并重载防火墙配置
# firewall-cmd --zone=public --add-port=3306/tcp --permanent # firewall-cmd --reload
使用yum安装mysql数据库
yum install mariadb mariadb-server
启动MySQL数据库(systemctl start mariadb),并查看状态(systemctl status mariadb)
设置MySQL的root用户密码
set password for 'root'@'localhost' = password('你的密码');
给root用户最大权限
grant all privileges on *.* to 'root'@'%' identified by 'password';
进入/etc/目录,先备份配置文件(cp my.cnf my.cnf.bak)
主服务器配置(172.16.116.40)
配置主服务器
(1)Server-id:是用来标识数据库服务器的,取值在1到(232-1),这里使用数据库服务器ip最后一位来标识当前服务器;
(2)log-bin:二进制日志,用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改;
(3)innodb_flush_log_at_trx_commit和sync_binlog:使用innodb事务进行数据复制,并保证持久和一致。
[mysqld] server-id=40 log-bin=mysql-bin-40 innodb_flush_log_at_trx_commit=2 sync_binlog=1
重启数据库,并进入数据库将172.16.116.42和172.16.116.43两台从数据库服务器访问主数据库权限设为最大(新建master用户),然后查看主服务器状态
systemctl restart mariadb; mysql -uroot -p 密码 grant all privileges on *.* to 'master'@'172.16.116.42' identified by 'password'; show master status;
记住主数据库的File和Position列的值
从服务器配置
配置从数据库my.cnf文件
然后登录mysql执行以下语句
CHANGE MASTER TO -> MASTER_HOST='172.16.116.40', # 主服务器ip -> MASTER_USER='master', # 主服务器上创建的用户 -> MASTER_PASSWORD='你配置的主服务器密码', # 密码 -> MASTER_LOG_FILE='mysql-bin-40.000001', # 为master中的二进制日志文件,刚刚记住的File -> MASTER_LOG_POS=565; # 刚刚记住的Position
开启从数据库服务(start slave;)
查看从服务器状态(show slave status;),\G分行,以下配置正常,并且从服务器IO和SQL服务正常
测试:在主服务器上新建distributed_test数据库(只能主服务器写,否则会出错),正常同步到了两台从数据库。至此,MySQL主从服务器配置完成。