mysql不锁表主从同步

本来的步骤

  1. 主库锁库
FLUSH TABLES WITH READ LOCK;

2.线上数据库数据提取

mysqldump -uroot -p  --default-character-set=utf8 -P3306 --opt     --single-transaction  zyd1   > /home/666.sql

3.开始迁移数据到从库(scp传送过去)

scp /home/  root@172.18.252.147:/root/

4.新库删除之前的数据(看情况,有时候直接覆盖掉就可以)

mysql -uroot -p 密码
drop database zyd1;
create database zyd1;

5.从库停掉主从连接

登录到数据库;
stop slave;
reset slave;

6.从库开始导入主库传送过来的文件

mysql -uroot -p zyd1 < *.sql 

7.主库查看现在的binlog文件和位置(找出File和Position)

show master status; 

8.从库开始主从账号连接(灵活使用~~~~~~)

CHANGE MASTER TO
MASTER_HOST='172.18.252.146',
MASTER_USER='slave',
MASTER_PASSWORD='111111',
MASTER_LOG_FILE='mysql-bin.000077',
MASTER_LOG_POS=807343661;

9.开启从库slave

start slave;
  1. 查看从库主从状态
show slave status \G

11.主库解锁

UNLOCK TABLES;

================后来新玩法*********不锁库手动主从连接

少了第1步,11步,和第6步

前提:认识几个必要的参数

--skip-lock-tables 不锁表
--master-data=2 在导出的时候同时生成binlog文件名和位置在导出的文件开头。这个很重要。因此第4步也不需要执行了,binlog的文件和位置可以从这里拿到。
--single-transaction 通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照

用这些参数~~~~~

mysqldump  -uroot -p --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2   dataname   > /home/666.sql

最后把主从连接配置那里binlog文件和位置替换成导出的文件开头找到的那个带有注释的file和position就好了。

1.线上数据库数据提取

mysqldump -uroot -p  --default-character-set=utf8 -P3306 --opt     --single-transaction  zyd1   > /home/666.sql

2.开始迁移数据到从库(scp传送过去)

scp /home/  root@172.18.252.147:/root/

3.新库删除之前的数据(看情况,有时候直接覆盖掉就可以)

mysql -uroot -p
drop database zyd1;
create database zyd1;

4.从库停掉主从连接

登录到数据库;
stop slave;
reset slave;

5.从库开始导入主库传送过来的文件

mysql -uroot -p zyd1 < *.sql 

6.找出file和position

tail -30 导出文件

7.从库开始主从账号连接(灵活使用~~~~~~)

CHANGE MASTER TO
MASTER_HOST='172.18.252.146',
MASTER_USER='slave',
MASTER_PASSWORD='111111',
MASTER_LOG_FILE='mysql-bin.000077',
MASTER_LOG_POS=807343661;

8.开启从库slave

start slave;
  1. 查看从库主从状态
show slave status \G
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容