看板 Knuckles_note
作者 標題 [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
回列表(←)
分享