跳至主要內容

Klustron RCR远程集群复制

Klustron大约 6 分钟

Klustron RCR远程集群复制

注意:

如无特别说明,文中的版本号可以使用任何已发布版本的版本号代替。所有已发布版本详见:Release notes

本文目标:

本文假设使用者在试验前已熟悉如何在Klustron数据库中创建集群。在接下来的内容中,首先创建RCR服务主备集群数据库,检查RCR服务主备集群数据库运行状态;在RCR主集群数据库创建数据表,并插入数据,然后在RCR备集群数据库验证创建的表和插入的数据已同步到备集群数据库;在RCR主集群数据库对数据表做update和delete操作,然后在RCR备集群数据库验证主集群数据库的update和delete操作的数据都同步到备集群数据库,并将过程与步骤进行详细说明。该文中主要的测试过程都是通过XPanel控制台完成。

所有的测试都是通过XPanel控制台和PostgreSQL客户端连接数据库集群。XPanel服务安装的服务器IP是192.168.56.112。

01 需求背景

Klustron分布式数据库为了支持集群同城/跨城实现高可用性,支持用户在同城/异地的备用机房建立另一个Klustron集群(备集群)与主城Klustron集群(主集群)建立RCR (remote cluster replication)关系(主集群和备集群合称为主备集群),实现Klustron集群层面的数据更新实时同步。

02 功能概览

当主机房整体不可用时,用户的业务系统可以自动切换到Klustron在备机房的备份集群继续对外提供服务。如果备机房在同城,则DBA可以配置主备集群同步复制,因此切换后可以确保不丢失任何数据;如果备集群在异地机房,则考虑到网络延时较大,通常用户会设置为主备集群做异步复制。这样,一旦主机房失效,则切换到Klustron备集群后,可能会丢失一些最新的数据更新。

03 部署架构

Klustron企业版cluster_mgr组件负责创建和维护RCR集群间复制关系。Klustron在cluster_mgr提供API接口,并且在XPanel 提供GUI,供用户管理和维护RCR复制关系。用户DBA需要在备用机房创建备集群,并且使用RCR配置管理功能配置好RCR集群复制关系。用户的业务系统需要探测主集群或者主机房的可用性,在探测到主集群失效时自动切换到备集群。

更多信息详见:Klustron RCR feature introduction and usage example

04 创建集群

在能访问192.168.56.112的机器上打开浏览器,输入地址:http://192.168.56.112:18080/KunlunXPanel/#/login?redirect=%2Fdashboard

登录后首页显示如下:

创建一个集群,名称为“Cluster_A”, 该集群的计算节点IP为:192.168.56.112,服务端口为:47001。存储分片数量为1个,存储主节点IP为:192.168.56.113,服务端口为:57003,57005,57007

4.1 点击“集群管理”、“集群列表”,集群列表界面点击“新增”按钮。

4.2 新增集群,指定业务名称

4.3 选择存储节点和计算节点

4.4 新建的集群开启备份加密

4.5 新建集群概览信息

4.6 点击“确认”,查看创建集群任务的完成情况。

4.7 使用同样的方法创建Cluster_B集群,创建配置好后,查看集群Cluster_A和Cluster_B的运作状态如下

05 创建RCR服务

5.1 点击“RCR服务”,然后点击“新增RCR”

5.2 在新增RCR界面中,主元数据选择相应主集群和备元数据选择相应备集群,点击“确认”

5.3 完成创建RCR服务

5.4 查看RCR服务运作状态信息

5.5 查看Cluser_A集群设置,显示“该集群已建立RCR关系”

5.6 查看Cluser_B集群设置,显示“该集群已建立RCR关系”

06 测试 RCR 主备集群数据同步

6.1 打开一个连向192.168.56.112的ssh终端窗口,以kunlun用户身份登陆该主机,然后用PostgreSQL客户端连接RCR主集群数据库,创建测试表,并插入测试数据,相应的指令:

[kunlun@kunlun1 ~]$ psql -h 192.168.56.112 -p 47001 -U abc postgres
CREATE TABLE "public"."product" (
  "pro_id" int8 primary key,
  "pro_name" varchar(100),
  "pro_type" varchar(100),
  "price" int8
);

insert into product (pro_id,pro_name,pro_type,price) values (10001,'ipad','padnote',4500);
insert into product (pro_id,pro_name,pro_type,price) values (10002,'ipad8','padnote',6000);
insert into product (pro_id,pro_name,pro_type,price) values (10003,'ipone','phone',8000);
insert into product (pro_id,pro_name,pro_type,price) values (10004,'ipone14','phone',8800);
insert into product (pro_id,pro_name,pro_type,price) values (10005,'notebook','computer',10000);
insert into product (pro_id,pro_name,pro_type,price) values (10006,'notebook2','computer',12000);
select * from product;

输出信息显示如下:

6.2 打开一个连向192.168.56.212的ssh终端窗口,以kunlun用户身份登陆该主机,然后用PostgreSQL客户端连接RCR备集群数据库,验证在主集群数据库创建的表和插入的数据同步到备集群数据库上

[kunlun@kunlun1 ~]$ psql -h 192.168.56.212 -p 47001 postgres

select * from product;

从测试结果验证主集群数据库上创建的表和插入的数据都已同步到备集群数据库。

6.3 打开一个连向192.168.56.112的ssh终端窗口,用PostgreSQL客户端连接RCR主集群数据库,然后执行update操作

[kunlun@kunlun1 ~]$ psql -h 192.168.56.112 -p 47001 -U abc postgres
select * from product;
update product set price=9000 where pro_id=10002;
update product set price=8500 where pro_id=10003;
update product set price=9800 where pro_id=10004;
select * from product;

6.4 打开一个连向192.168.56.212的ssh终端窗口,用PostgreSQL客户端连接RCR备集群数据库,验证在主集群数据库上对数据的update操作同步到备集群数据库上

[kunlun@kunlun1 ~]$ psql -h 192.168.56.212 -p 47001 postgres
select * from product;

从测试结果验证主集群数据库上对数据的update操作都已同步到备集群数据库。

6.5 打开一个连向192.168.56.112的ssh终端窗口,用PostgreSQL客户端连接RCR主集群数据库,然后执行delete操作

[kunlun@kunlun1 ~]$ psql -h 192.168.56.112 -p 47001 -U abc postgres
select * from product;
delete from product where pro_id=10001;
delete from product where pro_id=10005;
select * from product;

6.6 打开一个连向192.168.56.212的ssh终端窗口,用PostgreSQL客户端连接RCR备集群数据库,验证在主集群数据库上对数据的delete操作同步到备集群数据库上

[kunlun@kunlun1 ~]$ psql -h 192.168.56.212 -p 47001 postgres
select * from product;

从测试结果验证主集群数据库上对数据的delete操作都已同步到备集群数据库。

至此,RCR服务主备集群配置及数据同步测试完成。

END