一 主服务器配置
[mysqld]
# 开启日志
log-bin=mysql-bin
# 设置服务id,主从不能一致
server-id=1
# 设置需要同步的数据库
binlog-do-db=user_db
# 屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
二 从服务器配置
[mysqld]
# 开启日志
log-bin=mysql-bin
# 设置服务id,主从不能一致
server-id=2
# 设置需要同步的数据库
replicate_wild_do_table=user_db.%
# 屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
三 主从服务器重启测试
四 创建用于主从复制的账号
# 切换至主库 bin 目录,登录主库
mysql -h localhost -u root -p
# 授权主备复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
# 刷新权限
FLUSH PRIVILEGES;
# 确认位点,记录下文件名以及位点
show master status;
+------------------+----------+--------------+---------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+---------------------------------------------+-------------------+
| mysql-bin.000002 | 154 | user_db | mysql,information_schema,performance_schema | |
+------------------+----------+--------------+---------------------------------------------+-------------------+
1 row in set (0.00 sec)
五 主从数据同步设置
# 切换至从库bin目录,登录从库
mysql -h localhost -P3307 -u root -p
# 先停止同步
STOP SLAVE;
# 修改从库指向到主库,使用上一步记录的文件名以及位点
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql-bin.000002',
master_log_pos = 154;
# 启动同步
START SLAVE;
# 查看 Slave_IO_Runing 和 Slave_SQL_Runing 字段值都为 Yes,表示同步配置成功。如果不为Yes,需要排查相关异常。
show slave status;
报错
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
方案
六 测试
1 主库修改如下
2 从库同步修改