MYSQL主从配置同步历史数据

查看主库的已有数据库

show databases;

 MYSQL主从配置同步历史数据

 

 

假设其中test数据库是我们想要主从同步的数据库,模拟生产环境,该数据库中已经有了很多数据

use test;

select * from user;

MYSQL主从配置同步历史数据

 

 

 

锁定主数据库

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

flush tables with read lock;

MYSQL主从配置同步历史数据

 

 

 

查询主数据库状态,并记下FILE及Position的值

show master status;

 MYSQL主从配置同步历史数据

 

 

开始备份主数据库

退出mysql终端,执行docker mysql备份命令

docker exec [CONTAINER] /usr/bin/mysqldump -u username --password=xxx [DATABASE] > back.sql

[CONTAINER] 是你自己容器的名字, [DATABASE]是你自己数据库的名字,back.sql是临时产生的备份文件,里面是sql语句, username是你自己的用户名,一般是root,xxx则是你自己的用户密码。该命令的意思是执行docker容器内mysql相关命令:mysqldump,将指定的数据库导出到宿主机当中

我们这里只需要备份test数据库,若要备份全部数据库,[DATABASE]处使用--all-databases

在宿主机上执行下列语句

 MYSQL主从配置同步历史数据

 

 

图中的warnming是因为我们在命令行输入了密码,所以会有安全警告信息。可以看到,已经在宿主机上生成了back.sql,

开始导入从数据库

在导入备份文件之前,需要在从库中手动建立相应的同名库CREATE DATABASE test;,否则会出现如下报错

 MYSQL主从配置同步历史数据

 

 

找不到相关数据库

在手动创建完数据库后执行下列语句

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

 MYSQL主从配置同步历史数据

 

 

备份成功

之后就可以开始进行主从模式的配置了,具体可以参考我这篇文章docker+mysql的主从复制的搭建

记住配置完要解锁主库

unlock tables;

MYSQL主从配置同步历史数据

 

上一篇:spring boot 与 Ant Design of Vue mock的实现(三)


下一篇:Could not open ServletContext resource [/database.properties]