對(duì)MySQL備份和恢復(fù)的具體描述
以下的文章主要介紹的是MySQL備份和恢復(fù)的實(shí)際操作與具體應(yīng)用,我們大家都知道 MySQL備份和恢復(fù)在實(shí)際操作中其應(yīng)用率還是很高的,以下的文章就是對(duì)MySQL備份和恢復(fù)的實(shí)際操作的具體內(nèi)容的描述。
備份/恢復(fù)策略:
1. 要定期做 MySQL備份,并考慮系統(tǒng)可以承受的恢復(fù)時(shí)間。
2. 確保 MySQL 打開log-bin,有了 binarylog,MySQL才可以在必要的時(shí)候做完整恢復(fù),或基于時(shí)間點(diǎn)的恢復(fù),或基于位置的恢復(fù)。
3. 要經(jīng)常做備份恢復(fù)測試,確保備份是有效的,并且是可以恢復(fù)的。
冷備份
備份:
1. 停掉 MySQL服務(wù),在操作系統(tǒng)級(jí)別備份 MySQL的數(shù)據(jù)文件。
2. 重啟 MySQL服務(wù),備份重啟以后生成的 binlog。
恢復(fù):
1. 停掉 MySQL服務(wù),在操作系統(tǒng)級(jí)別恢復(fù) MySQL的數(shù)據(jù)文件。
2. 重啟 MySQL服務(wù),使用 MySQLbinlog恢復(fù)自MySQL備份以來的 binlog。
邏輯備份
備份:
1. 選擇在系統(tǒng)空閑時(shí),比如在夜間,使用 MySQLdump –F(flush-logs)備份數(shù)據(jù)
庫。
- MySQLdump –u root –p*** pointcard –F > pointcard.sql
2. 并備份 MySQLdump開始以后生成的 binlog。
恢復(fù):
1. 停掉應(yīng)用,執(zhí)行 MySQL 導(dǎo)入備份文件.
- MySQL –u root –p*** pointcard < pointcard.sql
2. 使用 MySQLbinlog 恢復(fù)自MySQLdump 備份以來的binlog。
MySQLbinlog $HOME/data/MySQL-bin.123456 | MySQL -u root –p***
單個(gè)表的備份:
備份:
1. 方法 1:
- MySQL > select * into outfile ‘/tmp/order_tab’ fields-terminated-by=’,’ from order_tab;
2. 方法 2:
- MySQLdump –u root –p*** –T /tmp pointcard order_tab --fields-terminated-by=’,’;
恢復(fù):
1. 方法 1:
- MySQL > load data [local] infile ‘/tmp/order_tab’ into table order_tab fields-terminated-by=’,’;
2. 方法 2:
- MySQLimport –u root –p*** [--local] pointcatd order_tab.txt --fields-terminated-by=’,’;
注意:如果導(dǎo)入和導(dǎo)出是跨平臺(tái)操作的(windows和 linux),那么要注意設(shè)置參數(shù)line-
terminated-by, windows上設(shè)置為 line-terminated-by=’\r\n’,linux上設(shè)置為
- line-terminated-by=’\n’.
使用MySQL備份工具ibbackup
ibbackup是 innodb公司(www.innodb.com)的一個(gè)熱備份工具,專門對(duì) innodb存儲(chǔ)引擎進(jìn)行物理熱備份,此工具是收費(fèi)的,不能免費(fèi)使用。現(xiàn)在innodb 公司已經(jīng)被oracle收購
使用方法:
編輯用于啟動(dòng)的配置文件my.cnf和用于備份的配置文件my2.cnf
my.cnf的例子如下:
代碼
- [MySQLd]
- datadir = /home/heikki/data
- innodb_data_home_dir = /home/heikki/data
- innodb_data_file_path = ibdata1:10M:autoextend
- innodb_log_group_home_dir = /home/heikki/data
- set-variable = innodb_log_files_in_group=2
- set-variable = innodb_log_file_size=20M
如果想備份到/home/heikki/backup,則my2.cnf的例子如下:
代碼
- [MySQLd]datadir = /home/heikki/backupinnodb_data_home_dir =
/home/heikki/backupinnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /home/heikki/backupset-variable = innodb_log_files_in_group=2
- set-variable = innodb_log_file_size=20M
開始備份ibbackup my.cnf my2.cnf如果需要恢復(fù),則進(jìn)行日志重做ibbackup --apply-log my2.cnf恢復(fù)后重啟數(shù)據(jù)庫服務(wù)./bin/MySQLd_saft --defaults-file=my2.cnf &
時(shí)間點(diǎn)恢復(fù):
1. 如果上午 10點(diǎn)發(fā)生了誤操作,可以用以下語句用備份和 binglog將數(shù)據(jù)恢復(fù)到故
障前:
- MySQLbinlog --stop-date="2005-04-20 9:59:59"
- /var/log/MySQL/bin.123456 | MySQL -u root –pmypwd
2. 跳過故障時(shí)的時(shí)間點(diǎn),繼續(xù)執(zhí)行后面的 binlog,完成恢復(fù)
- MySQLbinlog --start-date="2005-04-20 10:01:00"
- /var/log/MySQL/bin.123456| MySQL -u root -pmypwd \
位置恢復(fù):
和時(shí)間點(diǎn)恢復(fù)類似,但是更精確,步驟如下:
- MySQLbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20
- 10:05:00" /var/log/MySQL/bin.123456 > /tmp/MySQL_restore.sql
該命令將在/tmp目錄創(chuàng)建小的文本文件,編輯此文件,找到出錯(cuò)語句前后的位置號(hào) ,例如前后位置號(hào)分別是368312 和368315?;謴?fù)了以前的MySQL備份文件后,你應(yīng)從命令行輸入下面內(nèi)容:
- MySQLbinlog --stop-position="368312" /var/log/MySQL/bin.123456 \
- | MySQL -u root -pmypwd
- MySQLbinlog --start-position="368315" /var/log/MySQL/bin.123456 \
- | MySQL -u root -pmypwd \
上面的第1 行將恢復(fù)到停止位置為止的所有事務(wù)。下一行將恢復(fù)從給定的起始位置
直到二進(jìn)制日志結(jié)束的所有事務(wù)。因?yàn)镸ySQLbinlog 的輸出包括每個(gè)SQL 語句記錄
之前的SET TIMESTAMP 語句,恢復(fù)的數(shù)據(jù)和相關(guān)MySQL 日志將反應(yīng)事務(wù)執(zhí)行的原時(shí)
間。
MyISAM表修復(fù):
一張損壞的表的癥狀通常是查詢意外中斷并且能看到下述錯(cuò)誤:
? “tbl_name.frm”被鎖定不能更改。
? 不能找到文件“tbl_name.MYI”(Errcode:nnn)。
? 文件意外結(jié)束。
? 記錄文件被毀壞。
? 從表處理器得到錯(cuò)誤nnn
解決方法如下:
方法一:
- myisamchk -r tablename
上面的方法幾乎能解決所有問題,如果不行,則使用:
- myisamchk -o tablename
方法二:
- 1) CHECK TABLE tbl_name [, tbl_name] ... [option] ...
- option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
- 2) REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
- tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
以上的相關(guān)內(nèi)容就是對(duì)MySQL備份與恢復(fù)的介紹,望你能有所收獲。
【編輯推薦】