MySQL參數(shù)說明:http://www.linuxidc.com/Linux/2014-04/99673.htm
MySQL管理之?dāng)?shù)據(jù)備份及恢復(fù)http://www.linuxidc.com/Linux/2014-04/99674.htm
1.物理備份
1.1冷備 cp tar等
1.2熱備 mysqlhotcopy 只能備份存儲引擎是myisam的表,依賴perl-DBD-MySQL
2.邏輯備份:用mysql自己提供的備份命令或第三放方軟件提供的備份命令,備份創(chuàng)建庫、表、和產(chǎn)生表記錄時的sql語句。
二.數(shù)據(jù)備份策略:
1.完整備份 備份數(shù)據(jù)庫服務(wù)器上的所有庫所有表。
2.差異備份 備份自完整備份后所有產(chǎn)生的新數(shù)據(jù)。
3.增量備份 備份自上一次備份后所有產(chǎn)生的新數(shù)據(jù)
生產(chǎn)環(huán)境一般采用 完整備份+增量備份 或者 完整備份+差異備份
三.邏輯備份與恢復(fù)
1.mysqldump命令做數(shù)據(jù)的完整備份
命令格式:
mysqldump -h數(shù)據(jù)庫服務(wù)器ip -u用戶名 -p密碼 數(shù)據(jù)庫名 > 目錄名/備份文件名
數(shù)據(jù)庫名的表示方式:
--all-databases 備份數(shù)據(jù)庫服務(wù)器上的所有庫所有表
數(shù)據(jù)庫名 對某個庫做完整備份
數(shù)據(jù)庫名 表 對指定庫里的指定表做完整備份
-B 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 數(shù)據(jù)庫N 對某幾個庫做完整備份
#目錄名 :若備份時不寫目錄名備份文件就存放在,執(zhí)行備份命令時 所在的目錄下
#備份文件名 :可以自己定義,要有標(biāo)識性,約定俗成mysql的備份文件都以.sql 結(jié)尾
若文件重名,上一次備份會被當(dāng)前備份覆蓋。
# 備份用來連接數(shù)據(jù)庫服務(wù)器的用戶,要有被備份的目標(biāo)庫有相應(yīng)的權(quán)限才可以。
2.恢復(fù)完整備份數(shù)據(jù)
命令格式:
mysql -h數(shù)據(jù)庫服務(wù)器ip -u用戶名 -p密碼 數(shù)據(jù)庫名 < 目錄名/xxx.sql
mysql -h數(shù)據(jù)庫服務(wù)器ip -u用戶名 -p密碼 < 目錄名/xxx.sql
# 數(shù)據(jù)庫名:可選項,當(dāng)備份文件中有 create database,use sql語句時,恢復(fù)數(shù)據(jù)時可以不指定數(shù)據(jù)庫名。
# 用完整備份文件 恢復(fù)數(shù)據(jù),只能把數(shù)據(jù)恢復(fù)到備份時的狀態(tài),完整備份之后產(chǎn)生的信息數(shù)據(jù)是無法恢復(fù)。
四.使用binlog日志做增量備份與數(shù)據(jù)恢復(fù)
1.mysql日志類型
mysql共有4種類型日志:
binlog日志(二進(jìn)制日志) 記錄除查詢之外sql語句。
錯誤日志 記錄mysql服務(wù)在啟動和運行過程中產(chǎn)生的錯誤。
查詢?nèi)罩?記錄執(zhí)行的所有的sql操作。
慢查詢?nèi)罩?只記錄超過指定時間,顯示查詢結(jié)果的sql語句。默認(rèn)超時時間是10秒。
#默認(rèn)情況下,mysql只開啟錯誤日志。
#默認(rèn)情況下日志都存放在數(shù)據(jù)庫目錄下。每種日志文件都默認(rèn)命名方式。
2.啟用binlog日志
vim /etc/my.cnf
[mysqld]
log_bin=/binlogdir/filename //設(shè)置存放binlog目錄和文件名,自定義目錄必須讓mysql用戶有寫入權(quán)限,目錄不設(shè)置則默認(rèn)在數(shù)據(jù)庫目錄/var/lib/mysql/下,文件名不設(shè)置則默認(rèn)為:主機(jī)名-bin.000001
max-binlog-size=100M //設(shè)置binlog日志文件的大小,不設(shè)置則默認(rèn)為500M自動生成第二個binlog日志文件
service mysql restart
# 對所有庫操作的使用數(shù)據(jù)發(fā)送改變的sql語句都會寫進(jìn)當(dāng)前編號最大的binlog日志文件里。
# localhost-bin.index 記錄當(dāng)前已有binlog日志文件
3.分析binlog日志文件內(nèi)容。
binlog日志記錄sql語句的方式:
① 時間方式
② 字符偏移量方式
mysqlbinlog [選項] binlog日志文件名
選項:
偏移量
--start-position=100 起始位置
--stop-position=1200 結(jié)束位置
時間點:
--start-datetime="YYYY-mm-dd HH:MM:SS" 起始時間
--stop-datetime="YYYY-mm-dd HH:MM:SS" 結(jié)束時間
# 不加任何選項則默認(rèn)查看全部日志內(nèi)容
4.手動生成新的binlog日志文件方式:
① mysql>flush logs;
② #mysql -h數(shù)據(jù)庫服務(wù)器IP -u用戶名 -p密碼 -e "flush logs"
③ #mysqldump -h數(shù)據(jù)庫服務(wù)器IP -u用戶名 -p密碼 --flush-logs 數(shù)據(jù)庫名> /目錄名/xxx.sql
④ service mysql restart //一般不用
5.增量備份數(shù)據(jù)恢復(fù)
原理:使用mysqlbinlog提取歷史sql操作管道給mysql命令重做
命令格式:
mysqlbinlog [選項] binlog日志文件名 | mysql -h數(shù)據(jù)庫服務(wù)器ip -u用戶名 -p密碼 數(shù)據(jù)庫名
批量恢復(fù)增量備份:
mysqlbinlog `cat localhost-bin.index`| mysql -h數(shù)據(jù)庫服務(wù)器ip -u用戶名 -p密碼 [數(shù)據(jù)庫名]
6.清理binlog日志
刪除早于指定編號的binlog日志文件:
mysql> PURGE MASTER LOGS TO 'binlog日志文件名';
刪除所有binlog日志文件,重建新日志:
mysql> RESET MASTER;
更多詳情見請繼續(xù)閱讀下一頁的精彩內(nèi)容:http://www.linuxidc.com/Linux/2014-05/102266p2.htm
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com