日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql第五章事务_mysql 第五章 备份恢复

發布時間:2025/4/5 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 第五章 备份恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。