備份資料方法:
一:sql語句。
LOCKS TABLES tablename READ;//讀鎖定
嘗試鎖定表之前,LOCK TABLES不是事務安全型的,會隱含地提交所有活性事務,同時,會隱含地開始一項事務(例如,使用START TRANSACTION),
所以,對事務表(如InnoDB)使用LOCK TABLES的正確方法是,設定AUTOCOMMIT=0
FLUSH TABLES,
SELECT * INTO OUTFILE 'data_bck.sql' FIELDS TERMINATED BY ',' FROM tablename;
UNLOCK TABLES;
二:mysqldump工具。
完全備份資料庫中的一個表:
mysqldump -h192.168.4.20 -uusername -puserpswd dbname tablename>data_bck.sql
完全備份某個資料庫:
mysqldump -h192.168.4.20 -uusername -puserpswd dbname tablename>data_bck.sql
完全備份所有資料庫:
mysqldump -h192.168.4.20 -uusername -puserpswd --single-transaction --all-databases>data_bck.sql
完全備份所有資料庫後停用以前所有增量日誌並產生新日誌:
mysqldump -h192.168.4.20 -uusername -puserpswd --single-transaction --flush-logs --master-data=2 --all-databases>data_bck.sql
完全備份所有資料庫後刪除以前所有增量日誌並產生新日誌:
mysqldump -h192.168.4.20 -uusername -puserpswd --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs>data_bck.sql
增量備份:
先執行完全備份,然後執行更新日誌:
mysqladmin -h192.168.4.20 -uusername -puserpswd flush-logs
三:直接複製data目錄。
停止mysql服務或者鎖定資料庫表,複製data目錄到備份位置,啟動mysql服務或者解鎖資料庫表。
恢複資料方法:
一:sql語句。
LOAD DATA INFILE 'data_bck.sql' INTO TABLE tablename FIELDS TERMINATED BY ',';
二:mysql工具。
完全恢複:
mysql -h192.168.4.20 -uusername -puserpswd dbname<data_bck.sql
恢複增量日誌:
mysqlbinlog log-bin.000001 log-bin.000008 | mysql
另外,有一個很有趣又很實用的小技巧:tee.
它將你操作和輸出的全部可視資訊都儲存進了一個檔案裡面,可以用來產生表格式的檔案、報表製作、簡單的備份。
用法是這樣的:
在mysql命令列下,執行下面的命令:
>tee E:/heihei.sql
這樣就建立了記錄檔案,接下來,我們的所有操作和所有輸出結果都將被原樣記錄下來,就像照片一樣。
>select * from tablename;
那麼這條命令和查詢結果都將被記錄到這個檔案裡面,很好玩的。不過,它很仔細的,就連你的錯誤命令都會記錄下來的。可別被笑話啊。:)