顯示廣告
隱藏 ✕
看板 Knuckles_note
作者 Knuckles
標題 [Linux][MySQL] 使用 mysqldump 備份資料庫
時間 2012年06月29日 Fri. PM 03:24:56



使用 mysqldump 將資料庫 test 備份到 /root/test.sql
在輸入指令後,需要輸入 MySQL 的 root 密碼
# mysqldump -u root -p test > /root/test.sql

把備份的資料庫檔裝到另一台server上

先壓縮
# gzip /root/test.sql

登入目標站後用scp將來源站disp.cc的備份抓過來
# scp root@disp.cc:/root/test.sql.gz /root/

解壓縮
# gzip -d /root/test.sql.gz

目標站要先建立一個空的資料庫 test

還原
# mysql -u root -p test < /root/test.sql


===參數===

single-transaction
mysqldump 加上  http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_single-transaction (--single-transaction) 會先將InnoDB的資料表設為唯讀
或是在 my.cnf 的 [mysqldump] 加上一行 single-transaction


flush-logs
若有使用 log_bin ,加上 --flush-logs 會先將目前新的 Binary Log 先存好後再開始備份


====錯誤解決記錄====


若出現 ERROR 1153 (08S01) at line 541: Got a packet bigger than 'max_allowed_packet' bytes
應該是單一筆 query/insert/update 的資料長度超過 max_allowed_packet (預設1MB)

修改mySQL設定檔,將 max_allowed_packet 為1G
# vim /etc/my.cnf

[mysqld]
max_allowed_packet = 1G

[mysqldump]
max_allowed_packet = 1G
single-transaction # 加這個備份時會鎖住表


=====編輯記錄=====
加參數 --max_allowed_packet=1G 好像沒有用
# mysql -u root -p --max_allowed_packet=1G test < /root/test.sql


====參考====
http://mic1491.pixnet.net/blog/category/1658469 (http://mic1491.pixnet.net/blog/category/1658469)


--
※ 作者: Knuckles 時間: 2012-06-29 15:24:56
※ 編輯: Knuckles 時間: 2012-11-15 04:12:51

※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 923 
e)編輯 d)刪除 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇