一、环境准备
安装教程:CentOS7安装MySQL
- MySQL安装:5.7
- 节点准备:
- 主节点:192.168.184.128
- 从节点:192.168.184.129
本示例采用XShell实现多窗口同时编辑,方便快速搭建环境
二、主节点配置
- 创建并授权同步权限账号
mysql -uroot -proot
CREATE USER 'master'@'%' IDENTIFIED BY 'master';
GRANT REPLICATION SLAVE ON *.* TO 'master'@'%' IDENTIFIED BY 'master' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;
- 修改配置文件
默认配置文件:/etc/my.cnf
[mysqld]
server-id=1
log-bin=master-bin
log_bin_index=master-bin.index
binlog_format=ROW
# expire_logs_days = 7
binlog_do_db=dev
binlog-ignore-db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performation_schema
binlog_ignore_db=sys
说明:
- server-id:参与同步的主、从节点都要配置,需要全局唯一
- log-bin:日志文件名称
- log_bin_index:日志文件索引名称
- binlog_format:日志格式,有ROW、MIXED、STATEMENT
- expire_logs_days:过期时间
- 重启主库并查看状态
service mysql restart
mysql -uroot -proot
# 查看主节点状态
mysql>show master status;
# 在主库上查看已连接的slave主机
mysql>show slave hosts;
# 查看所有binlog日志
mysql>show binary logs;
记录file和position信息,从库的配置需要用到
三、从节点配置
- 修改配置文件
默认配置文件:/etc/my.cnf
[mysqld]
server-id=2
log-bin=slave-bin
binlog_format=ROW
- server-id:需要和主库不同
- log-bin:可选项,从库自身的binlog名称,可做级联同步用,名字没有特别要求
- binlog_format:必须和主库一致
- 重启从库并查看状态
一般来说,现在是没有slave相关信息的
service mysql restart
mysql -uroot -proot
mysql>show master status;
mysql>show slave status \G;
- 配置从库连接主库的信息并查看状态
stop slave;
change master to master_host='192.168.184.128', master_port=3306, master_user='master', master_password='master', master_log_file='master-bin.000001', master_log_pos=154;
start slave;
show slave status \G;
- 查看同步状态
这两项关键配置为Yes代表同步成功
四、测试
- 记录初始状态
- 在master上创建数据库
注意,数据库名字是dev,即我们前面在master节点上binlog_do_db配置的内容。可以用Navicat可视化执行,也可以用SQL脚本执行。
CREATE DATABASE `dev` CHARACTER SET 'utf8mb4';
- 刷新从库链接
我们发现,dev数据库已经同步过来了。可以自测其他操作,如建表、insert、update等。需要注意的是,当前同步仅针对dev数据库。