暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

分布式事务数据库HotDB替换数据库中间件MyCAT最佳实践方案

热璞数据库 2021-07-01
3477
不久前,就数据库中间件MyCAT为何要替换成分布式事务数据库HotDB与大家一起进行了详细解读,附上已整理成文本的链接:https://www.modb.pro/db/49836,感兴趣或还没看过的伙伴,可手动复制链接进行查阅~

接上篇,今天重点谈谈分布式事务数据库HotDB替换数据库中间件MyCAT最佳实践方案

数据库产品替换须经历:

  • 与MyCAT的数据分片算法兼容性校验、数据一致性校验;
  • 与生产系统的功能集成测试、性能集成测试以及稳定可靠测试。
生产环境分布式数据库数据分片算法兼容校验:
注:HotDB需要与MyCAT配置成相同的数据分片规则,验证数据分片算法的兼容性。
生产环境分布式数据库MyCAT的数据一致性校验:
一致性校验维度
检验方式
全局表数据一致性
通过HotDB管理界面中全局表一致性检测功能进行检测与自动修复。
主备数据一致性
借助HotDB管理界面主备数据一致性检测定位数据不一致的具体位置,进行人工修复。
表结构一致性
借助HotDB管理界面表结构一致性检测定位数据不一致的具体位置,进行人工修复。
全局序列唯一
自动查看和人工修复
生产环境分布式数据库的数据备份导入分布式事务数据库HotDB功能集成测试:
HotDB的性能集成测试,验证性能稳定性,需要验证包含分片表插入性能测试、分片表查询性能测试、更新性能测试、全局表插入性能测试等。同时集成测试验证是否与系统业务完全兼容,满足系统的需求。
生产环境分布式数据库的数据备份导入分布式事务数据库HotDB稳定可靠测试环境:

计算节点高可用(HA版)

用例名称分布式数据库服务高可用验证
权重核心(基础,核心,扩展)
测试目的测试分布式数据库的自身高可用
前提条件
1.分布式数据库部署并启动;
2.测试期间制造一定的压力。

测试步骤

1.配置好分布式数据库的高可用;
2.自造测试压力;
3.分别使用KILL,断网和停电的方式造成分布式数据库不能提供服务;
4.观察备库是否开始提供服务

预期结果

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.分布式事务数据库部署集群模式并启动;
2. 存在名为customer(账户表)的水平分片表,且表中已存在2000万行数据;
3. 利用benchmark对分布式事务数据库服务计算节点的customer分片表持续发起4并发select的操作。

测试步骤

1. 观察集群状态;
2. 使用KILL-9方式使分布式事务数据库服务的一个primary计算节点服务停止(kill -9 xxxx);
3. 观察计算节点集群状态;可通过查看管理平台拓扑图的方式(管理平台-监控-智能拓扑);
4. 观察业务状态。

预期结果

1. 分布式事务数据库HotDB Server的primary节点5秒心跳超时,新计算节点发起选举,毫秒级选举成功;

2. primary节点上的业务中断并报错直到该计算节点退出集群,时间在6秒左右,secondary节点不受影响,能够继续提供服务,且能够在恢复的计算节点观察到业务流量。

测试结果

测试结果给出结果等级:

1.符合预期   2.需改进  3.部分符合预期  4.不符合预期

存储节点高可用

用例名称存储节点高可用验证

权重

核心(基础,核心,扩展)
测试目的
1.测试分布式数据底层数据库集群的高可用;
2.测试单个数据库节点故障时,对整个分布式数据库服务的影响。
前提条件
1.分布式数据库部署并启动;
2.底层数据库搭建高可用。
测试步骤

1.确认底层数据库已经搭建高可用;

1.1在正常复制情况下:模拟数据库故障(采用kill -9方式),造成底层数据库不能提供服务;观察应用服务是否受到阻塞;
1.2在复制存在延迟的情况下:模拟数据库故障(采用kill -9方式),造成底层数据库不能提供服务;观察是否切换;
1.3在复制已经断开情况下:模拟数据库故障(采用kill -9方式),造成底层数据库不能提供服务;观察是否切换;
1.4将单个数据节点置为不可用,观察整个集群的服务情况。
预期结果

1.正常切换;2.步骤2正常切换;

3.步骤3不会切换;

4.当单个数据节点不可用时,与该节点有关的逻辑库不可用。

测试结果

测试结果给出结果等级:

1.符合预期   2.需改进  3.部分符合预期  4.不符合预期

分布式数据库配置数据高可用

用例名称分布式数据库高可用

权重

核心(基础,核心,扩展)
测试目的
测试分布式数据库高可用功能
前提条件
1.分布式数据库部署并启动;
2.配置分布式数据库配置数据高可用。
测试步骤

1.采用KILL,断网,删除文件和断电等方式(根据配置数据保存形式决定)造成分布式数据库正在使用的配置不能提供服务;

2.观察分布式数据库是否受影响,造成业务不可用;
3.是否使用了配置数据的备份。
预期结果

1.正常切换;

2.步骤2正常切换;

3.步骤3不会切换;

4.当单个数据节点不可用时,与该节点有关的逻辑库不可用。

测试结果

测试结果给出结果等级:

1.符合预期   2.需改进  3.部分符合预期  4.不符合预期

本文由“壹伴编辑器”提供技术支持

下面以实际案例,验证上述方案的可行性及有效性
  • 客户:某国有控股银行
  • 项目:银行业务系统HotDB替换MyCAT上线运行

上线前验证及准备

1. F5 +VIP +HotDB 整个流程(HotDB可用之前部署的测试环境)——(需客户方配合);

2. HotDB 配置

(1) 只部署HotDB(高可用)  数据源添加访问用户,部署HotDB backup;

(2) 部署HotDB(高可用)+数据源(版本5.7.18)。

3. MyCAT与HotDB是否一台服务器 ;

4. 数据源是否一台机器;

5. 选择方案2需要提前确认3、4,提前准备服务器资源。

 

实施阶段:

  • 部署架构

说明:

HotDB采用主备部署的方式,提供数据库服务的高可用。主备部署的方式,能在主HotDB宕机的情况下,备HotDB能继续提供数据服务,不影响业务系统。

MySQL数据节点,保持现有的MySQL数据库架构;
  • 服务器网络

  1. 线上环境,F5服务器网络与HotDB服务器的网络、MySQL服务器的网络必须在同一个网段。若MySQL服务器是在192.168.66.0/24的网段,则HotDB服务器的网络与应用服务器的网络也要在此网段,还需为HotDB提供一个同网段的虚拟IP;

  2. 端口要求 ——(需客户方配合);

  3. 中间间服务器开通:3322,3323 ,3324 ,3325,3306 ;

  4. 数据源开通:3306-3340。

    以上端口要保证在当前平台中中间件和数据源服务器之间互通。

  • 软件环

  1. 操作系统:x86_64 CentOS6.x;
  2. HotDB-SERVER:HotDB-2.4.7;
  3. JAVA运行环境:JDK1.7.80;
  4. 高可用软件:keepalived-1.2.13;
  5. MySQL数据库:
  6. HotDB配置库MySQL使用MySQL-5.6.34-1.el6.x86_64;MySQL数据节点使用5.7.18。
  • 中间件服务器与MySQL服务器时间同步

为确保业务功能正常,数据的准确性,需将各MySQL数据节点所在的服务器进行同时间同步。可使用内网的NTP服务器;若内网没有NTP服务器,则可在HotDB上启用NTP服务,MySQL服务器同步HotDB服务器的时间即可 (需客户方配合)。
  • 服务器部署与配置

方案1: 复用原有数据节点—— 数据源与节点配置
(1)根据原有线上MyCAT环境的数据节点信息进行配置
拆分表
拆分字段
拆分规则
全局表
TSPDB
TSPDB
ot_increateamt_info
acct_pa
sharding-by-murmur-increateamt
ft_domainstdctrl
ot_token_info
token_id
sharding-by-murmur-token
ft_limitstdctrl
ft_param
ft_tr_domainstdctrl
ft_tr_info
拆分表
拆分字段
拆分规则
全局表
EPCCDB
EPCCDB
ot_cust_info
TOKEN_ID
sharding-by-murmur-token-cust
ft_jjk_bin
ft_merchant
ot_cust_auth_info
ft_mer_feectrl
ft_mer_settlefeectrl
ft_trmerrelation
ft_param
ft_djk_bin
ft_bank_org
ot_serial_num_info
ft_error_code
esb_card_file

     (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';

(3)部署HotDB_bckup
注:参照原有MyCAT的分片信息进行配置,保证切换到HotDB后,分片数据能够正常访问。
线上MyCAT拆分规则:一致性hash分片(murmur)。经过验证数据落点不一致,无法直接复用
方案2:   重新部署HotDB集群
(1)部署HotDBHotDB(包括数据节点)
可参考部署手册(https://www.hotdb.com/docs):需要提前准备好集群环境。
(2)创建分片规则
参照线上MyCAT 环境分片规则,HotDB建议使用AUTO_CRC32。
(3) 表信息
拆分表
拆分字段
拆分规则
全局表
TSPDB
TSPDB
ot_increateamt_info
acct_pa
自动拆分
ft_domainstdctrl
ot_token_info
token_id
自动拆分
ft_limitstdctrl
ft_param
ft_tr_domainstdctrl
ft_tr_info
拆分表
拆分字段
拆分规则
全局表
EPCCDB
EPCCDB
ot_cust_info
TOKEN_ID
自动拆分
ft_jjk_bin
ft_merchant
ot_cust_auth_info
ft_mer_feectrl
ft_mer_settlefeectrl
ft_trmerrelation
ft_param
ft_djk_bin
ft_bank_org
ot_serial_num_info
ft_error_code
esb_card_file
  (4)   确认HotDB集群访问正常(VIP,应用用户权限)
需要确保F5 访问VIP正常,应用连接用户正常,权限正常。——(需客户方配合)。
 (5)   停止应用,确认无应用连接,备份MyCAT集群
备份数据库数据(MyCAT导出)——通过MyCAT导出数据(两个逻辑库TSPDB 、EPCCDB)
表信息备份:

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.sq‍‍‍‍l

判断数据是否正确导出:

导出文件最后输出下面内容

-- 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   

6. 数据校验
针对此次迁移情况,两个逻辑库,总共20张表,数据量在1G ,可通过select count(*) from table_name 的方式进行数据校验,验证数据是否成功导入。
  • 应用切换到HotDB ——(需客户方配合)

切换步骤:
  1. 停止应用程序;
  2. 备份数据库数据(1、MyCAT导出,2、每个数据节点数据)与(F5)配置;
  3. 在应用系统中将MyCAT的连接信息改为HotDB(VIP)的连接信息(可提前修改好);
  4. 启动应用程序。
切换到HotDB后,要观察应用程序日志与HotDB日志,确保应用程序启动成功,没有异常信息。
  • 上线后的功能测试

  1. 成功切换到HotDB后,验证系统各个业务功能是否正常;
  2. Hotdb日常监控,备份策略,慢日志监控。

备份策略:

使用HotDB自动备份功能,上线之后立即进行一次全量备份,后期以周为单位每周六凌晨进行一次全量备份,每天进行一增量备份。

  • 应急方案   

1.数据备份
系统上线前,分别通过MyCAT与对各数据节点数据库进行备份与各应用服务器的应用配置进行备份。
2.紧急情况处理
若上线后,系统出现问题;在两小时内未能处理好的,根据情况,将系统回退到初始状态(MyCAT环境):若数据库数据产生问题,则还原数据节点的数据备份,若没产生影响,则不还原。
由于本方案并不破坏原有的架构,可直接通过修改应用连接信息,重新指向MyCAT环境即可。
  • 上线之后问题处理

  1. 在上线之后出现应用访问错误,例如页面功能无法实现,数据无法查询。遇到此类问题有可能是sql兼容性问题,需要应用修改相关sql(兼容性测试已做)。
  2. 假如遇到无法修复问题需要切换到mMyCAT,需要重新制定HotDB迁移到MyCAT方案。

  3. 紧急联系人
正式上线时,热璞团队技术人员在现场配合,确保系统上线成功。
 
最后,我们将在迁移的过程中常见问题,整理成了FAQ,  大家若有其他的问题欢迎在下面给我们留言,我们会认真整理并回复。
1、数据分片算法不兼容怎么办?
重新设置分片规则,将MyCAT中数据导出后重新导入HotDB。此过程无需应用改造。

2、数据校验不满足如何办?

通过HotDB一致性检测及修复功能配合人工进行修复。

3、MySQL数据源是否重新安装部署?

无需重新部署。在迁移过程中将数据导出后,检查MySQL数据源配置,针对部分有问题的数据源进行配置修改并重启。

4、是否停机维护,及停机维护时长?

需要停机,具体维护时长看数据量大小。

内容这么棒,赶紧扫码关注我们吧

最后修改时间:2021-07-01 11:41:15
文章转载自热璞数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

TA的专栏
DBA
收录5篇内容
HotDB专栏
收录0篇内容