1.企業(yè)故障恢復(fù)案例
背景:
正在運(yùn)行的網(wǎng)站系統(tǒng),MySQL數(shù)據(jù)庫(kù),數(shù)據(jù)量25G,日業(yè)務(wù)增量10-15M。
備份策略:
每天23:00,計(jì)劃任務(wù)調(diào)用mysqldump執(zhí)行全備腳本
故障時(shí)間點(diǎn):
上午10點(diǎn)開發(fā)人員誤刪除一個(gè)核心業(yè)務(wù)表,如何恢復(fù)?
思路:
1)停業(yè)務(wù)避免數(shù)據(jù)的二次傷害
2)找一個(gè)臨時(shí)的庫(kù),恢復(fù)前一天的全備
3)截取前一天23:00到第二天10點(diǎn)誤刪除之間的binlog,恢復(fù)到臨時(shí)庫(kù)
4)測(cè)試可用性和完整性
5)開啟業(yè)務(wù)前的兩種方式
a.直接使用臨時(shí)庫(kù)頂替原生產(chǎn)庫(kù),前端應(yīng)用割接到新庫(kù)
b.將誤刪除的表單獨(dú)導(dǎo)出,然后導(dǎo)入到原生產(chǎn)環(huán)境
6)開啟業(yè)務(wù)
模擬數(shù)據(jù)
#!/bin/bash num=1 while true;do mysql -uroot -p123 -e "insert into proc.proc1 value($num);commit;" (( num++ )) sleep 1 done
備份
[root@db02 ~]# mysqldump -A -R --triggers --master-data=2 --single-transaction|gzip > /tmp/full_$(date +%F).sql.gz
模擬誤刪除數(shù)據(jù)
mysql> drop table proc.proc;
恢復(fù)思路
1)停業(yè)務(wù)避免數(shù)據(jù)的二次傷害 [root@db02 ~]# /etc/init.d/mysqld stop 2) 準(zhǔn)備新環(huán)境 [root@m01 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data [root@m01 scripts]# /etc/init.d/mysqld start 3)找一個(gè)臨時(shí)的庫(kù),恢復(fù)前一天的全備 [root@db02 ~]# scp /tmp/full_2022-08-19.sql.gz 172.16.1.61:/tmp/ [root@m01 scripts]# zcat /tmp/full_2022-08-19.sql.gz |mysql 3)截取前一天23:00到第二天10點(diǎn)誤刪除之間的binlog,恢復(fù)到臨時(shí)庫(kù) 起始位置點(diǎn): [root@db02 ~]# zcat /tmp/full_2022-08-19.sql.gz |head -25 -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=7138; 結(jié)束位置點(diǎn):42855 第二段起始位置點(diǎn):42975 第二段結(jié)束位置點(diǎn):58870 [root@db02 ~]# mysqlbinlog --start-position=7138 --stop-position=42855 /application/mysql/data/mysql-bin.000002 > /tmp/inc1.sql [root@db02 ~]# mysqlbinlog --start-position=42975 --stop-position=58870 /application/mysql/data/mysql-bin.000002 > /tmp/inc2.sql [root@db02 ~]# scp /tmp/inc* 172.16.1.61:/tmp/ 4)測(cè)試可用性和完整性 5)開啟業(yè)務(wù)前的兩種方式 a.直接使用臨時(shí)庫(kù)頂替原生產(chǎn)庫(kù),前端應(yīng)用割接到新庫(kù) b.將誤刪除的表單獨(dú)導(dǎo)出,然后導(dǎo)入到原生產(chǎn)環(huán)境 6)開啟業(yè)務(wù)
2.企業(yè)級(jí)增量恢復(fù)實(shí)戰(zhàn)
背景:
某大型網(wǎng)站,mysql數(shù)據(jù)庫(kù),數(shù)據(jù)量500G,每日更新量100M-200M
備份策略:
xtrabackup,每周六0:00進(jìn)行全備,周一到周五及周日00:00進(jìn)行增量備份。
故障場(chǎng)景:
周三下午2點(diǎn)出現(xiàn)數(shù)據(jù)庫(kù)意外刪除表操作。
如何恢復(fù)???
模擬數(shù)據(jù)
#!/bin/bash num=1 while true;do mysql -uroot -p123 -e "insert into proc.proc1 value($num);commit;" (( num++ )) sleep 1 done
備份
## 上周六全備 周六 00點(diǎn) 備周一到周五數(shù)據(jù) [root@db02 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full_$(date +%F) [root@db02 ~]# cat /backup/full_2022-08-19/xtrabackup_checkpoints backup_type = full-backuped from_lsn = 0 to_lsn = 2335986976 last_lsn = 2335986976 compact = 0 recover_binlog_info = 0 ## 第一次增備 周日的00點(diǎn) 備的周六增量數(shù)據(jù) 周六00點(diǎn)之后到周日00點(diǎn)之前 [root@db02 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir /backup/full_$(date +%F) /backup/inc_6 [root@db02 ~]# cat /backup/inc_6/xtrabackup_checkpoints backup_type = incremental from_lsn = 2335986976 to_lsn = 2336208335 last_lsn = 2336223316 compact = 0 recover_binlog_info = 0 ## 第二次增備 周一的00點(diǎn) 備的周日增量數(shù)據(jù) 周日00點(diǎn)之后到周一00點(diǎn)之前 [root@db02 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir /backup/inc_6 /backup/inc_7 [root@db02 ~]# cat /backup/inc_7/xtrabackup_checkpoints backup_type = incremental from_lsn = 2336208335 to_lsn = 2336236884 last_lsn = 2336249656 compact = 0 recover_binlog_info = 0 ## 第三次增備 周二的00點(diǎn) 備的周一增量數(shù)據(jù) 周一00點(diǎn)之后到周二00點(diǎn)之前 [root@db02 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir /backup/inc_7 /backup/inc_1 [root@db02 ~]# cat /backup/inc_1/xtrabackup_checkpoints backup_type = incremental from_lsn = 2336236884 to_lsn = 2336264378 last_lsn = 2336264942 compact = 0 recover_binlog_info = 0 ## 第四次增備 周三的00點(diǎn) 備的周二增量數(shù)據(jù) 周二00點(diǎn)之后到周三00點(diǎn)之前 [root@db02 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir /backup/inc_1 /backup/inc_2 [root@db02 ~]# cat /backup/inc_2/xtrabackup_checkpoints backup_type = incremental from_lsn = 2336264378 to_lsn = 2336273708 last_lsn = 2336273708 compact = 0 recover_binlog_info = 0 ## binlog截取 周三00點(diǎn)之后到周三下午14點(diǎn)之間的數(shù)據(jù)
刪除數(shù)據(jù)
mysql> select * from ts; +----+------+ | id | A | +----+------+ | 1 | 300 | | 2 | 200 | +----+------+ mysql> drop table test.ts;
恢復(fù)思路
1.停業(yè)務(wù),停庫(kù) [root@db02 ~]# /etc/init.d/mysqld stop 2.準(zhǔn)備新環(huán)境 3.清空data目錄 [root@db02 ~]# mv /application/mysql/data/ /usr/local/src/ 4.重做數(shù)據(jù) 1)全備只做redo不做undo [root@db02 ~]# innobackupex --apply-log --redo-only /backup/full_2022-08-19/ 2)周六的增量數(shù)據(jù)合并到full中只做redo不做undo [root@db02 ~]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc_6 /backup/full_2022-08-19/ 3)周日六的增量數(shù)據(jù)合并到full中只做redo不做undo [root@db02 ~]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc_7 /backup/full_2022-08-19/ 4)周一的增量數(shù)據(jù)合并到full中只做redo不做undo [root@db02 ~]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc_1 /backup/full_2022-08-19/ 5)周二的增量數(shù)據(jù)合并到full中redo和undo都做 [root@db02 ~]# innobackupex --apply-log --incremental-dir=/backup/inc_2 /backup/full_2022-08-19/ 6)全備整體做一遍redo和undo [root@db02 ~]# innobackupex --apply-log /backup/full_2022-08-19/ 5.恢復(fù)數(shù)據(jù) [root@db02 ~]# innobackupex --copy-back /backup/full_2022-08-19/ 6.授權(quán) [root@db02 ~]# chown -R mysql.mysql /application/mysql/data 7.啟動(dòng)數(shù)據(jù)庫(kù) [root@db02 ~]# /etc/init.d/mysqld start 8.binlog截取 周三00點(diǎn)之后到周三下午14點(diǎn)之間的數(shù)據(jù) 第一段起始位置點(diǎn):184023 [root@db02 ~]# cat /backup/full_2022-08-19/xtrabackup_binlog_info mysql-bin.000003184023 [root@db02 ~]# mysqlbinlog -vvv --base64-output=decode-row /usr/local/src/data/mysql-bin.000003 |grep -i drop -C 5 第一段結(jié)束位置點(diǎn):200666 第二段起始位置點(diǎn):200781 [root@db02 ~]# mysqlbinlog -vvv --base64-output=decode-row /usr/local/src/data/mysql-bin.000003 第二段結(jié)束位置點(diǎn):205830 ## 截取 [root@db02 ~]# mysqlbinlog --start-position=184023 --stop-position=200666 /usr/local/src/data/mysql-bin.000003 > /tmp/inc_1.sql [root@db02 ~]# mysqlbinlog --start-position=200781 --stop-position=205830 /usr/local/src/data/mysql-bin.000003 > /t
鏈接:https://www.cnblogs.com/wangchengww/p/16603009.html
-
數(shù)據(jù)處理
+關(guān)注
關(guān)注
0文章
615瀏覽量
28645 -
MySQL
+關(guān)注
關(guān)注
1文章
831瀏覽量
26760
原文標(biāo)題:提升企業(yè)數(shù)據(jù)處理能力:MySQL在大規(guī)模應(yīng)用中的最佳實(shí)踐與案例解析
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Hadoop 生態(tài)系統(tǒng)在大數(shù)據(jù)處理中的應(yīng)用與實(shí)踐
云服務(wù)器 Flexus X 實(shí)例評(píng)測(cè)體驗(yàn)之搭建 MySQL 數(shù)據(jù)庫(kù)
![云服務(wù)器 Flexus X 實(shí)例評(píng)測(cè)體驗(yàn)之搭建 <b class='flag-5'>MySQL</b> <b class='flag-5'>數(shù)據(jù)</b>庫(kù)](https://file1.elecfans.com//web3/M00/05/BA/wKgZPGeEhAmAATA8AAIPAjVASuE462.png)
緩存對(duì)大數(shù)據(jù)處理的影響分析
cmp在數(shù)據(jù)處理中的應(yīng)用 如何優(yōu)化cmp性能
上位機(jī)實(shí)時(shí)數(shù)據(jù)處理技術(shù) 上位機(jī)在智能制造中的應(yīng)用
eda中常用的數(shù)據(jù)處理方法
海量數(shù)據(jù)處理需要多少RAM內(nèi)存
FPGA在數(shù)據(jù)處理中的應(yīng)用實(shí)例
云平臺(tái)在大規(guī)模設(shè)備管理和數(shù)據(jù)分析中的作用
![云平臺(tái)<b class='flag-5'>在</b><b class='flag-5'>大規(guī)模</b>設(shè)備管理和<b class='flag-5'>數(shù)據(jù)分析</b><b class='flag-5'>中</b>的作用](https://file1.elecfans.com/web2/M00/06/EB/wKgZombr692ANsIDAAeqBMET5Mw260.png)
邊緣計(jì)算物聯(lián)網(wǎng)關(guān)如何優(yōu)化數(shù)據(jù)處理流程
![邊緣計(jì)算物聯(lián)網(wǎng)關(guān)如何<b class='flag-5'>優(yōu)化</b><b class='flag-5'>數(shù)據(jù)處理</b>流程](https://file1.elecfans.com//web2/M00/00/54/wKgaomaosgCAf0zwAADZV8Kslec688.jpg)
【大規(guī)模語(yǔ)言模型:從理論到實(shí)踐】- 閱讀體驗(yàn)
振弦采集儀在巖土工程監(jiān)測(cè)中的數(shù)據(jù)處理與結(jié)果展示
![振弦采集儀<b class='flag-5'>在</b>巖土工程監(jiān)測(cè)<b class='flag-5'>中</b>的<b class='flag-5'>數(shù)據(jù)處理</b>與結(jié)果展示](https://file.elecfans.com/web2/M00/63/60/poYBAGMC2WuAT-FkAAInOyoBiJY267.png)
工程監(jiān)測(cè)振弦采集儀在振動(dòng)監(jiān)測(cè)中的應(yīng)用與數(shù)據(jù)處理技術(shù)
![工程監(jiān)測(cè)振弦采集儀<b class='flag-5'>在</b>振動(dòng)監(jiān)測(cè)<b class='flag-5'>中</b>的應(yīng)用與<b class='flag-5'>數(shù)據(jù)處理</b>技術(shù)](https://file1.elecfans.com/web2/M00/BE/B5/wKgZomW17OmAMaI_AB0wq-xRL4c127.png)
名單公布!【書籍評(píng)測(cè)活動(dòng)NO.30】大規(guī)模語(yǔ)言模型:從理論到實(shí)踐
Redis與MySQL協(xié)同升級(jí)企業(yè)緩存
![Redis與<b class='flag-5'>MySQL</b>協(xié)同升級(jí)<b class='flag-5'>企業(yè)</b>緩存](https://file.elecfans.com/web2/M00/3F/D7/poYBAGJqPMKAEXjWAAAOpepuZJ8475.jpg)
評(píng)論