MYSQL主从配置同步历史数据

文章详细描述了如何在Docker环境下对MySQL数据库进行备份,包括锁定主数据库以确保数据一致性,执行mysqldump备份,解锁数据库,以及检查主从同步状态。在过程中遇到了未解锁数据库导致无法写入新数据的问题,并强调了解锁的重要性。
摘要由CSDN通过智能技术生成

1、 锁定主数据库

只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致,同样,这样做也有弊端,可能在锁库期间会影响正常的业务流程,所以我们应使锁库的粒度尽可能小。
FLUSH TABLES WITH READ LOCK;

2、查询主库状态

SHOW MASTER STATUS;
image.png

3、开始备份主数据库

执行docker mysql备份命令
docker exec [CONTAINER] /usr/bin/mysqldump -u username --password=xxx [DATABASE] > bak.sql
[CONTAINER] 是你自己容器的名字, [DATABASE]是你自己数据库的名字,bak.sql是临时产生的备份文件,里面是sql语句, username是用户名,一般是root,xxx则是密码。该命令的意思是执行docker容器内mysql相关命令:mysqldump,将指定的数据库导出到主机当中
若要备份全部数据库,[DATABASE]处使用–all-databases
在主机上执行下列语句

docker exec dk-mysql-master /usr/bin/mysqldump -u root --password=123456 --all-databases > bak.sql

上面命令把mysql基础表也导出了,我不需要复制基础表,所以指定库

docker exec dk-mysql-master /usr/bin/mysqldump -u root --password=123456 db_user > db_user_bak.sql

4、执行docker mysql插入数据脚本命令

找不到相关数据库
在手动创建完数据库后执行下列语句
命令格式:

cat bak.sql | docker exec -i [CONTAINER] /usr/bin/mysql -u username --password=xxx [DATABASE]

我的

cat db_user_bak.sql | docker exec -i dk-mysql-slave1 /usr/bin/mysql -u root --password=123456 db_user

image.png
呦呵,你不会自动创建库啊,垃圾,手动创建吧

CREATE DATABASE db_user;

这次成功了
image.png
这下库、表、数据都有了,
image.png

5、解锁

UNLOCK TABLES;

6、查看从服务的主从同步状态

SHOW SLAVE STATUS

image.png

7、主master服务添加一个数据试试?

image.png
怎么没提示插入成功?,查看数据试试
image.png
果然没进去,这块是我忘记关闭锁了,就是第五步的解锁!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不积跬步无以至千里-陕西西安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值