本文目錄一覽:
- 1、MYSQL備份:啟用二進制日誌功能的MYSQL增量備份
- 2、MySQL的備份與還原,非常規備份,全量備份,增量備份
- 3、有什麼簡單的 mysql 增量備份方案
- 4、如何實現Mysql數據庫的差異性備份和增量備份?
- 5、win7系統下mysql如何增量備份
MYSQL備份:啟用二進制日誌功能的MYSQL增量備份
小量的數據庫我們可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,我們就不太可能每天進行一次完整備份了,而且改成每周一次完整備份,每天一次增量備份類似這樣的備份策略。增量備份的原理就是使用了mysql的二進制日誌,所以我們必須啟用二進制日誌功能。
一、增量備份
1、比如我們在星期天下午11點做一次完整備份:
mysqldump
–single-transaction
–flush-logs
–master-data=2
–all-databases
fullbackup_sunday_11_PM.sql
在sql文件中我們會看到兩行:
–
Position
to
start
replication
or
point-in-time
recovery
from
–
CHANGE
MASTER
TO
MASTER_LOG_FILE=』bin-log.000002′,
MASTER_LOG_POS=107;
第二行包含了我們需要的信息,是指備份後所有的更改將會保存到bin-log.000002二進制文件中。
2、然後在星期一下午11點我們來做一次增量備份:
mysqladmin
flush-logs
這時將會產生一個新的二進制日誌文件bin-log.000003,bin-log.000002則保存了自星期天下午11點到現在的所有更改,我們只需要把這個文件備份到安全的地方就行了。然後星期二我們又做增量備份,還是執行同樣的命令,這時我們保存bin-log.000003文件。
二、恢復備份
比如星期三中午12點出現了故障,這時需要恢復,我們首先導入星期天的完整備份:
mysql
fullbackup_sunday_3_AM.sql
接着我們導入星期一和星期二的增量備份:
mysqlbinlog
bin-log.000002
bin-log.000003
mysql
這時我們已經恢復了所有備份數據,我們還可以找到bin-log.000004,進一步恢復最新的數據。
MySQL的備份與還原,非常規備份,全量備份,增量備份
1:官方百萬級別的測試數據庫:
官方測試數據庫github網址:
下載到目錄,解壓即可,運行命令:
2:自己創建簡單測試數據庫:
快速隨機生成測試語言的網站:
選擇sql和想生成的字段,點擊生成Generate!生成即可。
在MySQL輸入生成的語句即可。
3:測試備份還原時用到的命令
刪庫跑路測試(先備份好)
還原後查詢庫的表數據是否完整。
採用複製整個數據存放目錄
1:查看數據庫數據存放位置
有兩種方法:
1):在數據庫中用命令 show variables like ‘datadir’; 查看
2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置
Linux中查看配置文件
2:複製目錄或者目錄下某個數據庫名
3:還原時直接複製文件夾到數據庫目錄即可
mysqldump又可叫做全量備份。
參數 –databases 同 -B ,單獨一個庫,也可省略。
1、備份命令mysqldump格式
格式:mysqldump -h主機名 -P端口 -u用戶名 -p密碼 database 數據庫名 文件名.sql
備份testDatabase數據庫
2、備份MySQL數據庫為帶刪除表的格式
備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。
3、直接將MySQL數據庫壓縮備份
備份並壓縮
4、備份MySQL數據庫某個(些)表
備份testDatabase中的myTable表,不需要用參數 –databases 或者 -B
5、同時備份多個MySQL數據庫
同時備份testDatabase和 employees兩個庫
6、備份服務器上所有數據庫
參數 –all-databases 同 -A
7、還原MySQL數據庫的命令
1) 不指定數據名還原,默認生成原數據庫名稱,還原所有數據庫。
2) 指定數據名還原,還原指定單個數據庫,需在數據庫種預先創建一個testDatabase名稱。
3) 還原壓縮的MySQL數據庫
4) 進入數據庫用source導入
增量備份是針對於數據庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。
1:查看是否開啟bin-log日誌
進入mysql輸入命令可查看。
顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。
如未開啟,需要在配置文件種配置
2:查看目前使用的bin-log日誌文件
進入mysql查看命令。
顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。
查看當前testDatabase的表myTable數據如下,
3:刷新日誌,使用新的日誌文件(備份)
在命令端執行命令
日誌文件從 binlog.000022 變為 binlog.000023
這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。
4:刪除數量,從日誌還原數據
1) 刪除ABC行
查詢以及沒有ABC行列。
2) 恢複數據ABC行
退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。
進入數據庫再次查看數據,ABC已經恢復。
增量備份完成。
有什麼簡單的 mysql 增量備份方案
1.在 /etc/my.cnf 下面設置開啟bin-log
編輯
vim /etc/my.cnf
[mysqld]
binlog_format = MIXED //binlog日誌格式
log_bin =目錄/mysql-bin.log //binlog日誌名
expire_logs_days = 7 //binlog過期清理時間
#max_binlog_size 100m //binlog每個日誌文件大小 最大值和默認是1個G
binlog-do-db=game #需要備份的數據庫名,如果備份多個數據庫,重複設置這個選項即可
binlog-do-db=platform #
#binlog-ignore-db=不需要備份的數據庫,如果備份多個數據庫,重複設置這個選項即可
2.創建遠程登陸數據庫帳號
grant all privileges on game.* to ‘jack’@’192.168.10.56’ identified by ‘admin’
grant all privileges on platform.* to ‘jack’@’192.168.10.56’ identified by ‘admin’
3.將服務器上的數據,導入一份進遠程服務器中
mysqldump -ujack -padmin -h192.168.10.38 備份數據庫地址(/home/mysql/db/mysql.sql);
4.寫Linux 計劃任務:
vim /etc/crontab
在底部加入
0 3 * * * root sh /home/wwwroot/sh/mysqlbackup.sh #每天3點以root帳號的權限執行目錄下的sh
重啟服務
如何實現Mysql數據庫的差異性備份和增量備份?
Ø 首先,我們需要開啟MySQL服務器的二進制日誌功能,其實現方法有很多種,最常用的是在MySQL的配置文件的mysqld項中加入log-bin=[filepath]項;也可以使用mysqld –log-bin=[filepath]重新啟動MySQL服務器。
Ø 其次,使用mysqldump對數據庫進行完全備份,它可以實現對數據據的聯機,非阻塞的熱備份,不會影響其他進程對數據庫的讀寫操作。(參考指令: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指令刷新創建新的二進制日誌。可以通過mysqladmin flush logs或者flush logs語句實現。最方便有效的方法是將它做成批處理文件,然後讓操作系統定期執行。
Ø 使用mysql *.sql進行完全備份的恢復。
Ø 使用mysqlbinlog logs-bin.[0-9]* | mysql進行增量備份的恢復。一般的,假設我們周日下午三點進行了完全備份並生成備份文件full_backup_20100415_3_PM.sql,周一周二中午一點進行了兩次增量備份,分別生成增量備份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00數據庫發生崩潰,需要進行數據庫恢復,此時正在記錄的二進制日誌為inc_backup_1_PM.0009,我們還需要恢復其中記錄的操作。具體的恢復操作為:
mysql full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u 具體應用(結合T8項目)
根據上述分析,我們在T8項目使用MySQL增量備份,也需要三個步驟:
Ø 首選修改MySQL啟動配置文件my.cnf,在其中的mysqld項中增加log-bin選項,重新啟動MySQL 服務器以開啟二進制日誌功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如圖所示:
Ø 編寫完全備份可執行文件腳本:
Ø 編寫增量備份可執行文件腳本:
Ø 執行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。
Ø 執行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。
其中full_backup_20100417_1_pm. sql和t8server-bin..000002分別是完全備份和增量備份文件。
要進行備份文件的恢復,只需執行命令:
u 總結
MySQL提供了很方便的完全+增量備份實現方法,我們只需調用系統內置的方法或者作出一些細微的配置就可以對MySQL數據庫進行備份和恢復。對於MyISAM數據庫和InnoDB數據庫,都可以通過mysqldump實現數據庫的完全邏輯備份,通過啟動二進制日誌(binary logs),可以記錄一個時間段內對數據庫的所有可能更新的操作,從而通過flush logs創建新的日誌而實現增量備份。
win7系統下mysql如何增量備份
增量備份其實就是開啟二進制日誌,保留每個操作的sql語句,然後定時備份那個日誌文件,並進行刷新以便生成新的日誌文件
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130764.html