【永利皇宫登录网址】一次事故的回顾,GTID环境下恢复从库思路方法

背景:MySQL5.6.40,库超小,row+gtid复制情况,但出于原先各类原因,备份还原在从库后,开启复制存在大气1062,1032不当,gtid卡在靠前岗位。做复制的时候未有其他从库,每小时的备份也被运维停了。

要研究什么恢复从库,大家得先来打探如下一些定义:

早先一直没蒙受过这种景色,相对测量检验碰着正式景况比较复杂,并且预计恐怕是事情未发生前备份还原一贯没用过备份意气风发致性参数招致,并且挖掘错误也未有手工检查(这一个主题材料还在研讨中,有遇上并精通始末的小友人接待引导)。

GTID_EXECUTED:它是风姿洒脱组包括已经记录在二进制日志文件中的事务集合

为了现在防止因为苏醒不比时招致的数据遗失,特别计算本次故障进度和名门探究、分享。

GTID_PU翼虎GED:它是黄金年代组包括已经从二进制日志删除掉的事情集合。

简化时间轴如下图:

 

开首—->备份主库—->苏醒从库—->复制error1032,1062—->删除从库再次苏醒—->复制error1032,1062—->reset
master从库、主库—->筹算删除从库—->误操作删主库—–>苏醒主库—–>跳过大量1062、1032破绽非常多—->找drop
db地点苏醒从库—->相比宗旨数据—->手工业补数据—->甘休

 

上面依据我的回想描述下立时的风貌:

在那起彼伏钻探时,大家先来看下怎么着新建一个基于GTID的slave。

生机勃勃、第叁遍备份主库、搭建从库

首先次搭建从库,从主库的备份未选用master-data=2
single-transaction(保障工作备份时的后生可畏致性)参数迁移后,报大批量1062和1032不当(各家有各家的真实景况,相当的少说了)

 

永利皇宫登录网址 1

透过通晓上边包车型客车七个参数,大家前几天只须求:

二、首次复苏主库到从库

于是第三遍重复导入。

一致报错。在导入从库前使用reset master;将从库binlog解除。

是因为操作职员持续解reset master含义及进行结果,又在主库做了reset master;

结果变成主库全体binlog日志被拔除並且binlog position置为1;

这里贴以下官方证实,别没事干就在主库上用那条。

 

永利皇宫登录网址 2

重复导入开掘依然一大波报1032,1062荒谬。

鉴于疑惑是因为备份时没利用–single-transaction参数,希图删除从库,加参数重新备份主库。

1.从主库上做一个备份时记下备份时gtid_executed的值。

三、误删除主库

结果误操作删除主库(这几个锅一片段原因要甩给mysql
naivcat那些工具,垂直排列库,微微不注意就便于点错。还是建议我们听吴老师的用合法的workbench),删库依旧几个人查对,在操作系统上实施,删前没把握最棒备份三次。

删库这种操作小心谨慎再当心,首要的事务说一遍!

删库这种操作小心谨慎再小心,主要的专业说一遍!

删库这种操作小心谨慎再严格,主要的事情说叁遍!

drop database;(在naivcat上右键删除库,但binlog日志中依旧会记录DROP
DATABASE那条记下)

此刻为了保证专业不脚刹踏板,立马在主库上通过以前的备份文件恢复生机了黄金年代套库,当然数据一定错失了,但能够推算遗失数据的岁月段(从备份完成最先—>DROP
DATABASE)。

PS.请不要问作者怎么删库,为啥删完又借尸还魂了后生可畏套库,因为都不是自家干的。。。。。。

侥幸的是误删除主库但平昔不删除从库,而且从库的io_thread依然处于yes状态(回看吴先生的科目,也正是说即便库被剔除了但实则删库前的多少=备份数据+io_thread已下载的去除主库前的数量),由于sql_thread还是停到gtid靠前的职位

 

永利皇宫登录网址 3

2.在新的slave上苏醒此备份时设置从库的gtid_purged的值为备份时master上gtid_executed的值。

四、跳过大批量1032,1062错误

本条时候就算看下备份文件的gtid地点,并purge到该职位(从前备份丢了,随意找了三个备份的截图,掌握万岁)。

##此间表达豆蔻梢头(Dumex)下怎么平素purge到备份的尾声地方,因为书库备份的数码中1032和1062不当太多,且主库已经去除无法通过脚本比较跳过大量1032,1062乖谬(吴老老师和朋友情提供),在力所能致确定保障是从主库逻辑备份过来的状态下(主从数据意气风发致),大家采纳快捷跳过大批量漏洞非常多(偷懒加意况急),直接purge到备份最终的岗位。

 

永利皇宫登录网址 4

##上海体育场合是随便截的多个备份文件最开始的职位,请忽视那么些gtid的值,意思通晓就可以。

set @@gtid_purged=’fb1f83af-1915-11e8-811b-000c29c4d77d:1-500′;

注:‘500’代表备份文件最终多个履行的事体的gtid。gtid_purged代表数据库已经在从库上海重机厂放过1-500这段专门的学问。

 

五、找到主库DROP DATABASE的GTID地点

purge到该地点然后再明确drop
database的职位上(思路:要是不明确dropdatabase之处就start slave
那么从库会应用主库的binlog也就能实践主库drop
database的操作,为了幸免从库回放主库drop
database的操作,大家要设法让gtid在从库停到drop
database前贰个gtid的地方)

注:能够通过大概删库时间依然从从库的show slave
status\G上看出主库的binlog地方从后往前找DROP
DATABASE的岗位,假若删库后做了reset
master那就只能从从库的relay-bin-log上找了(切记主库没事别reset
master);

mysqlbinlog    -vvv  –base64-output=decode-rows  relay-bin.000017

 

永利皇宫登录网址 5

透过mysqldump能够形成大家须求的效应。

六、运营从库SQL_THREAD

在从库上实施start slave sql_thread
until的下令,这里须要验证,因为主库已经苏醒,业务跑起来了,那时候开启io_thread未有何意思,所以只用让从库的sql_thread线程重放DROP
DATABASE早前的职业就行。

root@localhost[{none}]>start slave sql_thread until
sql_before_gtid=’fb1f83af-1915-11e8-811b-000c29c4d77d:2343′;

开发银行slave,而且让从库gtid停在主库drop
database操作以前一个gtid就可以,再还原到主库就能够至时投入使用,还不会产生数据遗失。

 

永利皇宫登录网址 6

管教从库executed_gtid_set到了我们before的前叁个值就足以备份了,然后dump那份数据苏醒主库,当然假诺从库品质不错的话能够盘算应用端修改连接,那样速度越来越快一些。

但相比较辛劳的就是,要作保临盆的实时性,删库后立马在主库上还原了前头用来过来从库的备份文件,那就决然会诱致中间数据错失。

 

七、数据相比还原

那时候一定要采纳用事前用于搭建从库的备份再恢复生机多少个库,再用pt-table-checksum比较主库和回复库,从库和回复库不意气风发致的数据,用pt-table-sync生成对应语句。然后手工业把数量补进系统中。

对比1:主库:备份数据恢复生机的库—->目的:找到主库在删库之后接收又写入了什么样数据。

对比2:从库:备份数据恢复生机的库—->指标:找到备份数据之后,删库在此以前运用在主Curry写了怎么样数据。

因为量不是相当大,手工业比较一下就行,当然数据复苏的坑也会有广大,不过基本上都被研究开发填了。

 

总结:

第风华正茂轮遇到删库情状依然多少蒙,幸而主库用的是GTID找binlog日志中的地点相对轻便一点。此次恢复生机最幸运的正是幸而从库卡在靠前的岗位,要否则就是有了从库,数据也会被删了,苏醒起来相对更麻烦些。

对于gtid的上升,课上吴炳锡先生都讲过,不过少年老成上手如故慢了几拍,依然要透超过实际战多练习加深手感制止在实际情状下懵逼。

最终极其感激:知数堂叶金荣先生和吴炳锡先生在故障产生时给予的相助和补助。

转发请证明出处

当前主库上的情事(3301):

永利皇宫登录网址 7

[zejin] 3301>show global variables like 'gtid_executed';
+---------------+-------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------+
| gtid_executed | a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-15 |
+---------------+-------------------------------------------+
1 row in set (0.00 sec)

[zejin] 3301>show global variables like 'gtid_purged';
+---------------+-------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------+
| gtid_purged | a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-13 |
+---------------+-------------------------------------------+
1 row in set (0.00 sec)

永利皇宫登录网址 8

 

 

 

step1:用mysqldump做贰个全备

mysqldump –all-databases –single-transaction –triggers –routines
–events –host=127.0.0.1 –port=3301 –user=root –password=123 >
dump3301.sql

 

开荒dump4301.sql我们能够见到如下语句:

SET @@GLOBAL.GTID_永利皇宫登录网址 ,PURGED=’a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-15′;

此值即为master3301上gtid_executed的值。

 

step2:全新运转二个新的库3303,注目的在于安顿文件中配置enforce_gtid_consistency及gtid_mode=on

永利皇宫登录网址 9

mysqld_safe --defaults-file=/home/mysql/my3303.cnf &
此时新库3303上的状态应该是这样的:

[(none)] 3303>show global variables like 'gtid_executed';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_executed | |
+---------------+-------+
1 row in set (0.01 sec)

[(none)] 3303>show global variables like 'gtid_purged';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_purged | |
+---------------+-------+
1 row in set (0.00 sec)

永利皇宫登录网址 10

 

 

step3:导入备份文件并查阅意况值:

永利皇宫登录网址 11

mysql -uroot -h127.0.0.1 -p123 -P3303 < dump3301.sql
[(none)] 3303>show global variables like 'gtid_executed';
+---------------+-------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------+
| gtid_executed | a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-15 |
+---------------+-------------------------------------------+
1 row in set (0.02 sec)

[(none)] 3303>show global variables like 'gtid_purged';
+---------------+-------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------+
| gtid_purged | a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-15 |
+---------------+-------------------------------------------+
1 row in set (0.00 sec)

永利皇宫登录网址 12

 

 

 

step4:做主从change语句

永利皇宫登录网址 13

[zejin] 3303>change master to master_host='192.168.1.240',master_port=3301,master_user='repl',master_password='123',master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

[zejin] 3303>start slave;
Query OK, 0 rows affected (0.00 sec)

[zejin] 3303>show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.240
                  Master_User: repl
                  Master_Port: 3301
                Connect_Retry: 60
              Master_Log_File: binlog57.000014
          Read_Master_Log_Pos: 194
               Relay_Log_File: zejin240-relay-bin.000002
                Relay_Log_Pos: 365
        Relay_Master_Log_File: binlog57.000014
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 194
              Relay_Log_Space: 575
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 3301
                  Master_UUID: a97983fc-5a29-11e6-9d28-000c29d4dc3f
             Master_Info_File: /home/mysql/I3303/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-15
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

永利皇宫登录网址 14

 

现今截至实现了参预生龙活虎台新的slave的GTID主从境遇。

 

 

如果我们日前享有少年老成主带两从的条件:

master(3301)

slave(3302)

slave(3303)

 

网站地图xml地图