MySQL 主从同步配置
教程环境:
系统:CentOS 7
主服务器:192.168.10.15
从服务器:192.168.10.20
数据库版本:MySQL 5.7
注:MySQL 版本一定要一致,配置前,主从需同步的数据库的数据需一致
安装 MySQL
- 参考笔记 - 🌏 CentOS 7 安装 MySQL 5.7
主服务器配置
- 修改主库的 my.cnf 在
[mysqld]
下新增配置
# vim /etc/my.cnf
# 新增以下内容
server_id = 1
log-bin = mysql-bin
binlog_format = mixed
binlog-do-db = solo
expire_logs_days = 7
- 配置解释:
# server-id 唯一的服务辨识号,数值位于 1 到 2^32-1之间.
# 此值在master和slave上都需要设置.
# 如果 “master-host” 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.
server-id = 1 #[必须]服务器唯一ID,默认是1
#log-bin 打开二进制日志功能.
#在复制(replication)配置中,作为MASTER主服务器必须打开此项
#如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.
log-bin = mysql-bin #[必须]启用二进制日志
#需要开启生成二进制日志记录相关配置,配置在需要被复制的服务器上,即:master
binlog-do-db = my_test1 #指定对名称为test_db的数据库记录二进制日志
# binlog-ignore-db = mysql #指定不对名称为mysql的数据库记录二进制日志
# binlog-ignore-db = information_schema #指定不对名称为information_schema的数据库记录二进制日志
binlog_format = mixed #binlog日志格式,mysql默认采用,如果从服务器slave有别的slave要复制那么该slave也需要这一项
expire_logs_days = 7 #超过7天的binlog删除
- 重启 MySQL 服务
# systemctl restart mysqld
- 重启后进入 MySQL
# mysql -uroot -p
- 创建同步用户,用户名自定义,密码需要符合密码规则,并授予用户
REPLICATION SLAVE
权限和REPLICATION CLIENT
权限,用于在主从库之间同步数据
mysql> CREATE USER 'slavedb'@'192.168.10.20' IDENTIFIED BY 'Abc123..456';
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slavedb'@'192.168.10.20';
- 用户名:slavedb,密码:Abc123..456,可使用此用户的服务器IP:192.168.10.20(从服务器IP地址)
- 若需所有服务器都可以使用这个用户,则将IP地址改为 % 即可
- 查看主库配置状态
mysql> show master status;
- 记录下
File
和Position
的值,并且不进行其他操作以免引起Position
的变化。
从服务器配置
- 修改主库的 my.cnf 在
[mysqld]
下新增配置
# vim /etc/my.cnf
# 新增以下内容
server-id = 2
log-bin = mysql-slave-bin
replicate-do-db = solo
- 配置解释
# server-id 唯一的服务辨识号,数值位于 1 到 2^32-1之间.
# 此值在master和slave上都需要设置.
# 如果 “master-host” 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.
server-id = 2 #[必须]服务器唯一ID,默认是1
# replicate-do-db 需要做复制的数据库,如果复制多个数据库,重复设置这选项即可master上不需要此项,slave上需要
replicate-do-db = my_test1 #复制名称为test_db的数据库
# replicate-ignore-db 不需要复制的数据库,如果要忽略复制多个数据库,重复设置这个选项即可
# replicate-ignore-db = mysql #不需要(忽略)复制名称为mysql的数据库
- 重启 MySQL 服务
# systemctl restart mysqld
- 重启后进入 MySQL
# mysql -uroot -p
- 执行同步命令
mysql> change master to master_host='192.168.10.15', master_user='slavedb', master_password='Abc123..456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=1132;
master_host :Master的地址
master_port:Master的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
- 开启主从复制
mysql> start slave;
- 查看同步状态:
mysql> show slave status \G;
SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启
- 至此完成了 MySQL 主从同步搭建工作!
测试
- 在主库中新增数据,查看从库是否马上显示
- 在主库中删除数据,查看从库是否马上删除
- 在主库中更新数据,查看从库是否马上更新
评论
0 评论