1. 程式人生 > >Mysql1.5(binlog增量備份與恢復,innobackupex)

Mysql1.5(binlog增量備份與恢復,innobackupex)

ont sql命令 emc 完全恢復 以及 數據 emctl ack 說明

目錄:一,增量備份與恢復

二,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)