mysql数据库2013_MySQL数据库备份(2)2013-6-13
把數(shù)據(jù)庫從一個服務器復制到另一個服務器
如果把輸出通過網(wǎng)絡直接寫到另一個服務器區(qū),就不需要使用轉(zhuǎn)儲文件作為媒介了。
% mysqldump --databases sampdb |mysql -h boa.snake.net
如果你從本地無法訪問遠程MySQL服務器但能夠通過登入遠程主機的方法去訪問它:
mysqldump --databases sampdb|ssh boa.snake.net mysql
使用--compress選項能改善性能。
檢查和修復MyISAM和InnoDB數(shù)據(jù)庫的幾種常用辦法:
1.發(fā)出check table 和repair table語句。也可以使用mysqlcheck程序,它將替你連接服務器并發(fā)出那些語句
2.使用myisamchk程序,它將直接在數(shù)據(jù)表文件上操作。
兩種方法的比較:
mysqlcheck程序可以在MySQL服務器關停時使用。而create table等職能在MySQL服務器正在運行時使用。
你可以加大myisamchk程序使用的緩沖區(qū),從而加快數(shù)據(jù)表的檢查和修復速度。
check table 來用檢查MyISAM和InnoDB數(shù)據(jù)表。還可以檢查視圖,archive數(shù)據(jù)表和csv數(shù)據(jù)表
repair table 提供了一個使用MySQL服務器的數(shù)據(jù)表修復能力的接口。能用來修復MyISAM和ARCHIVE數(shù)據(jù)表。
mysqlcheck的用法:
mysqlcheck sampdb:程序?qū)z查該數(shù)據(jù)庫里的所有數(shù)據(jù)表
mysqlcheck sampdb president memeber程序?qū)⒅粰z查哪些數(shù)據(jù)庫。
如果給出了--databases選項,隨后的參數(shù)將被解釋為數(shù)據(jù)庫名。
如果給出了--all-databases選項,mysqlcheck程序?qū)z查所有數(shù)據(jù)庫里的所有表數(shù)據(jù)。
用myisamchk 程序檢查和修復數(shù)據(jù)表:
它可以用來檢查和修復MyISAM數(shù)據(jù)表。myisamchk程序通過直接訪問數(shù)據(jù)表文件來完成其工作,所以再開始使用這個工具之前最好先關停MySQL服務器以防止它和myisamchk程序同時訪問一個數(shù)據(jù)表。
myisamchk程序默認進行的“普通”檢查已經(jīng)可以查出絕大多數(shù)問題。如果它報告說沒有錯誤,你仍然懷疑可以使用--medium-check選項再做一個檢查,時間花的更長但是更徹底。
--extend-check選項進行“高級”檢查。這將花費非常多的時間,但最全面徹底。
如果myisamchk程序報告數(shù)據(jù)表有錯誤,應該盡量修復它。
用myisamchk程序修復數(shù)據(jù)表
在使用myisamchk修復數(shù)據(jù)表的時候應該先備份一份數(shù)據(jù)。
1.首先嘗試使用 --recover選項來修復數(shù)據(jù)表,還可以加上--quick選項。 只根據(jù)索引未見來修復數(shù)據(jù)表,不涉及數(shù)據(jù)文件。
2.如果問題沒有解決,去掉--quick選項后再執(zhí)行一次這個命令。
3.使用--safe-recover修復模式。
讓myisamchk程序運行得更快
可以設置幾個變量
key_buffer_size 用來存在所以快的緩沖區(qū)的長度
read_buffer_size用來完成讀操作的緩沖區(qū)的長度
sort_buffer_size用來完成排序操作的緩沖區(qū)長度
write_buffer_size用來完成寫操作的緩沖區(qū)的長度。
恢復數(shù)據(jù)表
恢復一個數(shù)據(jù)表往往比恢復一個數(shù)據(jù)庫更困難。
mysqlbinblog程序可以處理多個二進制日志文件,可以限制它自己只輸出與某個給定數(shù)據(jù)庫有關的語句或者是在給定時間區(qū)間被執(zhí)行過的語句。
如果想恢復數(shù)據(jù)庫的備份是在創(chuàng)建所有二進制日志文件之前完成的,你還需要執(zhí)行所有二進制日志文件的內(nèi)容。
mysqlbinlog binlog.[0-9]*|mysql
也可以先編輯為一個臨時文件
%mysqlbinlog binlog.[0-9]*>text_file
%mysql
這個方法很有用,因為如果你是應為delete drop table等語句造成的數(shù)據(jù)丟失,在開始執(zhí)行日志文件的內(nèi)容之前,必須先去掉這些語句。
如果想重新執(zhí)行從2007-10-30 16:50:36那一刻開始被記載道二進制日志里的修改,可以使用mysqlbinlog程序的--start-datetime選項來給出那個時間。
mysqlbinlog --start-datetime = "2007-10-30 16:50:36" binlog.[0-9]*|mysql
mysqlbinlog程序還有一個相應的--stop-datetime 選項可以用來給出一個截止時間。
總結
以上是生活随笔為你收集整理的mysql数据库2013_MySQL数据库备份(2)2013-6-13的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地榆根的功效与作用、禁忌和食用方法
- 下一篇: mysql innodb flus_My