如何快速备份数据到Docker 中运行的Mysql 数据库中?

       之前导入数据都是用的数据库连接工具自带的导入功能,有时候导入数据需要两个小时,简直没办法忍受。后来有了一个更快的方式导入数据,把他记录下来,希望大家不再忍受导入数据的煎熬。。。。

       1、备份数据库表结构,暂时还没有遇到特别有效的方法(有效的方法,请查看步骤9),我都是用show create table your_table_name,然后复制到一个文件中,把文件命名为ddl_bak.sql。为了安全起见,还可以在每个建表语句前面添加drop  table your_table_name , create database  your_data_base ,use your_data_base 等。

       2、把数据库中的表数据导出为insert语句,保存为dml_bak.sql。

       3、把1和2中的两个文件保存到服务器的某个路径下面,比如/bak/mysql/sqls

      4、查看MySQL的容器长ID,执行的命令是docker inspect -f {{.ID}} mysql。之前自己备份不成功是因为自己直接用了容器的短ID。执行docker ps |grep  mysql  返回的那个是短ID。真是被自己的智障打败了

    5、执行docker exec -it mysql bash ,进入docker 的环境中,穿件一个文件夹,用来放即将要放的sql 文件。比如叫/bak/mysql/sqls

      6、执行exit,退出到linux环境中,执行docker cp  服务器路径 长ID:/目标文件夹 ,在本文中要执行的命令就是: docker cp /bak/mysql/sqls/dml_bak.sql 长ID:/bak/mysql/sqls/docker_dml_bak.sql。       

      7、重新进入docker的MySQL,docker exec -it mysql bash。

     8、接下来开始真正的备份数据,mysql -uUserName -pPwd,先执行use dbName,不然执行的时候可能会爆粗,然后执行source /bak/mysql/sqls/docker_dml_bak.sql。

    9、解决步骤1 和步骤2中获取表结构和表数据的快速方法。可以直接使用mysqldump 命令:

        1、导出整个数据库结构和数据 :mysqldump -h localhost -uroot -p123456 database > dump.sql

        2、导出单个数据表结构和数据:mysqldump -h localhost -uroot -p123456  database table > dump.sql

        3、导出整个数据库结构(不包含数据):mysqldump -h localhost -uroot -p123456  -d database > dump.sql

        4、导出单个数据表结构(不包含数据):mysqldump -h localhost -uroot -p123456  -d database table > dump.sql

        5、导出整个数据库结构(只包含数据):mysqldump -h localhost -uroot -p123456  -t database > dump.sql

        6、导出单个数据表结构(只包含数据):mysqldump -h localhost -uroot -p123456  -t database table > dump.sql

       关于mysqldump 命令还有两点想补充一下:1、mysqldump 和mysql 命令是一样的,可以直接在控制台操作,这也是自己在备份数据的时候一直报语法错误的原因。2、不建议直接在命令中拼接密码,可以先用-p,按enter之后再输入正式的密码。

总结:这个备份过程每一步都很简单,很清晰,终于不需要用数据库连接工具的一条条的插入数据了。有两点导致自己一直使用之前的低效备份方式。1、不知道mysql source 命令,2、自己的docker 太菜。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章