???首先,我們需要開啟MySQL服務(wù)器的二進(jìn)制日志功能,其實(shí)現(xiàn)方法有很多種,最常用的是在MySQL的配置文件的mysqld項(xiàng)中加入log-bin=[filepath]項(xiàng);也可以使用mysqld –log-bin=[filepath]重新啟動(dòng)MySQL服務(wù)器。
10年積累的網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有柳河免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
???其次,使用mysqldump對(duì)數(shù)據(jù)庫進(jìn)行完全備份,它可以實(shí)現(xiàn)對(duì)數(shù)據(jù)據(jù)的聯(lián)機(jī),非阻塞的熱備份,不會(huì)影響其他進(jìn)程對(duì)數(shù)據(jù)庫的讀寫操作。(參考指令:mysqldump -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
???第三,使用flush logs指令刷新創(chuàng)建新的二進(jìn)制日志??梢酝ㄟ^mysqladmin flush logs或者flush logs語句實(shí)現(xiàn)。最方便有效的方法是將它做成批處理文件,然后讓操作系統(tǒng)定期執(zhí)行。
???使用mysql *.sql進(jìn)行完全備份的恢復(fù)。
???使用mysqlbinlog logs-bin.[0-9]* | mysql進(jìn)行增量備份的恢復(fù)。一般的,假設(shè)我們周日下午三點(diǎn)進(jìn)行了完全備份并生成備份文件full_backup_20100415_3_PM.sql,周一周二中午一點(diǎn)進(jìn)行了兩次增量備份,分別生成增量備份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00數(shù)據(jù)庫發(fā)生崩潰,需要進(jìn)行數(shù)據(jù)庫恢復(fù),此時(shí)正在記錄的二進(jìn)制日志為inc_backup_1_PM.0009,我們還需要恢復(fù)其中記錄的操作。具體的恢復(fù)操作為:
mysql full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u??具體應(yīng)用(結(jié)合T8項(xiàng)目)
根據(jù)上述分析,我們?cè)赥8項(xiàng)目使用MySQL增量備份,也需要三個(gè)步驟:
???首選修改MySQL啟動(dòng)配置文件my.cnf,在其中的mysqld項(xiàng)中增加log-bin選項(xiàng),重新啟動(dòng)MySQL?服務(wù)器以開啟二進(jìn)制日志功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如圖所示:
???編寫完全備份可執(zhí)行文件腳本:
???編寫增量備份可執(zhí)行文件腳本:
???執(zhí)行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。
???執(zhí)行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。
其中full_backup_20100417_1_pm. sql和t8server-bin..000002分別是完全備份和增量備份文件。
要進(jìn)行備份文件的恢復(fù),只需執(zhí)行命令:
u??總結(jié)
MySQL提供了很方便的完全+增量備份實(shí)現(xiàn)方法,我們只需調(diào)用系統(tǒng)內(nèi)置的方法或者作出一些細(xì)微的配置就可以對(duì)MySQL數(shù)據(jù)庫進(jìn)行備份和恢復(fù)。對(duì)于MyISAM數(shù)據(jù)庫和InnoDB數(shù)據(jù)庫,都可以通過mysqldump實(shí)現(xiàn)數(shù)據(jù)庫的完全邏輯備份,通過啟動(dòng)二進(jìn)制日志(binary logs),可以記錄一個(gè)時(shí)間段內(nèi)對(duì)數(shù)據(jù)庫的所有可能更新的操作,從而通過flush logs創(chuàng)建新的日志而實(shí)現(xiàn)增量備份。
數(shù)據(jù)庫最直接的備份方法就是使用自帶的mysqldump命令進(jìn)行備份。
1、 mysqldump命令備份數(shù)據(jù)
在MySQL中提供了命令行導(dǎo)出數(shù)據(jù)庫數(shù)據(jù)以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實(shí)現(xiàn)數(shù)據(jù)庫內(nèi)容的導(dǎo)出dump,首先我們簡(jiǎn)單了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 數(shù)據(jù)庫1 數(shù)據(jù)庫2 xxx.sql
2、 mysqldump常用操作實(shí)例
2.1備份全部數(shù)據(jù)庫的數(shù)據(jù)和結(jié)構(gòu)
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2備份全部數(shù)據(jù)庫的結(jié)構(gòu)(加 -d 參數(shù))
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 備份全部數(shù)據(jù)庫的數(shù)據(jù)(加 -t 參數(shù))
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 備份單個(gè)數(shù)據(jù)庫的數(shù)據(jù)和結(jié)構(gòu)(,數(shù)據(jù)庫名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 備份單個(gè)數(shù)據(jù)庫的結(jié)構(gòu)
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 備份單個(gè)數(shù)據(jù)庫的數(shù)據(jù)
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 備份多個(gè)表的數(shù)據(jù)和結(jié)構(gòu)(數(shù)據(jù),結(jié)構(gòu)的單獨(dú)備份方法與上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次備份多個(gè)數(shù)據(jù)庫
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
解決方法添加 -w 參數(shù), 將時(shí)間進(jìn)行轉(zhuǎn)換, 確保兩邊時(shí)區(qū)保持一致, 比如原來 start_at 2019-01-16 00:00:00, 更新為 start_at 2019-01-15 16:00:00, 提前8小時(shí)
先在數(shù)據(jù)庫更新時(shí)區(qū)配置為0時(shí)區(qū):set time_zone='+00:00';, 備份完成后恢復(fù)時(shí)區(qū)配置: set time_zone='SYSTEM';
方法:
URL;create?table?ay(ay1?image)--??
//新建一個(gè)名為AY的表?表內(nèi)存在名為AY1的圖象類型的字段
URL;backup?database?數(shù)據(jù)庫名?to?disk='物理路徑'?with?DIFFERENTIAL--??
//注意,這次備份是要減小數(shù)據(jù)庫的備份量
URL;backup?database?數(shù)據(jù)庫名?to?disk='物理路徑'with?DIFFERENTIAL--???
//備份數(shù)據(jù)庫到WEB目錄下