如何快速備份數據到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 太菜。

 

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