星期日, 12月 06, 2009

使用mysqldump

mysqldump最常見的用法是:

shell>; mysqldump --opt -u user --password="password" db_name >; backup-file.sql
或者壓縮備份文件:
#mysqldump --opt -u user --password="password" database | bzip2 -c >; database.sql.bz2

在dbname已經存在的情況下,讀入備份文件恢復數據庫,

shell>; mysql db_name < backup-file.sql (備註:建議使用--database選項)

或者

shell>; mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldump 還可以用於在兩個mysql server之間複製數據:

shell>; mysqldump --opt db_name | mysql --host=remote_host -C db_name

也可以同時備份多個數據庫:

shell>; mysqldump --databases db_name1 [db_name2 ...] >; my_databases.sql

如果想一次備份整個數據庫使用 --all-databases 選項:

shell>; mysqldump --all-databases >; all_databases.sql




常見選項:
--add-drop-table:添加DROP TABLE語句
--add-locks:用LOCK TABLES 和 UNLOCK TABLES 語句封裝插入每個表格的語句,能加速數據導入速度
--all-databases, -A: 備份所有數據庫
--compress, -C:用於在兩個server之間複製時壓縮數據
--databases, -B: 用於備份多個數據庫,如果沒有該選項,mysqldump 把第一個名字參數作為數據庫名,後面的作為表名。使用該選項,mysqldum把每個名字都當作為數據庫名。CREATE DATABASE IF NOT EXISTS db_name and USE db_name 會被添加到導出文件裡。
--force, -f:即使發現sql錯誤,仍然繼續備份
--host=host_name, -h host_name:備份主機名,默認為localhost
--no-data, -d:只導出表結構
--opt:等同於激活--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset這些選項
--password[=password], -p[password]:密碼
--port=port_num, -P port_num:制定TCP/IP連接時的端口號
--protocol={TCP | SOCKET | PIPE | MEMORY}:制定連接所用的協議
--quick, -q:快速導出
--socket=path, -S path:當連接至localhost時,制定socket文件
--tables:覆蓋 --databases or -B選項,後面所跟參數被視作表名
--user=user_name, -u user_name:用戶名
--xml, -X:導出為xml文件

沒有留言:

張貼留言

留個話吧:)