mysql手动同步_MySQL 手动主从同步不锁表

851次阅读
没有评论

有时候 MySQL 主从同步不一致比较严重的时候,需要手动同步。

然而网上看大很多需要锁表的同步的方法基本如下

1. 先对主库锁表

FLUSH TABLES WITH READ LOCK;

2. 备份数据

mysqldump -uroot -p -hlocalhost > mysql.bak.sql

3. 解锁主库

unlock tables;

4. 查看主库的 binlog 文件和位置

show master status; 找出 File 和 Position

5. 使用 scp 命令把文件移动到从库

scp mysql.bak.sql root@192.168.128.101:/tmp/

6. 在从库上停止同步

mysql> stop slave;

7. 导入数据

mysql> source /tmp/mysql.bak.sql

8. 设置从库的同步开始文件和开始位置

change master to master_host = '主库主机', master_user = '同步用户名', master_port=3306, master_password='', master_log_file =' 第 3 步中获取的 file', master_log_pos= 第 3 步中获取的 position;

9. 从库上启动同步并检查

mysql> start slave;

mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

上网查了下,有外国友人说不需要锁表的方法。大致是不需要执行第 1 和第 3 步,在第 2 导出数据的时候加上参数

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A

--skip-lock-tables 不锁表

--master-data=2 在导出的时候同时生成 binlog 文件名和位置在导出的文件开头。这个很重要。因此第 4 步也不需要执行了,binlog 的文件和位置可以从这里拿到。

--single-transaction 通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照

微信扫描下方的二维码阅读本文

正文完
 0
柹子丶
版权声明:本站原创文章,由 柹子丶 于2022-11-28发表,共计879字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码