【邏輯備份】深入淺出mysqldump:常用操作、案例分享、意外終止的原因以及解決方法
轉載地址:
【邏輯備份】深入淺出mysqldump:常用操作、案例分享、意外終止的原因以及解決方法
㈠ 常用操作
① 備份全庫
語法:
mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 (–database) 名 > 檔名.sql
例子:
dump -hlocalhost -P3306 -urocky -p123456 db_test > bakfile1.sql
② 帶刪除表的全庫備份
備份MySQL資料庫為帶刪除表的格式、能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫
語法:
mysqldump -–add-drop-table -u{username} -p{password} {databasename} > {backfile.sql}
例子:
mysqldump -–add-drop-table –urocky -p123456 db_test > bakfile2.sql
③ 壓縮備份
語法:
mysqldump -h{hostname} -u{username} -p{password} {databasename} | gzip > {backfile.sql.gz}
例子:
mysqldump –hlocalhost –urocky –p123456 db_test | gzip > bakfile3.sql.gz
④ 備份某些表
語法:
mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 (–tables | –quick) 資料庫名 表名1 (表名2 …) > 檔名.sql
例子:
mysqldump -hlocalhost -urocky -p123456 db_test tbl_test > bakfile4-1.sql
mysqldump -hlocalhost -P3306 -urocky -p123456 db_test tbl_test > bakfile4-2.sql
mysqldump -hlocalhost -P3306 -urocky -p123456 --quick db_test tbl_test > bakfile4-3.sql
mysqldump -hlocalhost -P3306 -urocky -p123456 --tables db_test tbl_test1 tbl_test2 > bakfile4-4.sql
⑤ 同時備份多個庫
語法:
mysqldump -h{hostname} (-P{port}) -u{username} -p{password} –databases {dbname1} {dbname2} {dbname3} > multibackfile.sql
例子:
mysqldump -hlocalhost -urocky -p123456 –databases db_test1 db_test2 db_test3 > multibackfile.sql
⑥ 備份伺服器上的所有資料庫
語法:
mysqldump –all-databases > allbackupfile.sql
⑦ 僅僅備份資料庫結構
語法:
mysqldump –no-data –databases {databasename1} {databasename2} > {structurebackfile.sql}
例子:
mysqldump –no-data –databases db_test1 db_test2 > structurebackfile.sql
⑧ 匯出某個表的部分資料
語法:
mysqldump -u使用者名稱 -p密碼 資料庫名 表名 --where="篩選條件" > 匯出檔案路徑
例子:
mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql
㈡ 案例分享
① 案例描述:
mysqldump命令常規方式建立備份拉到某機器上恢復、恢復執行很成功、一條錯誤資訊都沒看著
但等恢復完登入到資料庫中一瞅、你猜怎麼地、資料不全
第一反應當然是檢視備份檔案、經過檢查、果然、恢復操作確實沒有問題、
因為備份集中的內容就不全,那麼,為什麼備份集內容不全
② 原因分析:
分析發現、原來是在匯出某個檢視物件時報錯、mysqldump自動中止、因此所有該物件之後的就都沒備份了
③ 場景模擬回放:
[plain]
Session_A:
mysql> use test;
Database changed
mysql> create table rocky (id int,name varchar(100));
Query OK, 0 rows affected (0.04 sec)
mysql> create view rocky_view as select * from rocky;
Query OK, 0 rows affected (0.01 sec)
mysql> rename table rocky to robbin;
Query OK, 0 rows affected (0.03 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
Session_B:
[mysql@localhost bin]$ ./mysqldump --tables test robbin rocky_view > bak.sql
mysqldump: Got error: 1356: View 'test.rocky_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when doing LOCK TABLES
建立備份時、view物件引用的表物件不存在、執行LOCK TABLES失敗、於是mysqldump就中止了
這其實真不怪 mysqldump、因為mysqldump執行過程中遇到任何問題、預設情況下都是直接退出
④ 解決方案:
執行mysqldump時附加--force引數、該引數功能是當遇到錯誤時忽略、繼續執行後面的操作
這個引數提供類似 資料庫中exp命令的ignore=y引數的功能、
事實上在 Oracle 資料庫中執行exp時通常都會指定ignore、
對應到MySQL資料庫、我想在執行mysqldump命令列過程中、--force引數也應做為必備引數呼叫
㈢ mysqldump意外終止的原因以及解決方法
① 錯誤現象:
Lost connection to MySQL server at ‘reading initial communication packet’:
原因分析:
因為DNS不穩定導致的
解決方案:
開啟skip-name-resolve選項將會最大程度避免這個問題
② 錯誤現象:
Lost connection to MySQL server at ‘reading authorization packet’:
原因分析:
從MySQL獲取一個可用的連線是多次握手的結果。在多次握手的過程中,網路波動會導致握手失敗
解決方案:
最好的解決辦法是讓mysqldump重新發起連線請求
③ 錯誤現象:
Lost connection to MySQL server during query
原因分析:
mysqldump處理資料過慢(NFS、gzip引起)會導致MySQL主動斷開連線
解決方案:
加大net_write_timeout的設定
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-769274/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysqldump意外終止的原因以及解決方法MySql
- 邏輯備份--mysqldumpMySql
- 建立索引意外終止解決方法索引
- mysql 邏輯備份 (mysqldump)MySql
- 簡記MySQL的邏輯備份(mydumper+mysqldump)MySql
- mysqldump常用備份恢復方法MySql
- mysqldump 深入淺出MySql
- MySQLDump的備份方法MySql
- mysqldump備份技巧分享MySql
- mysql的邏輯備份MySql
- mysql的常用備份工具:mysqldump和mysqlhotcopyMySql
- 圖解MySQL邏輯備份的實現流程圖解MySql
- 邏輯備份全庫或者邏輯備份多個使用者的資料
- Oracle裡邏輯備份、物理備份、Rman備份的區別Oracle
- 【MySQL】mysqldump備份失敗與解決方案合集MySql
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL
- Mysql備份與恢復(2)---邏輯備份MySql
- 揭祕ORACLE備份之--邏輯備份(EXP)Oracle
- 揭祕ORACLE備份之--邏輯備份(EXPDP)Oracle
- MongoDB 邏輯備份工具mongodumpMongoDB
- Oracle 邏輯備份 expdp/impdpOracle
- expdp 邏輯備份指令碼指令碼
- MySql邏輯備份恢復MySql
- Oracle邏輯備份指令碼Oracle指令碼
- openGauss-邏輯備份
- Windows邏輯備份-EXPDP(保留5天內邏輯備份)批處理指令碼Windows指令碼
- Mysqldump的備份流程MySql
- WINDOWS下部署ORACLE邏輯匯出備份指令碼WindowsOracle指令碼
- 詳解MySQL資料備份之mysqldump使用方法MySql
- ORACLE備份和恢復 - 邏輯備份 exp/impOracle
- 資料庫邏輯備份(轉)資料庫
- 深入瞭解ORACLE的邏輯讀Oracle
- Mysql備份系列(2)--mysqldump備份(全量+增量)方案操作記錄MySql
- ORACLE資料庫的邏輯備份(轉)Oracle資料庫
- 【mysqldump】mysqldump及備份恢復示例MySql
- Oracle主備架構下的邏輯備份考慮Oracle架構
- oracle邏輯備份之--資料泵Oracle
- Oracle 邏輯備份之EXPDP精講Oracle