目录

迁移拓扑图

业务方案沟通

相关知识传送门

准备工作

MGR数据迁移


迁移拓扑图

例子中的场景是 M-S 3305 转到 G-R 3306

业务方案沟通

1、迁移前检查 

a. 表必须使用Innodb引擎

b. 表必须有主键或者唯一索引

c.自增ID非连续,自增列的起始值和步长不是1,业务逻辑不能依赖自增

d. 不使用 CREATE TABLE … SELECT语法

e. 在一个事务中 CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE

f. 在一个事务中或语句中同时更新事务和非事务表,比如在一个事务中更新 innodb表和myisam表。要更新的所有非事务表是临时表除外

g.对MGR集群多机房部署

h.不使用 select xxx for update 语法

2、版本升级到MySQL 5.7

a. 升级MySQL从库实例,通知业务上线 (DBA)

b. 观察一周高版本从库是否正常使用 (业务)

c. MySQL 主库切换到高版本实例。验证写,并观察一段时间 (DBA &业务)

d. 验证没问题后,端口全部实例升级 (DBA)

e. GTID 开启(DBA)

注:

a. 升级将使用滚动升级的方式,5.5升级到5.6,5.6升级到5.7

b. 升级时会保留老版本MySQL实例并保持同步。若遇到不兼容或者其他问题可以快速回滚

c. 升级时若发现语法不兼容,联系DBA修改语法限制

3、MGR 迁移

a.主从集群与MGR集群搭建双向同步(DBA)

b.将读切至新集群验证是否正常(业务方)

c.将写切至新集群(业务方)

d.观察一段时间,确认所有业务迁移至新集群(DBA&业务)

e.断开双向复制 (DBA)

注:

1. 需要将数据库域名配置为新集群域名

2. 做数据迁移时,会保证两个集群为双向复制,老集群若有写入会同步到新集群中,且有任何问题可以回滚至老集群,但双向复制为中间状态,一旦开始写迁移,不可长久保持双主状态,需尽快把所有业务迁移。

3.3305迁移MGR 方案图如上

4.业务逻辑尽量不使用select xxx for update,由于锁不在组员内共享,很可能会导致死锁

相关知识传送门

限制与环境要求

https://blog.csdn.net/nicolevv/article/details/90716555

GITD 开启

https://blog.csdn.net/nicolevv/article/details/90716607

准备工作

1、主键检查

select table_schema,table_name from information_schema.tables where (table_schema,table_name) not in(select distinct table_schema,table_name from information_schema.columns where COLUMN_KEY='PRI' ) and table_schema not in ('sys','mysql','information_schema','performance_schema');

2、innodb 引擎检查

select table_schema,table_name from tables where table_schema not in ('information_schema','mysql','performance_schema') and ENGINE != 'innodb';

3、语法确认

  • 业务逻辑不能依赖自增
  • 不使用 select xxx for update 语法
  • 不使用 CREATE TABLE … SELECT语法
  • 在一个事务中 CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE
  • 在一个事务中或语句中同时更新事务和非事务表,比如在一个事务中更新 innodb表和myisam表。要更新的所有非事务表是临时表除外

4、参数修改,在下面的流程里的参数修改部分有写

MGR数据迁移

1、规划自增ID以及端口号

  • 这里步长不要小于节点个数

    • offset 1-~5
    • 步长 7
    • 老主库也要修改自增
  • 确认没有冲突端口
    • netstat -anltp|grep -E "$por|$slave_port"
    • port_status.py $port  /  port_status.py $slave_port
    • 端口号 3306 复制端口号 13306
IP auto_increment_offset auto_increment_increment 角色 机房

x.x.x.1

1 7 M-S主库 A
x.x.x.2 2 7 双向节点 C
x.x.x.3 3 7 GR组员 A
x.x.x.4 4 7 GR组员 A
x.x.x.5 5 7 GR组员 B
x.x.x.6 6 7 GR组员 B

2、停mb从库实例(在这之前可以先做数据一致性校验)  (这个从库上的gtid_set 一定要与主库保证一致,为了后面做双主的时候不修改gtid_purged值,自动找位点)

3、从规划中的五个节点的机器上拷贝

rsync --password-file=/etc/rsyncd.secrets.passfile -avP --progress  --exclude auto.cnf dba@xx.xx.xx.xx::data1/mysql3306_expanding /data1/

4、修改配置文件

# Group Replication

#server-id 修改
transaction-isolation = READ-COMMITTED
binlog_checksum = NONE
master_info_repository = TABLE
relay_log_info_repository = TABLE
plugin-load = group_replication.so
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = "05bf1a54-82d3-11e9-b604-c81f66d12345"
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = 'x.x.x.2:13306'
loose-group_replication_group_seeds = 'x.x.x.2:13306,x.x.x.3:13306,x.x.x.4:13306,x.x.x.5:13306;x.x.x.6:13306,'
group_replication_ip_whitelist = '10.0.0.0/8'
loose-group_replication_bootstrap_group = OFF
loose-group_replication_single_primary_mode = OFF # Trun off Single primary
loose-group_replication_enforce_update_everywhere_checks = ON # Multi-Primary Mode
loose-group_replication_transaction_size_limit = 52428800 # 5.7.19 Configures the maximum transaction size in bytes which the group accepts
# loose-group_replication_unreachable_majority_timeout
report_host = 'x.x.x.2'
report_port = 3306

# Multi Primary Mode
auto_increment_offset = 2
auto_increment_increment = 7

5、授权

mv mysql3305/ mysql3306

useradd  -r -g mysql -M -s /sbin/nologin my3306

chown -R my3306: /data1/mysql3306/

6、启动实例

7、其他机器重复步骤 3、4(修改参数)、5、6

8、做拷贝的mb节点起来,回归M-S集群

9、双向复制实例,x.x.x.2

start slave ; #打开主从的复制通道

10、GR开启

第一个实例:

SET GLOBAL group_replication_bootstrap_group = ON ;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group = OFF ;

新加入成员:

change master to master_user = 'xxxxxx',master_password='xxxxxx' for channel 'group_replication_recovery';

START GROUP_REPLICATION;

11、搭建双主(M-S 主库指向 GR 双向复制节点,gtid点位一致

change master to master_host='x.x.x.1',master_port=3306,master_auto_position =1;

12、做数据一致性校验,验证复制pt-table-sync --print --sync-to-master h=x.x.x.2,u=root,p='123',P=3306 --verbose --wait=10 --transaction --engines=innodb  --recursion-method=processlist --check-triggers --foreign-key-checks -unique-checks --charset=utf8 >3306.log

SELECT * FROM performance_schema.replication_group_members;

Amazing!

MySQL 主从架构在线热迁移MGR 方案相关推荐

  1. MySQL 主从架构配置详解

    原文http://www.codeceo.com/article/mysql-master-slave.html 无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为 ...

  2. 一文讲清,MySQL主从架构

    MySQL在生成环境中,如果是单机版的部署方式,就会有很大的可用性问题,MySQL提供了一套主从复制的架构,以提高其可用性. MySQL主从复制架构,就是部署两台机器,一台机器上部署的MySQL是ma ...

  3. 使用Innobackupex快速搭建(修复)MySQL主从架构

    2019独角兽企业重金招聘Python工程师标准>>> 使用Innobackupex快速搭建(修复)MySQL主从架构 MySQL的主从搭建大家有很多种方式,传统的mysqldump ...

  4. linux mysql主从半同步_centos下安装mysql主从架构(半同步/多实例)

    centos下安装mysql主从架构(半同步/多实例) [toc] 简介 本教程会进行mysql一机多实例的安装.mysql主从同步配置.半同步配置 环境 OS: CentOS Linux relea ...

  5. 基于cydia Hook在线热修复补丁方案

    最近的在线热补丁修复的讨论相当激烈,从Xopsed到Dexposed,再到AndFix,再到QQ空间团队的Class补丁.可谓是各有特色.本文讨论的是基于Cydia Hook实现的在线Class热补丁 ...

  6. MySQL 主从架构原理

    MySQL 主从架构原理 一. 主从架构基本原理 上图展示的是 MySQL 的主从切换流程.在 State-1 中,客户端的读写都直接访问节点 A,而节点 B 是 A 的备库,只是将 A 的更新都同步 ...

  7. MySQL主从架构、读写分离、集群相关面试问题

    文章目录 一.MySQL主从同步原理 二.MySQL主从集群面试相关问题 1.全库同步与部分同步 2.GTID同步集群 3.集群扩容与MySQL数据迁移 4.理解半同步复制 5.主从集群与读写分离 6 ...

  8. 高性能Mysql主从架构的复制原理及配置详解

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  9. Linux下MySQL主从架构版本升级(5.7.31->5.7.33)——冷升级

    目录 前言 下载并上传MySQL 停应用 升级从库 停止备份 停止从MySQL 继承旧版本的配置 启动并升级从MySQL 登录并验证slave 关闭slave 升级主库 查看master状态 修改从库 ...

最新文章

  1. Spring Cloud(七)服务网关 Zuul Filter 使用
  2. 全球第五大社交网站,二号员工离职创业,自爆心酸历程!想做10亿美元规模?先活着!...
  3. 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机...
  4. docker omv 防火墙_OpenMediaVault(OMV)配置Docker
  5. python中emuterate用法_跨平台模拟执行 - AndroidNativeEmu实用手册
  6. 专研自动驾驶,深动科技春季招聘启动,含社招和实习
  7. r语言调用python_python如何调用R
  8. 西部动力成功中标围场县政府网站群建设项目
  9. java基础篇---网络编程(TCP程序设计)
  10. .Net Remoting与Web Service
  11. CC2541蓝牙模块间通信设置 蓝牙透传 蓝牙通信程序
  12. 南水北调工程简介及线路图
  13. OpenFOAM 学习笔记
  14. Teardrop代码编程,伪造一个虚假地址的IP包和SOCKET应用实例
  15. 运维中的交换机堆叠是什么
  16. 【面经牛客网整理】度小满一面
  17. iOS归档 反归档 Archiving Unarchiver
  18. 维纳辛钦定理的证明一
  19. CEGUI环境的搭配
  20. Teamcenter服务器未能响应,Teamcenter 开发中的一些问题

热门文章

  1. python面试自我介绍怎么介绍比较好_面试的时候,如何自我介绍?
  2. 58同城字体加密-多套字体文件
  3. 金海佳学C++primer 练习9.28
  4. 安装k8s - 阿里云镜像
  5. calendar 5 android版,calendars 5 安卓
  6. 北京林业大c语言程序设计考试试题,2016年北京林业大学信息学院程序设计语言、数据结构(上机操作)复试笔试最后押题五套卷...
  7. 棋盘游戏(BFS、DFS)
  8. jar包本地能启动但不能在服务器上启动
  9. Unity3D资源管理架构
  10. leetcode:祖玛游戏