先來講述一下利用mysqldump備份
SQL 來備份 MyISAM 表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false
--triggers -R --hex-blob -x db_name > db_name.sql
使用以下 SQL 來備份 Innodb 表:
代碼如下 復制代碼/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false
--triggers -R --hex-blob --single-transaction db_name > db_name.sql
接著再講mysqldump還原備份的數據
mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。
•直接用 mysql 客戶端
例如:
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
•用 SOURCE 語法
其實這不是標准的 SQL 語法,而是 mysql 客戶端提供的功能,例如:
SOURCE /tmp/db_name.sql;
這裡需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件。
可能大家還會知道一個命令mysqlhotcopy下面我也簡單講述一下
mysqlhotcopy 支持一次性拷貝多個數據庫,同時還支持正則表達。以下是幾個例子:
代碼如下 復制代碼 root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name /tmp(把數據庫目錄 db_name
拷貝到 /tmp 下)
代碼如下 復制代碼 root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name_1 ... db_name_n /tmp更詳細的使用方法請查看手冊,或者調用下面的命令來查看 mysqlhotcopy 的幫助:
代碼如下 復制代碼 perldoc /usr/local/mysql/bin/mysqlhotcopy注意,想要使用 mysqlhotcopy,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 權限,並且還必須要能夠有讀取
datadir/db_name 目錄的權限。
mysqlhotcopy還原
mysqlhotcopy 備份出來的是整個數據庫目錄,使用時可以直接拷貝到 mysqld 指定的 datadir (在這裡是
/usr/local/mysql/data/)目錄下即可,同時要注意權限的問題,如下例:
代碼如下 復制代碼 root#cp -rf db_name /usr/local/mysql/data/(將 db_name 目錄的屬主改成 mysqld )
好了其它的像sql語句的這裡就不講述了,大家可百度搜索。
利用linux中的shell命令
(該例子中創建的文件是壓縮格式)。
恢復/轉移到另一台的命令如下:
代碼如下 復制代碼 shell> gunzip < db_name.contents.gz | mysql db_name以上命令,適用於*nix 操作系統的機器