master开启bin-log,设置数据库
# master server
# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=222 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
# 设置需要写binlog的数据库
binlog-do-db=db1
binlog-do-db=db2
gtid-mode=on
enforce-gtid-consistency=true
重启MySQL数据库
systemctl restart mysqld
创建slave账号
-- # master server mysql
GRANT REPLICATION SLAVE ON *.* to 'slave1'@'主库host' identified by 'slave_pwd';
停服,记录bin-log-index, position, 关掉自动重启job!!!
-- # master server mysql
show master status;
备份数据
# master server
mkdir /tmp/db_backup
mysqldump -uroot -p*** --databases db | gzip > /tmp/db_backup/db-20220607.sql.gz
还原数据
# slave server 192.168.0.1 is master server ip
mkdir -p /home/db_data
scp root@192.168.0.1:/tmp/db_backup/db-20220607.sql.gz /home/db_data
# create db
CREATE DATABASE `database0` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# import
gunzip -f </home/db_data/db-20220607.sql.gz| mysql -u root -p****
配置slave,设置数据库
# slave server
# vim /etc/my.cnf
[mysqld]
server-id=129
gtid-mode=on
enforce-gtid-consistency=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
#replicate-rewrite-db = database0 -> slave_database0
#replicate-rewrite-db = database1 -> slave_database1
# 重启MySQL数据库!!!
# master_log_file 和 master_log_pos 改为上文记录的值
change master to master_host='192.168..0.1',master_user='slave1',master_password='slave_pwd',master_log_file='mysql-bin.000001',master_log_pos=0 for channel '2';
start slave;
show slave status;
测试同步
在master数据表中添加记录, 查看slave对应的数据表中是否同步
启动服务
测试通过则同步启动应用服务器
验证数据
观察新增数据是否同步
其他
- Error_code: 1032 如果出现主键重复或者更新数据不存在导致的主从不同步时,可执行
set global slave_exec_mode='IDEMPOTENT'
来修改模式为幂等
本文由 Clive 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2023/09/07 23:50