简单介绍一下MySQL的主从复制配置,MySQL8.0以及MySQL8.4均可使用。主从同步主要分两个步骤,一是进行一次性的增量同步,二是开启常态化的增量同步。
初始条件
my.cnf配置
1 2 3 4
|
server-id=12831 innodb_flush_log_at_trx_commit=1 sync_binlog=1 binlog-do-db=ems # 指定需要复制的数据库,多个则配置多行
|
主库上新建用于数据同步的用户
1 2
|
CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
|
主库进行一次增量同步
- 主库:
FLUSH TABLES WITH READ LOCK;
mysqldump -uroot -p --source-data ems > ems.dump
UNLOCK TABLES;
- 将dump文件从主库主机传输到从库主机
- 从库恢复文件:
mysql -uroot -p ems < ems.dump
从库配置增量同步
- 完整的命令如下:
SOURCE_HOST
:主库的IP地址
SOURCE_USER
和SOURCE_PASSWORD
:为上面设置的用户名和密码
SOURCE_LOG_FILE
和SOURCE_LOG_POS
:从BINLOG的哪个位置开始同步
1 2 3 4 5 6 7
|
CHANGE REPLICATION SOURCE TO SOURCE_HOST='source_host_name', SOURCE_USER='replication_user_name', SOURCE_PASSWORD='replication_password', SOURCE_LOG_FILE='recorded_log_file_name', SOURCE_LOG_POS=recorded_log_position, GET_SOURCE_PUBLIC_KEY=1;
|
SOURCE_LOG_FILE
和SOURCE_LOG_POS
可以从ems.dump
文件中获取
1 2 3 4 5
|
-- -- Position to start replication or point-in-time recovery from --
CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE='binlog.000002', SOURCE_LOG_POS=158;
|
- 检查配置:
SHOW REPLICA STATUS;
- 启动同步:
START REPLICA;
- 再次检查配置:
SHOW REPLICA STATUS;
,Replica_IO_Running
和Replica_SQL_Running
两个均为Yes主从同步即配置成功
参考文献