标签:docker DATABASE 数据库 MYSQL 备份 sql mysql 历史数据 主从
查看主库的已有数据库
show databases;
假设其中test数据库是我们想要主从同步的数据库,模拟生产环境,该数据库中已经有了很多数据
use test;
select * from user;
锁定主数据库
锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致,同样,这样做也有弊端,可能在锁库期间会影响正常的业务流程,所以我们应使锁库的粒度尽可能小。
flush tables with read lock;
查询主数据库状态,并记下FILE及Position的值
show master status;
开始备份主数据库
退出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
在宿主机上执行下列语句
图中的warnming是因为我们在命令行输入了密码,所以会有安全警告信息。可以看到,已经在宿主机上生成了back.sql,
开始导入从数据库
在导入备份文件之前,需要在从库中手动建立相应的同名库CREATE DATABASE test;,否则会出现如下报错
找不到相关数据库
在手动创建完数据库后执行下列语句
cat back.sql | docker exec -i [CONTAINER] /usr/bin/mysql -u username --password=xxx [DATABASE]
备份成功
之后就可以开始进行主从模式的配置了,具体可以参考我这篇文章docker+mysql的主从复制的搭建
记住配置完要解锁主库
unlock tables;
标签:docker,DATABASE,数据库,MYSQL,备份,sql,mysql,历史数据,主从 来源: https://www.cnblogs.com/chnluxi/p/15410769.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。