接上篇,今天重点谈谈分布式事务数据库HotDB替换数据库中间件MyCAT最佳实践方案。
数据库产品替换须经历:
与MyCAT的数据分片算法兼容性校验、数据一致性校验; 与生产系统的功能集成测试、性能集成测试以及稳定可靠测试。

计算节点高可用(HA版)
用例名称 | 分布式数据库服务高可用验证 |
权重 | 核心(基础,核心,扩展) |
测试目的 | 测试分布式数据库的自身高可用 |
前提条件 | |
测试步骤 | |
预期结果 | 1.实现切换主备时没有阻塞; 2.分布式数据库备库成功提供服务。 |
测试结果 | 测试结果给出结果等级: 1.符合预期 2.需改进 3.部分符合预期 4.不符合预期 |
计算节点高可用-secondary节点故障(集群版)
测试项目 | 分布式事务数据库服务计算节点高可用验证。 |
测试目的 | 测试分布式事务数据库计算节点集群中一个secondary计算节点故障时的高可用策略。 |
前置条件 | 1.分布式事务数据库部署集群模式并启动; 2.存在名为customer(账户表)的水平分片表,且表中已存在2000 万行数据; 3.利用benchmark对分布式事务数据库服务计算节点的customer分 片表持续发起4并发select的操作。 |
测试步骤 | 1.观察集群状态; 2.发起压力; 3.使用KILL-9方式使分布式事务数据库服务的一个secondary节 点服务停止(kill -9 xxxx); 4.观察计算节点集群状态;可通过查看管理平台拓扑图的方式 (管理平台-监控-智能拓扑),观察业务状态。 |
预期结果 | 步骤一中,分布式事务数据库HotDB Server能够自动维护集群状态,secondary节点故障后,其余计算节点正常提供服务,故障的secondary节点自动被剔除集群,业务不受影响,除了故障节点外,其他计算节点均有流量。 |
计算节点高可用-primary节点故障
测试项目 | 分布式事务数据库服务计算节点高可用验证 |
测试目的 | 测试分布式事务数据库计算节点集群中primary节点故障时的高可用策略。 |
前置条件 | |
测试步骤 | |
预期结果 | 1. 分布式事务数据库HotDB Server的primary节点5秒心跳超时,新计算节点发起选举,毫秒级选举成功; 2. primary节点上的业务中断并报错直到该计算节点退出集群,时间在6秒左右,secondary节点不受影响,能够继续提供服务,且能够在恢复的计算节点观察到业务流量。 |
测试结果 | 测试结果给出结果等级: 1.符合预期 2.需改进 3.部分符合预期 4.不符合预期 |
存储节点高可用
用例名称 | 存储节点高可用验证 |
权重 | 核心(基础,核心,扩展) |
测试目的 | |
前提条件 | |
测试步骤 | 1.确认底层数据库已经搭建高可用; |
预期结果 | 1.正常切换;2.步骤2正常切换; 3.步骤3不会切换; 4.当单个数据节点不可用时,与该节点有关的逻辑库不可用。 |
测试结果 | 测试结果给出结果等级: 1.符合预期 2.需改进 3.部分符合预期 4.不符合预期 |
分布式数据库配置数据高可用
用例名称 | 分布式数据库高可用 |
权重 | 核心(基础,核心,扩展) |
测试目的 | |
前提条件 | |
测试步骤 | 1.采用KILL,断网,删除文件和断电等方式(根据配置数据保存形式决定)造成分布式数据库正在使用的配置不能提供服务; |
预期结果 | 1.正常切换; 2.步骤2正常切换; 3.步骤3不会切换; 4.当单个数据节点不可用时,与该节点有关的逻辑库不可用。 |
测试结果 | 测试结果给出结果等级: 1.符合预期 2.需改进 3.部分符合预期 4.不符合预期 |
本文由“壹伴编辑器”提供技术支持
客户:某国有控股银行 项目:银行业务系统HotDB替换MyCAT上线运行
上线前验证及准备
1. F5 +VIP +HotDB 整个流程(HotDB可用之前部署的测试环境)— —(需客户方配合);
2. HotDB 配置
(2) 部署HotDB(高可用)+数据源(版本5.7.18)。
3. MyCAT与HotDB是否一台服务器 ;
4. 数据源是否一台机器;
5. 选择方案2需要提前确认3、4,提前准备服务器资源。
实施阶段:
部署架构

HotDB采用主备部署的方式,提供数据库服务的高可用。主备部署的方式,能在主HotDB宕机的情况下,备HotDB能继续提供数据服务,不影响业务系统。
服务器网络
线上环境,F5服务器网络与HotDB服务器的网络、MySQL服务器的网络必须在同一个网段。若MySQL服务器是在192.168.66.0/24的网段,则HotDB服务器的网络与应用服务器的网络也要在此网段,还需为HotDB提供一个同网段的虚拟IP;
端口要求 ——(需客户方配合);
中间间服务器开通:3322,3323 ,3324 ,3325,3306 ;
数据源开通:3306-3340。
以上端口要保证在当前平台中中间件和数据源服务器之间互通。
软件环
操作系统:x86_64 CentOS6.x; HotDB-SERVER:HotDB-2.4.7; JAVA运行环境:JDK1.7.80; 高可用软件:keepalived-1.2.13; MySQL数据库: HotDB配置库MySQL使用MySQL-5.6.34-1.el6.x86_64;MySQL数据节点使用5.7.18。
中间件服务器与MySQL服务器时间同步
服务器部署与配置
(2)数据源上增加HotDB-Server专用的数据源账户
GRANT INSERT, UPDATE, SELECT, DELETE, CREATE, DROP, INDEX, ALTER, SUPER, PROCESS, TRIGGER, REPLICATION CLIENT,REPLICATION SLAVE,Reload ON *.* TO 'hotdb_datasource'@'%' IDENTIFIED BY 'hotdb_datasource';
mysqldump -uroot -proot –h192.168.0.26 –P8066 --default-character-set=utf8 --skip-add-locks --skip-disable-keys --hex-blob --no-create-db --set-gtid-purged=off --skip-opt --create-options --single-transaction --skip-set-charset -d -R -E TSPDB>/backup/createtable/create_tspdb.sql
mysqldump -uroot -proot –h192.168.0.26 –P8066 --default- character-set=utf8 --skip-add-locks --skip-disable-keys --hex- blob --no-create-db --set-gtid-purged=off --skip
-opt --create-options --single-transaction --skip-set-charset -d -R -E EPCCDB>/backup/createtable/create_epccdb.sql
mysqldump -uroot -proot –h192.168.0.26 –P8066 --default-character-set=utf8 --skip-add-locks --skip-disable-keys --hex-blob --no-create-db --set-gtid-purged=off --skip-opt --create-options --single-transaction --skip-set-charset -d -R -E TSPDB>/backup/createtable/create_tspdb.sql
mysqldump -uroot -proot –h192.168.0.26 –P8066 --default-character-set=utf8 --skip-add-locks --skip-disable-keys --hex-blob --no-create-db --set-gtid-purged=off --skip
-opt --create-options --single-transaction --skip-set-charset -d -R -E EPCCDB>/backup/createtable/create_epccdb.sql
导出文件最后输出下面内容
-- Dump completed on ****-**-** **:**:**
double-->decimal
float-->decimal
#sed -i 's/double/decimal/g' 表信息文件
#sed -i 's/float/decimal/g'表信息文件
#sed -i '1i\SET FOREIGN_KEY_CHECKS=0;' data_tspdb.sql
sed -i '$a\SET FOREIGN_KEY_CHECKS=1;' data_tspdb.sql
#sed -i '1i\SET FOREIGN_KEY_CHECKS=0;' data_epccdb.sql
#sed -i '$a\SET FOREIGN_KEY_CHECKS=1;' data_epccdb.sql
#以下可选
#sed -i '/^LOCK TABLES/d' data_tspdb.sql
#sed -i '/^UNLOCK TABLES/d' data_tspdb.sql
#sed -i '/^\/\*/d' data_tspdb.sql
#mysql -uroot -proot –h192.168.0.26 –P3323 -D tspdb < create_tspdb.sql
#mysql -uroot -proot –h192.168.0.26 –P3323 -D epccdb < create_epccdb.sql
#mysql -uroot -proot –h192.168.0.26 –P3323 -D tspdb < data_tspdb.sql
#mysql -uroot -proot –h192.168.0.26 –P3323 -D epccdb < data_epccdb.sql
应用切换到HotDB ——(需客户方配合)
停止应用程序; 备份数据库数据(1、MyCAT导出,2、每个数据节点数据)与(F5)配置; 在应用系统中将MyCAT的连接信息改为HotDB(VIP)的连接信息(可提前修改好); 启动应用程序。
上线后的功能测试
成功切换到HotDB后,验证系统各个业务功能是否正常; Hotdb日常监控,备份策略,慢日志监控。
备份策略:
使用HotDB自动备份功能,上线之后立即进行一次全量备份,后期以周为单位每周六凌晨进行一次全量备份,每天进行一增量备份。
应急方案
上线之后问题处理
在上线之后出现应用访问错误,例如页面功能无法实现,数据无法查询。遇到此类问题有可能是sql兼容性问题,需要应用修改相关sql(兼容性测试已做)。 假如遇到无法修复问题需要切换到mMyCAT,需要重新制定HotDB迁移到MyCAT方案。 紧急联系人

2、数据校验不满足如何办?
通过HotDB一致性检测及修复功能配合人工进行修复。
3、MySQL数据源是否重新安装部署?
无需重新部署。在迁移过程中将数据导出后,检查MySQL数据源配置,针对部分有问题的数据源进行配置修改并重启。
4、是否停机维护,及停机维护时长?
需要停机,具体维护时长看数据量大小。