mysql第五章事务_mysql 第五章 备份恢复
mysql 第五章 備份恢復
一.備份策略*****
1.每周一次全備,每天一次增量備
2.每天檢查備份是否成功
3.每季度進行備份恢復演練
4.設置 -master-data=2 (記錄備份的GTID號范圍) --single-transaction(備份快照,實現偽熱備)
5. 備份區別 :熱備: 對于業務影響最小(僅限InnoDB) ; MyISAM:溫備 (長時間鎖表備份)
二. 恢復策略
1.停業務,掛維護頁,避免數據的二次傷害
2.找一個臨時庫(和主庫相同版本)
3.導入最近的全備和導入最近的增量備
4.從binlog中剔除錯數操,binblog恢復
從最近的全量/增量備份中獲取,二進制起點GTID號,從主庫獲取目前GTID號.
@@GLOBAL.GTID_PURGED='b337c:1-21'; 22就是將要回放二進制的起點號.
5.測試數據
5.業務恢復: 方法一:直接使用臨時庫頂替原生產庫,前端應用割接到新庫
方法二:將誤刪除的表導出,導入到原生產庫
三. 項目案例:備份恢復
1. 備份恢復項目案例
背景環境:正在運行的網站系統,mysql-5.7.20 數據庫,數據量50G,日業務增量1-5M。
備份策略:每天23:00點,計劃任務調用mysqldump執行全備腳本
故障時間點:年底故障演練:模擬周三上午10點誤刪除數據庫.
思路:
(1) 停業務,掛維護頁,避免數據的二次傷害
(2) 找一個臨時庫,恢復周二23:00全備
(3) 截取周二23:00 --- 周三10點誤刪除之間的binlog,恢復到臨時庫
(4) 測試可用性和完整性:
方法一:直接使用臨時庫頂替原生產庫,前端應用割接到新庫
方法二:將誤刪除的表導出,導入到原生產庫
(5) 開啟業務:經過20分鐘的處理,最終業務恢復正常
1.1備份恢復
1.1.1從全備截取周二23:00 --- 周三10點誤刪除之間的binlog: 如下1-22是23點前,22就是23點后的起點GTID
SET @@GLOBAL.GTID_PURGED='b332efca-5b8e-11ea-aef2-000c29db3d7c:1-21';
1.1.2 依據GIID號導出周二23點到周三10點的二進制日志
查看
mysqlbinlog --base64-output=decode-rows -vvv --include-gtids='b332efca-5b8e-11ea-aef2-000c29db3d7c:22-35' \
--exclude-gtids='b332efca-5b8e-11ea-aef2-000c29db3d7c:34' /data/3306/binlog/mysql_3306_bin.00000{1..9} |grep GTID
1.1.3 導出
mysqlbinlog --include-gtids='b332efca-5b8e-11ea-aef2-000c29db3d7c:22-35' --exclude-gtids='b332efca-5b8e-11ea-aef2-000c29db3d7c:34' \
/data/3306/binlog/mysql_3306_bin.00000{1..9} --skip-gtids >/backup/bin. sql
1.1.4 恢復備份到臨時庫3307
mysql -S /data/3307/mysql.sock
set sql_log_bin=0;
source /back/full_2019-07-15.sql
source /backup/bin.sql
set sql_log_bin=1;
1.1.5 將故障表導出并恢復到生產
mysqldump -S /data/3307/mysql.sock -B backup --master-data=2 --single-transaction -E -R --triggers >/backup/bak.sql
mysql -uroot -p123
set sql_log_bin=0
source /backup/bak.sql;
set sql_log_bin=1;
2. 延時從庫處理邏輯故障恢復項目案例 *****
2.1 延時從恢復流程
2.2停從庫SQL線程,記錄已經回放的位置點(截取日志起點)
2.3 截取故障點之前的relaylog
2.4 模擬SQL線程回放日志
3.5從庫 source
2.6 恢復業務
情況一: 就一個庫的話
從庫替代主庫工作
情況二: 從庫導出故障庫,還原到主庫中.
2.7 重新從頭開始做主從
3. 故障演練
3.1主庫 :
create database delay charset utf8mb4;
use delay;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
drop database delay;
3.2 從庫:
停止 從庫SQL 線程,獲取relay的位置點
mysql> stop slave sql_thread;
mysql> show slave status \G
Relay_Log_File: db01-relay-bin.000002
Relay_Log_Pos: 626
3.3 找到relay的截取終點
mysql> show relaylog events in 'db01-relay-bin.000002';
| db01-relay-bin.000002 | 1299 | Query | 7 | 1228 | drop database delay
3.4. 截取relay
[root@db01 data]# cd /data/3308/data/
[root@db01 data]# mysqlbinlog --start-position=325 --stop-position=773 /data/3308/data/oldboy-relay-bin.000002 >/tmp/relay.sql
3.5 恢復relay到從庫
[root@db01 data]# mysql -uroot -p -S /data/3308/mysql.sock
mysql> set sql_log_bin=0;
mysql> source /tmp/relay.sql
mysql> set sql_log_bin=1;
四. 備份恢復命令集
1. 從mysqldump 全備中獲取庫和表的備份獲得表結構
# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q' full.sql>createtable.sql
2. mysqldump獲得INSERT INTO 語句,用于數據的恢復
# grep -i 'INSERT INTO `city`' full.sqll >data.sql &
3. 從mysqldump獲取單庫的備份
sed -n '/^-- Current Database: `world`/,/^-- Current Database: `/p' full.sql >world.sql
4. mysqldump
4.1全庫全量備份
mysqldump -uroot -p123 -A --max_alliwed_packet=128M --master-data=2 --single-transaction -E -R --triggers >/backup/mysql.sql >/backup/full.sql
4.2 指定表 mysqldump -uroot -p123 test t1 tt2
-A 所有庫 -B指定庫 -R 存儲過程和函數 -E 事件 --triggers 觸發器 -d 指定庫
--master-data=2 備份時記錄binlog中的GTID號的范圍 加了--single-transaction,對于InnoDB表不鎖 表備份(快照備份),不加則溫備
--max_allowed_packet=128M指定數據包大小
5. mysqlbinlog
1)查看二進制
mysqlbinlog --base64-output=decode-rows -vvv --include-gtids='b332efca-5b8e-11ea-aef2-000c29db3d7c:22-35' /data/3306/binlog/mysql_3306_bin.00000{1..9}
3) 截取
mysqlbinlog --skip-gtids --include-gtids='d60b549f-9e10-11e9-ab04-000c294a1b3b:1-3' \ mysql-bin.00000{1..9} ----exclude-gtids='d60b549f-9e10-11e9-ab04:1' >/tmp/gtid.sql
--skip-gtids 作用:在導出時,忽略原有的gtid信息,恢復時生成最新的gtid信息
--include-gtids 獲取
--exclude-gtids 排除
-d指定庫(不可以指定表)
6. 二進制查看命令
show variables like '%log_bin%'; 查看二進制日志是否開始
show binary logs; 查看所有已存在的二進制日志
flush logs; 刷星二進制日志
show master status ; 查看正在使用的二進制日志
show binlog events in 'mysql-bin.000004'; 查看二進制日志事件
總結
以上是生活随笔為你收集整理的mysql第五章事务_mysql 第五章 备份恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三层交换机如何封装trunk_锐捷交换机
- 下一篇: 维卫智能马桶va1003t安装坑距为多少