Mysql1.5(binlog增量備份與恢復,innobackupex)
目錄:一,增量備份與恢復
二,mysql主從同步
一增量備份與增量恢復:
1啟用Mysql服務的binlog日誌文件,實現對數據的實時增量備份
(1)binlog日誌介紹
(2)啟用binlog日誌
(3)手動生成新的binlog日誌文件
(4)刪除已有的binlog日誌文件
(5)使用binlog日誌恢復數據
(1)binlog日誌介紹:
mysql數據庫服務日誌文件的一種,記錄用戶連接
數據庫服務器之後,執行的除查詢之外的sql命令.
(2)啟用binlog日誌:
1,vim /etc/my.cnf (配置主配置文件)
[mysqld]
server_id=51 //定義主機編號
log_bin //啟動binlog日誌
binlog_format="mixed" //定義日誌記錄格式
記錄格式:statement:記錄每條修改數據的sql命令
row :不記錄sql語句安全上下文,僅保存哪條記錄被修改
mixed:以上兩者的混合,記錄sql命令並且記錄安全上下文,和被修改的記錄
2, systemctl restart mysqld (重起服務)
日誌文件默認的存儲位置:
cd /var/lib/mysql/
主機名-bin.index 日誌索引文件(記錄當前已有的binlog日誌文件名)
可以用cat查看它
主機名-bin.編號 記錄sql命令的日誌文件(裏面存放的是二進制的執行碼)
查看方式:
mysqlbinlog [選項] mysql51-bin.000001
mysqlbinlog mysql51-bin.000001 | grep -i insert
選項有:
--start-datetime="yyyy-mm-dd hh:mm:ss" //開始日期時間
--stop-datetime="yyyy-mm-dd hh:mm:ss" //結束日期時間
--start-position=數字 --stop-position=數字
定義日誌文件名字存儲位置:
1,mkdir /logdir ; chown mysql /logidr
2,vim /etc/my.cnf
[mysqld]
server_id=51
log_bin="/logdir/hcy"
binlog_format="mixed"
3,systemctl restart mysqld
註:配置好後原先的日誌文件就無效了,新生成的命令都是存在/logdir/下面.
(3)手動生成新的binlog日誌文件
為什麽要手動生成新的binlog的日誌文件?
系統默認的日誌文件只有大於500M才會生成新的日誌文件,且無法
對單獨庫單獨表去記錄日誌文件.
1,在登陸狀態下:
執行mysql->flush logs;
2在操作界面下:
執行mysql -uroot -p密碼 -e ‘flush logs‘
或者:mysqldump -uroot -p密碼 --fulsh-logs 庫名 > xxx.sql
3,重起mysqld服務也會新生成日誌文件(生產環境下不會用這種)
(4)刪除已有的binlog日誌文件
使用系統命令刪除rm(索引文件不會同步更新)
使用sql命令刪除:
mysql->reset master;刪除所有的日誌文件重新初始化日誌文件
mysql->purge master logs to "日誌名";刪除指定編號之前的日誌文件
(5)使用binlog日誌恢復數據 的命令格式
mysqlbinlog 【選項】 日誌文件名 | mysql -uroot -p密碼
指定偏移量的選項:
--start-position=數字 --stop-position=數字
指定時間的選項:
--start-datetime="yyyy-mm-dd hh:mm:ss" //開始日期時間
--stop-datetime="yyyy-mm-dd hh:mm:ss" //結束日期時間
2,使用第3方軟件提供命令innobackupex
1,找資源安裝軟件包:
percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
rpm -Uvh 查看依賴包,且安裝依賴包,才能安裝主包。
perl-DBD-mysql perl-Digest-MD5
libev-4.15-1.el6.rf.x86_64.rpm
rpm -qa | grep percona // 列出包名
rpm -ql percona-xtrabackup-24 //列出軟件包提供的文件
/usr/bin/innobackupex (集成xtrabackup支持innodb 和 xtradb以及myisam)
/usr/bin/xtrabackup (只能備份innodb,和xtradb)
2,使用innobackupex命令做備份要求?
(1)確保數據庫中的所有庫,存儲引擎是innodb。
(2)要確保主目錄下只有初始配置3個庫
(3)第一次要進行完全備份,備份3個主庫
以上操作為必須項,主要為軟件搭建環境。
3,innobackupex命令的語法格式
innobackupex <選項>
--user用戶 --password 密碼 --databases 數據庫名列表
--incremental 目錄名 --incremental-basedir 目錄名
innobackupex --user root --password 123456 --databases="
mysql performance_schema sys gamedb" 備份目錄名 --no-timestamp(完全備份)
4,增量備份
innobackupex --user root --password 123456 --databases="
mysql performance_schema sys gamedb" 備份目錄名 --incremental 目錄名
--incremental-basedir=上一次備份數據存儲的目錄名 (增量備份)
註意事項:指定的備份的目錄必須為空。
5,完全恢復
innobackupex --user root --password 123456 --databases="
mysql performance_schema sys gamedb" --apply-log --redo-only 完全備份目錄
增量恢復:
innobackupex --user root --password 123456 --databases="
mysql performance_schema sys gamedb" --apply-log --redo-only 存儲完全備份數據的目錄
--incremental-basedir=目錄名
拷貝文件:
innobackupex --user root --password 123456 --databases="
mysql performance_schema sys gamedb" --copy-back 存儲完全備份數據的目錄
原理問題:如果哪天把數據庫的主目錄幹掉了,可以使用恢復日誌,先恢復完全備份目錄
在叠代式的恢復增量目錄數據,不能越級恢復。恢復完全備份後執行命令 --copy-back命令。 最後在chown -R mysql:mysql mysql(目錄)
備份配置文件說明:
cat xtrabackup_checkpoints (記錄sql命令操作序列號)
backup_type = full-backuped //備份類型(完全備份)
from_lsn = 0 //日誌序列號
to_lsn = 4624642 //日誌序列號
last_lsn = 4624651 //日誌序列號
compact = 0
recover_binlog_info = 0
xtrabackup_logfile(存放記錄sql命令與xtrabackup_checkpoints的序列號對應關系)
庫目錄:(存放sql命令執行後所產生的數據)
Mysql1.5(binlog增量備份與恢復,innobackupex)