MySQL 8.0.11 innodb集群运维管理手册之三增加节点

  

MySQL 8.0.11 innodb集群运维管理手册之三增加节点

  

作者方连超

  

假设
innodb集群集群跑了1年,突然某个节点挂掉了,这个时候,日志也已经没有binlog.000001了,如果在线增加一个从库呢,官方给出基于mysqlbackup
的恢复方式,在剩余从库上做备份,在新从库上恢复,这里有些技术点,我忽略了,苦恼很久。

  

创建实验环境:

  
      <李>   

    频繁操作数据写入库,切换四个binlog.flush日志,显示二进制日志
     MySQL 8.0.11 innodb集群运维管理手册之三增加节点“> <br/> <img src=

      李   <李>观察从库日志时间信息
    从库1的binlog和relay-log
     MySQL 8.0.11 innodb集群运维管理手册之三增加节点   
  

 MySQL 8.0.11 innodb集群运维管理手册之三增加节点

  

从库2的binlog和relay-log
 MySQL 8.0.11 innodb集群运维管理手册之三增加节点

  

 MySQL 8.0.11 innodb集群运维管理手册之三增加节点

  

可以看的到,主库切换日志,从库并不进行切换

     <李>   

清理掉第1 2个binglog,再写入一些数据,
<代码>清洗主日志的binlog.000003;

  李   <李>此时一个从库挂掉了,重启主机李   <李>主库继续人工写入数据,发现从库挂掉了,需要添加      

步骤1全量备份:

  
 <代码> mysqlbackup——主机=127.0.0.1——端口=3310用户=备份——密码=$ $ $ $ $ $ $ $——no-history-logging backup-dir=/数据/备份/fullbak——with-timestamp backup-and-apply-log  
  

——no-history-logging因为在从库操作,不能写备份信息到数据库中

  

步骤2:拷贝到新从机恢复从库

  

备份压缩拷贝到从机,并解压

  
 <代码> scp root@192.168.181.105:/数据/备份/fullbak/2018 - 07 - 25 - _14 32 - 32.焦油。广州。
  焦油-xzvf 2018 - 07 - 25 - _14 - 32 - 32. - tar.gz  
  

拷贝活着的从库的配置文件,修改组复制部分的信息

  

步骤3:继续往主库插入数据

  

步骤4:恢复新增实例

  

恢复从库数据库
mysqlbackup——defaults-file=/数据/mysql_3310_test——backup-dir=/conf/my . cnf中所做/数据/备份/fullbak/2018 - 07 - 26 - _20 - 59 - 35 copy-back-and-apply-log

  

步骤5:清理旧信息

  

关闭日志记录:

  
 <代码>设置sql_log_bin=;
  使用mysql
  从slave_relay_log_info删除;
  从slave_master_info删除;
  设置sql_log_bin=,  之前
  

注意这里不能执行
重置主和重置从

删除数据库mysql_innodb_cluster_metadata

  

重启一次数据库,应该没有报错了

  

步骤6壳删除和增加实例

  

强制删除挂掉的实例
<代码> cluster.removeInstance (root@mysql4:3310,{力:1})

  

增加实例
<代码> cluster.addInstance (root@mysql4:3310)

  

踩坑记录

  

组复制的增加成员方式和innodb集群集群增加成员方式不同,

  
      <李>   

    。组复制有复位主和重置从操作,还包括了设置gtid的操作
    设置@@GLOBAL.GTID_PURGED=' 80 d2433f - 8 f24 - 11 - e8 a8df - 000 c29f1584d: 123;

      李   <李>。Innodb集群,不能做重置的主人,因为记录了备份库执行到的gtid值,
    应该使用mysql壳删除和增加实例   

MySQL 8.0.11 innodb集群运维管理手册之三增加节点