MySQL 手动主从同步不锁表
2021/4/10 2:29:40
本文主要是介绍MySQL 手动主从同步不锁表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
有时候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 通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照
最后把第8步的binlog文件和位置替换成导出的文件开头找到的那个带有注释的file和position就好可以了。
这篇关于MySQL 手动主从同步不锁表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7