MySQL主从结构在线迁移至PXC高可用集群的方案(一)

381 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

PXC是 Percona XtraDB Cluster 的缩写,是 Percona 公司推出的MySQL高可用分布式集群方案,其完全兼容原生MySQL,并已在生产环境中有广泛的应用。
本文描述一种快速从MySQL主从结构迁移到PXC方案。

方案概述

假定原数据库结构为MySQL一主一从或一主两从,业务系统支持蓝绿部署。

总体步骤如下:

  1. 先将从库变更为PXC集群的一个或两个节点;
  2. 然后将生产流量全部转到蓝色环境,绿色环境业务应用通过数据库域名连接pxc节点,进行业务验证;
  3. 验证通过后,清理pxc节点业务验证产生的数据,恢复与原主库的主从同步;
  4. 选择某个业务流量低的时间点,停止pxc节点与原主库的主从,将流量转到绿色环境;
  5. 原主库作为pxc节点加入pxc集群,如为一主一从则新增一个仲裁节点或pxc节点,至此完成切换。

该方案具备

  1. 停机时间短(约2分钟)
  2. 充分利用现有主从数据库数据,无需额外导出导入全量数据
  3. 利用现有数据库实例计算资源,极少额外增加资源(1c/2g的仲裁节点或不需要)
  4. 每一步骤都可以快速回退至原方案 的特点,非常适合要求停机时间短、数据量大、资源利用率高的生产环境。

提前准备的工作

  • 检查、确保数据库实例的业务表,均为innodb引擎,且有主键
> use information_schema;
> select table_schema,table_name from TABLES where TABLE_SCHEMA not in ('mysql','information_schema','performance_schema','sys') and ENGINE != "InnoDB";
> select table_schema,table_name from TABLES where TABLE_SCHEMA not in ('mysql','information_schema','performance_schema','sys') and table_name not in (select distinct(TABLE_name) from COLUMNS where TABLE_SCHEMA not in ('mysql','information_schema','performance_schema','sys') and COLUMN_KEY='PRI');
  • 规划TCP端口并放通防火墙 每个实例应该包括以下4类端口,多个实例在同一台主机应规划好端口避免冲突:
端口类型默认端口
mysql3306/tcp
pxc组通信(gc)4567/tcp
pxc增量同步(ist)4568/tcp
pxc全量同步(sst)4444/tcp
  • 关于pxc技术的知识储备

(未完待续)