實時增量備份 、 XtraBackup 備份 、 MySQL 主從同步

day05 增量備份備份與增量恢復
一、啓用binlog日誌 實現時時增量備份
1.1 binlog日誌介紹: 又被稱爲二進制日誌 是mysql數據庫服務日誌文件的一種。記錄連接服務器後,執行的除查詢之外的sql命令。
mysql>
查看的 : show desc select
寫的: insert update delete

1.2 啓用binlog日誌
#vim /etc/my.cnf
[mysqld]
server_id=id號 #1-255
log-bin
binlog_format="mixed"
:wq
#systemctl restart mysqld
默認存儲路徑 /var/lib/mysql/
默認文件名 主機名-bin.000001 >500M
主機名-bin.000002 >500M
主機名-bin.000003

日誌索引文件: 主機名-bin.index 記錄當前已有的binlog日誌文件名。
++++++++++++++++++++++++++++++++
1.2 查看binlog日誌文件內容
#mysqlbinlog binlog日誌文件名
+++++++++++++++++++++++++++
啓用日誌是指定日誌文件的存儲目錄和名稱
#mkdir /logdir
#chown mysql /logdir

#vim /etc/my.cnf
[mysqld]
server_id=id號 #1-255
log-bin=/logdir/plj
binlog_format="mixed" #設置日誌文件的記錄格式
:wq
#systemctl restart mysqld
#ls /logdir/plj.*
++++++++++++++++++++++++++++++
1.3 binlog日誌文件記錄sql命令的方式:
時間點
pos點
++++++++++++++++++++++++++++++
執行binlog裏記錄的sql命令恢復數據?
#mysqlbinlog 選項 binlog日誌文件名 | mysql -uroot -pabc123

時間點 --start-datetime="yyyy-mm-dd hh:mm:ss"
--stop-datetime="yyyy-mm-dd hh:mm:ss"

pos點 --start-position=數字
--stop-position=數字

#mysqlbinlog --start-position=296 --stop-position=1073 /logdir/plj.000001 | mysql -uroot -pabc123
++++++++++++++++++++++++++++++++++++++++
收到生成新的binlog日誌文件(默認>500M後自動創建新的)
#systemctl restart mysqld
mysql> flush logs;
#mysql -uroot -pabc123 -e "flush logs"
#mysqldump -uroot -pabc123 --flush-logs userdb > userdb.sql

刪除日誌文件
#rm -rf 日誌文件名;
mysql> reset master;
mysql> purge master log to "日誌文件名";
+++++++++++++++++++++++++++++++++++++++++
binlog日誌
1 binlog日誌介紹
2 啓用binlog
#vim /etc/my.cnf
[mysqld]
server_id=11
log-bin【=目錄名/文件名】
binlog_format="mixed"
:wq
#systemctl restart mysqld
3 查看日誌文件內容
#mysqlbinlog binlog文件名

4 binlog文件是如何記錄sql命令
時間點
pos

5 執行binlog文件裏記錄的sql命令恢復數據
#mysqlbinlog 選項 binlog文件名 | mysql -uroot -pabc123

6 手動創建日誌文件

7 刪除日誌文件
+++++++++++++++++++++++++++++++++++++++
1 在12數據庫服務器上啓用binlog日誌:要求如下
日誌文件存儲目錄是 /logdir 文件名 master12
2 把gamedb庫的初始數據保存在日誌文件編號1裏。
create database gamedb;
create table gamedb.t1(id int);
insert into gamedb.t1 values(100);
insert into gamedb.t1 values(200);
insert into gamedb.t1 values(300);
3 其他數據保存在日誌文件編號1之後的文件裏
insert into gamedb.t1 values(400);
insert into gamedb.t1 values(500);
insert into gamedb.t1 values(600);
insert into gamedb.t1 values(700);
delete from gamedb.t1 where id=200 or id=300
4 使用binlog日誌恢復刪除的數據。

++++++++++++++++++++++++++++++++++++++++++
二、使用第3方軟件percona提供的命令innobackupex做增量備份
2.1 安裝軟件包 percona
2.2 命令格式
#innobackupex <選項>
選項
--user
--password
--databases
--no-timestamp
--apply-log
--copy-back

支持事務 和 事務回滾
ls /var/lib/mysql
事務日誌文件
ibdata

LSN 日誌序列號
ib_logfile0 sql命令
ib_logfile1

完全備份
#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" 備份目錄名 --no-timestamp

#rm -rf /var/lib/mysql
#mkdir /var/lib/mysql

完全恢復數據
#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --apply-log 備份目錄名

#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --copy-back 備份目錄名
#ls /var/lib/mysql/
#chown -R mysql:mysql /var/lib/mysql
#systemctl stop mysqld
#systemctl start mysqld
#mysql -uroot -pabc123
mysql>show databases;
+++++++++++++++++++++++++++++++++++
--incremental 目錄名
--incremental-basedir=目錄名

增量備份(必須先有一次備份,通常會先做一次完全備份)
#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --incremental 目錄名 --incremental-basedir=目錄名 --no-timestamp

+++++++++++++++++++++++++++++++++
--incremental-dir=目錄名
--redo-only
#rm -rf /var/lib/mysql
#mkdir /var/lib/mysql
增量恢復
1恢復日誌文件
#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --apply-log --redo-only /allbak

#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --apply-log --redo-only /allbak --incremental-dir=目錄

#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --apply-log --redo-log /allbak --incremental-dir=目錄

xtraback_checkpositions lsn

2恢復數據
#innobackupex --user root --password abc123 --databases="系統庫列表 存儲數據庫" --copy-back 完全備份目錄名

#chown -R mysql:mysql /var/lib/mysql

3重啓服務
#systemctl stop mysqld
#systemctl start mysqld

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章