关键字:
KingbaseFlySync、KFS、同步程序、replicator、启用指定模式下所有触发器
1.功能描述
该功能主要由参数 trigger-enable触发,该参数能够启用指定模式下的所有触发器,且使用中必须指定服务名和模式名。
2.使用场景介绍
当源端或目标端需要启用指定模式下的触发器时,可通过参数 trigger-enable来实现上述操作。
3.配置使用方式介绍
以源端为例,当源端同步服务已启动,且源端的目标模式下的触发器已被禁用时:
- 将源端端同步服务offline,执行如下操作:
fsrepctl -service [服务名] offline
- 使用trigger-disable启用目标模式下的触发器,执行如下操作:
fsrepctl -service [服务名] trigger-enable -schema [模式名] -y
- 将源端端同步服务online,执行如下操作:
fsrepctl -service [服务名] online
4.示例
本示例中主要以源端操作为例,目标端操作与之相同。
4.1前置条件
- 环境介绍:
- 数据库版本:V009R003C010B0002
- 同步服务版本:V002R002B20241216
源端和目标端所创数据库、模式、表名、触发器如下:
| 源端 | 目标端 | |
|---|---|---|
| 数据库 | source | target |
| 模式名 | test01 | test01 |
| 表名 | t10 | t10 |
| 触发器 | zzz | zzz |
| 同步服务名 | kes_mysql_master | kes_mysql_slave |
4.2操作步骤
- 启动源端和目标端同步程序
2.查看源端同步服务是否启动。如下图所示表示源端同步服务已成功启动:
3.查看目标端同步服务是否启动。如下图所示表示目标端同步服务已成功启动:
4.在源端source数据库下创建模式test01。sql语句如下:
create schema test01;
5.在源端test01模式下创建表t10。sql语句如下:
create table test01.t10(id int);
6.在源端创建触发器zzz,触发条件为insert,触发内容为在test01模式下创建表t11。sql语句如下:
\set SQLTERM /
create trigger zzz
before insert on test01.t10
for each row
as
begin
create table test01.t11(id int);
end;
/
\set SQLTERM ;
7.将源端同步服务offline:
fsrepctl -service kes_mysql_master offline
8.利用trigger-disable禁用test01模式下的所有触发器,具体操作如下:
fsrepctl -service kes_mysql_master trigger-disable -schema test01 -y
9.将源端同步服务online:
fsrepctl -service kes_mysql_master online
10.在源端表test01.t10中插入数据547,sql语句如下:
insert into test01.t10 values(547);
11.查看test01模式下所有表,发现没有表t11,这是由于触发器zzz被禁用,故表t11未被创建:
12.将源端同步服务offline:
fsrepctl -service kes_mysql_master offline
13.利用trigger-disable禁用test01模式下的所有触发器,具体操作如下:
fsrepctl -service kes_mysql_master trigger-enable -schema test01 -y
14.将源端同步服务online:
fsrepctl -service kes_mysql_master online
15.在源端表test01.t10中插入数据47,sql语句如下:
insert into test01.t10 values(47);
16.查看test01模式下所有表,验证是否成功触发了触发器zzz,创建了表t11。
4.3结果展示
- 在源端表test01.t10插入数据47后,结果查询如下:
2. 查询源端test01模式下所有表,结果查询如下:
发现触发器zzz被成功触发,成功在test01模式下创建表t11。
参考资料
《Kingbase FlySync 命令行工具参考手册》