之前導入數據都是用的數據庫連接工具自帶的導入功能,有時候導入數據需要兩個小時,簡直沒辦法忍受。後來有了一個更快的方式導入數據,把他記錄下來,希望大家不再忍受導入數據的煎熬。。。。
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 太菜。