【产品名称】
oceanbase私有云版本
【产品版本】
3.2.1
【问题描述】
近期ob项目因为一些硬性要求,所以生产集群需要替换主机
前期准备工作就不赘述了,简单描述就是新机器做好分区划分,软件安装前的检查,添加到ocp机器备用。
下面来介绍下测试过程及问题点
一、 ob替换主机
1、测试
用我们的一套测试环境,与生产基本一致,做替换主机操作的测试
看下数据量和分区数
MySQL [oceanbase]> SELECT /*+READ_CONSISTENCY(WEAK),query_timeout(100000000)*/ → c.tenant_name, → a.svr_ip, → round(sum(a.required_size) / 1024 / 1024 / 1024, 2) table_size_GB → FROM → __all_virtual_meta_table a, __all_virtual_table b, __all_tenant c → WHERE → instr(a.member_list, a.svr_ip)>0 → AND a.tenant_id = b.tenant_id → AND a.table_id = b.table_id → AND b.tenant_id = c.tenant_id → group by c.tenant_name, a.svr_ip → ORDER BY c.tenant_name, a.svr_ip, table_size_GB DESC; ±------------±--------------±--------------+ | tenant_name | svr_ip | table_size_GB | ±------------±--------------±--------------+ | cc | 11.11.11.11 | 296.54 | | cc | 11.11.11.12 | 410.45 | | cc | 11.11.11.21 | 343.63 | | cc | 11.11.11.22 | 363.35 | | cc | 11.11.11.1 | 299.60 | | cc | 11.11.11.2 | 407.38 | ±------------±--------------±--------------+ 6 rows in set (5.41 sec) MySQL [oceanbase]> SELECT /*+READ_CONSISTENCY(WEAK),query_timeout(100000000)*/ → a.svr_ip, → round(sum(a.required_size) / 1024 / 1024 / 1024, 2) table_size_GB → FROM → __all_virtual_meta_table a → WHERE → instr(a.member_list, a.svr_ip)>0 → group by a.svr_ip → ORDER BY a.svr_ip, table_size_GB DESC; ±--------------±--------------+ | svr_ip | table_size_GB | ±--------------±--------------+ | 10.17.248.224 | 453.27 | | 10.17.248.225 | 432.48 | | 10.19.244.223 | 441.15 | | 10.19.244.224 | 444.59 | | 134.84.21.5 | 443.01 | | 134.84.21.6 | 442.74 | ±--------------±--------------+ MySQL [oceanbase]> select svr_ip,zone from __all_server; ±--------------±------+ | svr_ip | zone | ±--------------±------+ | 11.11.11.11 | zone2 | | 11.11.11.12 | zone2 | | 11.11.11.21 | zone1 | | 11.11.11.22 | zone1 | | 11.11.11.1 | zone3 | | 11.11.11.2 | zone3 | ±--------------±------+ 6 rows in set (0.01 sec) MySQL [oceanbase]> select count(1), svr_ip from __all_virtual_meta_table where role=1 group by svr_ip order by 1 desc; ±---------±------------+ | count(1) | svr_ip | ±---------±------------+ | 95638 | 11.11.11.1 | | 95555 | 11.11.11.2 | ±---------±------------+ 2 rows in set (2.21 sec) MySQL [oceanbase]> select tenant_name,primary_zone from __all_tenant; ±------------±------------------+ | tenant_name | primary_zone | ±------------±------------------+ | sys | zone2;zone1;zone3 | | cc | zone3;zone1,zone2 | ±------------±------------------+
替换主机操作比较简单,通过ocp完成,在替换前最好发起一次合并,如果有租户主zone在需要替换机器上,记得切主。
测试的时候发现,一台机器整个替换过程用时10小时,明显不符合窗口时间
2、调整
先放调整参数
alter system set data_copy_concurrency=100; alter system set server_data_copy_in_concurrency=1000; alter system set server_data_copy_out_concurrency=1000; alter system set major_freeze_duty_time=‘04:00’; --该参数是因为原合并定时在窗口期,需要提前调整
data_copy_concurrency 用于设置系统中并发执行的数据迁移复制任务的最大并发数。
server_data_copy_in_concurrency 用于设置单个节点迁入数据的最大并发数。
server_data_copy_out_concurrency 用于设置单个节点迁出数据的最大并发数。
该步骤调整均为调整到最大范围,因窗口期间会断掉业务,所以可以调大点
3、效果
调整之后同样的环境替换一台机器花费57分钟,符合窗口要求
可以通过tsar查看流量
调整之前
调整之后我没有截图,流量能打到980M,我们是千兆的网络,所以基本满了
效率提升了十倍
二、 替换备份目录
1、原因
因我们原来的备份nfs磁盘是普通硬盘,还有相关限制,在做数据清理时有问题,使用率一直下不去,所以申请替换闪盘的nfs
2.步骤
首先需要停现有的增量
alter system noarchivelog;
替换nfs挂载磁盘,注意新挂载磁盘的权限属组
替换之后发起转储
alter system minor freeze;
开启归档
alter system archivelog;
检查 --数据量大分区多,完成时间较久,停归档时也要检查,确认stop
select * from cdb_ob_backup_archivelog_summary; --确认doing了才可以发起全备
发起合并
alter system major freeze;
检查
select zone,name,value,info from __all_zone where name =‘merge_status’;
发起全备
alter system backup database;
检查
select * from cdb_ob_backup_progress;
三、心得
细节决定成败,中国厂商自研数据库的道路上,每一步都是自我的进步,我很感谢有这样的机会去做这样的事情。踏入一个新的领域,未知的范围太广,一定跟每个人去积极学习,摄取自己需要的知识补充自己。决定去做了,就要做的更快更好,去尽快的充实自己。
盛年不重来,一日难再晨,及时当勉励,岁月不待人。
行之所向,莫问远方