环境:
CentOS 7
MySQL 5.7.21
主master:172.16.69.131
从slave:172.16.69.132
1、首先把MySQL官网上下载的mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar上传到服务器CentOS7。
2、安装MySQL,配置防火墙。这里不做讲述,不会的或者忘记了可以参考《CentOS 7安装MySQL 5.7》
3、配置主数据库master
vi /etc/my.cnf
添加
log-bin=mysql-bin
server-id=1
然后开启MySQL服务
systemctl start mysqld
此处跳过如何查看root用户初始密码、为root用户设置新密码和添加远程登录用户等步骤,都可以在上面的博文找到相应的操作。
进入主数据库(172.16.69.131),为从数据库(172.16.69.132)同步主数据库添加一个用户权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!'; #分配复制权限
FLUSH PRIVILEGES;
show master status \G;
此信息留作备用(从数据库需要)
然后配置从数据库
1、vi /etc/my.cnf
添加
log-bin=mysql-bin
server-id=2 #不能跟其他数据库重复,这里仅不能跟主数据库重复
开启从数据库,同理此处跳过如何查看root用户初始密码、为root用户设置新密码和添加远程登录用户等步骤,直接来到跟主从配置相关的操作。
stop slave; #若是数据库已经开启过主从同步,则需要停止,新安装的数据库不需要此步骤
change master to master_host='172.16.69.131',master_user='slave',master_password='MySQLadmin1!',master_log_file='mysql-bin.000001', master_log_pos=846;
将从数据库指向主数据库,用户账号为主数据分配权限的用户slave,master_log_file, master_log_pos的信息就是之前留作备用的主数据库信息,这部分数据会变,每次同步的时候都需要在主数据库上查看。
start slave; #配置完成,开启同步
show slave status \G; #查看同步状态
两个yes则表示同步已经开启。
这时,在主数据库创建一个master_slave数据库,则从数据库会自动同步过来。
第二种是指定同步的数据库
主数据库
binlog-ignore-db #忽略同步日志的数据库
binlog-do-db #需要同步日志的数据库
同理,给与从数据库同步复制的权限
GRANT FILE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!';
FLUSH PRIVILEGES;
从数据库
replicate-do-db #需要复制的数据库
replicate-ignore-db #不需要复制的数据库
log-slave-updates #从数据库会同步更新主数据库日志
slave-skip-errors #跳过出现的错误
slave-net-timeout #从数据库同步超时时间
stop slave;
change master to master_host='172.16.69.131',master_user='slave',master_password='MySQLadmin1!',master_log_file='mysql-bin.000002', master_log_pos=1478;
start slave;
这一步骤跟第一种方法一样
此时在主数据库创建master_slave,从数据库就能看到同步了
参考资料:
CentOS 7安装MySQL 5.7
MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
MySQL主从复制与主主复制
写在最后:
农历新年就要到了,预祝大家新年快乐!