【Kingbase FlySync】界面化管控平台:3.配置数据库同步之KES->KES
- 部署KES数据库到KES数据库同步服务
- 1.登录KFS管理平台
- 2.开始配置数据节点信息
- (1)配置node1数据节点
- (2)配置node2数据节点
- 3.KFS拓扑图配置
- 4.开始部署
- 5.启动同步程序并查验是否运行正常
- 测试同步
- 1.从node1数据库中导出exam模式并拷贝到node2 /tmp目录下
- 2.将node1传过来的数据导入到node2数据库中
- 3.修改拓扑图配置实现增量搬迁同步
- (1).修改node1节点配置
- (2).修改node2节点配置
- (3).更新同步配置
- (4).启动同步节点
- (5).更新同步配置
- 数据校验
- 1.准备数据
- 2.校验配置
- 3.新建校验任务
- 4.新建调度任务
- 5.执行校验
- 数据自动修复
- 1.新建数据自动修复任务
- 2.再次执行数据校验任务
- 3.查询修复结果
- 配置告警邮件
- 1.告警邮箱配置
- 2.配置告警管理
- 3.错误问题
- (1).邮件发送提示失败
- (2).配置告警提示失败
- 4.邮件告警展示
部署KES数据库到KES数据库同步服务
1.登录KFS管理平台
账号 | 密码 |
---|---|
admin | admin |
user_0017 | Kfs123#$ |
2.开始配置数据节点信息
- 【部署管理】>【节点管理】>【新建】> 【填入相关信息】 >【保存】
- 安装目录:/home/flysync/replicator
(1)配置node1数据节点
点击保存
(2)配置node2数据节点
点击保存
3.KFS拓扑图配置
【部署管理】>【拓扑配置】
4.开始部署
5.启动同步程序并查验是否运行正常
【部署管理】> 【节点管理】>【启动】。
查看服务状态
【部署管理】> 【服务管理】
测试同步
1.从node1数据库中导出exam模式并拷贝到node2 /tmp目录下
[root@node1 ~]# su - kingbase
上一次登录:五 11月 17 18:13:59 CST 2023pts/1 上
[kingbase@node1 ~]$ cd /KingbaseES/V8/Server/bin/
[kingbase@node1 bin]$ ./sys_dump -U flysync -d test -f /tmp/exam.dmp -Fc -n exam
[kingbase@node1 bin]$ scp /tmp/exam.dmp node2:/tmp
kingbase@node2's password:
exam.dmp 100% 16KB 16.3KB/s 00:00
[kingbase@node1 bin]$
2.将node1传过来的数据导入到node2数据库中
[root@node2 ~]# su - kingbase
上一次登录:五 11月 17 15:54:16 CST 2023
[kingbase@node2 ~]$ cd /KingbaseES/V8/Server/bin/
[kingbase@node2 bin]$ ./ksql -Usystem test -c 'create schema exam0017'
CREATE SCHEMA
[kingbase@node2 bin]$ ./sys_restore -Usystem /tmp/exam.dmp -d test -Fc -g exam -G exam0017
[kingbase@node2 bin]$ ksql -U flysync -d test
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=# ALTER TABLE exam01.course RENAME TO course0017;
test=# \d exam0017.*
索引 "exam0017.cno_pk"
栏位 | 类型 | 键值? | 定义
------+--------------+-------+------
cno | numeric(2,0) | 是 | cno
主键(PK),btree, 给数据表 "exam0017.course"
数据表 "exam0017.course"
栏位 | 类型 | 校对规则 | 可空的 | 预设
-----------+----------------------------+----------+----------+------
cno | numeric(2,0) | | not null |
cname | character varying(30 char) | | not null |
clevel | character varying(13 char) | | |
pass_mark | numeric(5,0) | | not null |
索引:
"cno_pk" PRIMARY KEY, btree (cno)
检查约束限制
"pass_mark_ck" CHECK (pass_mark > 0::numeric)
由引用:
TABLE "exam0017.score" CONSTRAINT "cno_fk" FOREIGN KEY (cno) REFERENCES exam0017.course(cno)
索引 "exam0017.id_no_uk"
栏位 | 类型 | 键值? | 定义
-------+----------------------------+-------+-------
id_no | character varying(18 char) | 是 | id_no
唯一的,btree, 给数据表 "exam0017.student"
索引 "exam0017.ino_pk"
栏位 | 类型 | 键值? | 定义
------+--------------+-------+------
ino | numeric(3,0) | 是 | ino
主键(PK),btree, 给数据表 "exam0017.instructor"
数据表 "exam0017.instructor"
栏位 | 类型 | 校对规则 | 可空的 | 预设
-------+----------------------------+----------+----------+------
ino | numeric(3,0) | | not null |
iname | character varying(20 char) | | not null |
title | character varying(30 char) | | |
索引:
"ino_pk" PRIMARY KEY, btree (ino)
由引用:
TABLE "exam0017.score" CONSTRAINT "ino_fk" FOREIGN KEY (ino) REFERENCES exam0017.instructor(ino)
数据表 "exam0017.instructor_history"
栏位 | 类型 | 校对规则 | 可空的 | 预设
----------+----------------------------+----------+----------+------
ino | numeric(3,0) | | |
iname | character varying(20 char) | | not null |
title | character varying(30 char) | | |
res_date | date | | |
索引 "exam0017.phone_uk"
栏位 | 类型 | 键值? | 定义
-------+---------------+-------+-------
phone | numeric(11,0) | 是 | phone
唯一的,btree, 给数据表 "exam0017.student"
数据表 "exam0017.score0017"
栏位 | 类型 | 校对规则 | 可空的 | 预设
-------------+--------------+----------+----------+------
sno | numeric(4,0) | | not null |
cno | numeric(2,0) | | not null |
ino | numeric(3,0) | | not null |
exam_date | date | | not null |
score | numeric(5,0) | | |
certificate | boolean | | |
索引:
"score_pk" PRIMARY KEY, btree (cno, sno, ino, exam_date)
检查约束限制
"score_ck" CHECK (score >= 0::numeric)
外部键(FK)限制:
"cno_fk" FOREIGN KEY (cno) REFERENCES exam0017.course(cno)
"ino_fk" FOREIGN KEY (ino) REFERENCES exam0017.instructor(ino)
"sno_fk" FOREIGN KEY (sno) REFERENCES exam0017.student(sno)
触发器:
t_update_score AFTER INSERT ON exam0017.score FOR EACH ROW
Begin
UPDATE exam0017.score t SET t.certificate=0 WHERE t.score<70;
END
索引 "exam0017.score_pk"
栏位 | 类型 | 键值? | 定义
-----------+--------------+-------+-----------
cno | numeric(2,0) | 是 | cno
sno | numeric(4,0) | 是 | sno
ino | numeric(3,0) | 是 | ino
exam_date | date | 是 | exam_date
主键(PK),btree, 给数据表 "exam0017.score"
序列数 "exam0017.seq_student_sno"
类型 | 起始值 | 最小值 | 最大值 | 增量 | 循环? | 缓存
--------+--------+--------+--------+------+-------+------
bigint | 1001 | 1 | 9999 | 1 | no | 1
索引 "exam0017.sno_cno_pk"
栏位 | 类型 | 键值? | 定义
------+--------------+-------+------
sno | numeric(4,0) | 是 | sno
主键(PK),btree, 给数据表 "exam0017.student"
数据表 "exam0017.student"
栏位 | 类型 | 校对规则 | 可空的 | 预设
----------+----------------------------+----------+----------+-----------------------------------------------
sno | numeric(4,0) | | not null | nextval('exam0017.seq_student_sno'::regclass)
sname | character varying(20 char) | | |
gender | character varying(2 char) | | |
phone | numeric(11,0) | | not null |
id_no | character varying(18 char) | | |
city | character varying(20 char) | | |
reg_date | date | | |
job | character varying(30 char) | | |
company | character varying(30 char) | | |
索引:
"sno_cno_pk" PRIMARY KEY, btree (sno)
"id_no_uk" UNIQUE CONSTRAINT, btree (id_no)
"phone_uk" UNIQUE CONSTRAINT, btree (phone)
检查约束限制
"gender_ck" CHECK (gender::text = 'm'::text OR gender::text = 'f'::text)
由引用:
TABLE "exam0017.score" CONSTRAINT "sno_fk" FOREIGN KEY (sno) REFERENCES exam0017.student(sno)
视图 "exam0017.v_score_information"
栏位 | 类型 | 校对规则 | 可空的 | 预设
-------+----------------------------+----------+--------+------
sname | character varying(20 char) | | |
iname | character varying(20 char) | | |
cname | character varying(30 char) | | |
score | numeric(5,0) | | |
test=# SELECT relkind,relname FROM sys_class WHERE relnamespace = (select oid from sys_namespace where nspname='exam0017') ;
relkind | relname
---------+---------------------
r | course
r | instructor_history
r | student
S | seq_student_sno
v | v_score_information
i | cno_pk
i | id_no_uk
i | ino_pk
i | phone_uk
i | score_pk
i | sno_cno_pk
r | score
r | instructor
(13 行记录)
test=#
- 现在已将表结构和数据都存到了node2中
3.修改拓扑图配置实现增量搬迁同步
(1).修改node1节点配置
【部署管理】>【拓扑管理】 >【双击node1节点】 >【高级属性】>【过滤器】>【新增】 >【replicate】 >【设置】 >【填入相关信息】。
(2).修改node2节点配置
【部署管理】>【拓扑管理】 >【双击node2节点】 >【高级属性】>【过滤器】>【新增】 >【replicate】 >【设置】 >【填入相关信息】。
(3).更新同步配置
然后点击【安装/更新】按钮,更新配置
点击确定
耐心等待直到出现安装完成字样
(4).启动同步节点
点击停止后再次启动启动
(5).更新同步配置
在node1数据库exam模式的course和instructor表下插入数据
[kingbase@node1 bin]$ ./ksql -U flysync -dtest
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=# INSERT INTO exam.course VALUES(40,'KFS','middle',80);
INSERT 0 1
test=# INSERT INTO exam.instructor VALUES(108,'fenxiaoyue','Intermediate Instructor');
INSERT 0 1
test=# \q
[kingbase@node1 bin]$
在node2数据库exam模式下查询course和instructor表新增的数据
[kingbase@node2 bin]$ ksql -U flysync -d test
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=# SELECT * FROM exam0017.course0017 WHERE cno=40;
cno | cname | clevel | pass_mark
-----+-------+--------+-----------
40 | KFS | middle | 80
(1 行记录)
test=# SELECT * FROM exam0017.instructor WHERE ino=108;
ino | iname | title
-----+------------+-------------------------
108 | fenxiaoyue | Intermediate Instructor
(1 行记录)
test=#
数据校验
1.准备数据
在node2(target端)误操作制造主备两端数据不一致。
[kingbase@node2 bin]$ ksql -U flysync -d test
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=# UPDATE exam0017.student SET phone=15723449970 WHERE sno=1008;
UPDATE 1
test=# DELETE FROM exam0017.student WHERE sno=1006;
DELETE 1
test=# INSERT INTO exam0017.student(sno,sname,gender,phone) VALUES('1009','Huang Tao','m',13812447980) ;
INSERT 0 1
test=# \q
[kingbase@node2 bin]$
2.校验配置
【数据校验】>【校验配置】>【数据校验及数据修复配置】
- 参数配置如下
- 任务并行数 2(不要超出物理CPU核数)。
- 校验核心线程数 5。
- 校验同步大小 50000。
- 修复批量大小 10000。
- 校验同步记录日志 开启。
- 校验结果自动清除 开启,设置为3天。
- 是否校验大对象 开启。
- 大对象校验阈值 5000000
- 同步跳过超阈值数据 关闭。
- 刷新分片设置 关闭。
3.新建校验任务
【数据校验】 >【任务配置】 >【新建】。
源配置:
选择exam模式下的所有表
目标配置:
选择exam0017模式下的所有表
4.新建调度任务
【调度管理】> 【新建调度】
5.执行校验
执行第一次校验
点击查看详情查看校验结果
数据自动修复
1.新建数据自动修复任务
2.再次执行数据校验任务
3.查询修复结果
配置告警邮件
1.告警邮箱配置
2.配置告警管理
点击测试
收到邮件点击保存
3.错误问题
(1).邮件发送提示失败
- 检查你的虚拟机是否网络畅通
- 检查你的邮箱smtp是否开通,授权码填写在密码栏
(2).配置告警提示失败
检查你新增加的用户邮箱是否和告警配置的一致
4.邮件告警展示