#YStream参考手册

YStream是YashanDB提供的逻辑日志解析接口,客户端API采用Java代码实现。

客户端软件可以集成YStream API的jar包,在已开启附加日志(库级表级)的YashanDB数据库环境中,调用API接口获取YashanDB逻辑日志,包括DML和DDL。

YStream不适用于存算一体分布式集群部署。

# 准备工作

# 主备模式环境要求

在备库上使用YStream时,应确保主备实例或主备集群间网络连接快速、稳定,否则可能出现网络连接断开异常;备实例的计算、存储性能不低于主实例,否则主备实例日志差距过大可能引起超时异常;Switchover备实例的YStream服务会与主实例断开连接后重连,备实例YStream可能出现网络连接断开异常,建议在YStream服务停止后再执行Switchover操作;主实例shutdown或其他原因异常退出,备实例YStream也可能出现网络连接断开异常,建议在YStream服务停止后主实例再执行shutdown操作。

# 数据库归档管理

YStream仅支持解析归档模式下生成的redo和归档日志,使用YStream时,必须打开数据库归档,否则创建YStream服务时报错。

YStream服务创建时,会记录日志解析起始点。由于数据库开启了归档,日志解析起始点后的所有未被解析的归档都不会自动清理。若无需再使用某个服务对应的日志解析,请及时删除不必要的YStream服务,以免妨碍数据库自动清理归档,造成存储空间浪费。

# 配置数据库YStream Server

参考YStream客户端使用示例配置YStream Server,确保YStream服务创建并启动后,通过YStream API开始解析。

# 支持同步的数据

# HEAP表和TAC表

YStream支持HEAP表和TAC表的DDL、DML及主键约束。支持的DDL范围如下:

DDL类型 同步范围 示例
CREATE TABLE 列名、列类型、默认值、主键 CREATE TABLE YDS.TEST(ID INT DEFAULT 1 PRIMARY KEY)
ALTER TABLE RENAME xxx TO - ALTER TABLE RENAME YDS.TEST TO TEST1
DROP TABLE - DROP TABLE YDS.TEST
TRUNCATE TABLE - TRUNCATE TABLE YDS.TEST
ALTER TABLE ADD COLUMN 列名、列类型、默认值、主键 ALTER TABLE YDS.TEST ADD COLUMN COL0 INT DEFAULT 1 PRIMARY KEY
ALTER TABLE DROP COLUMN - ALTER TABLE YDS.TEST DROP COLUMN ID
ALTER TABLE RENAME COLUMN - ALTER TABLE YDS.TEST RENAME COLUMN ID TO ID1
ALTER TABLE MODIFY 列类型、默认值、主键 ALTER TABLE YDS.TEST MODIFY (ID INT DEFAULT 1 PRIMARY KEY)
ALTER TABLE ADD PRIMARY KEY - ALTER TABLE YDS.TEST ADD PRIMARY KEY (ID)
ALTER TABLE ADD CONSTRAINT xxx PRIMARY KEY - ALTER TABLE YDS.TEST ADD CONSTRAINT PK PRIMARY KEY (ID)
ALTER TABLE DROP PRIMARY KEY - ALTER TABLE YDS.TEST DROP PRIMARY KEY
ALTER TABLE DROP CONSTRAINT primary_key_constraint - ALTER TABLE YDS.TEST DROP CONSTRAINT PK(约束名为PK的约束为主键约束)

# Sequence

YStream支持同步Sequence,支持的DDL范围如下:

DDL类型 同步范围 示例
CREATE SEQUENCE Sequence的所有属性:HWM、max、min、cycle、order、cache、increment CREATE SEQUENCE YDS.TEST_SEQ
ALTER SEQUENCE 修改的Sequence属性 ALTER SEQUENCE YDS.TEST_SEQ INCREMENT BY 2
DROP SEQUENCE Sequence的所有属性:HWM、max、min、cycle、order、cache、increment DROP SEQUENCE YDS.TEST_SEQ

如需Sequence同步HWM(High Water Mark,高水位)。请在YStream API中启用enableSequenceNextVal,即可通过API获取Sequence的HWM更新逻辑日志,同步范围包含Sequence的模式、名称及当前HWM。

共享集群中,如果Sequence设置为NOORDER,YashanDB仅保证各实例内Sequence有序,同步时YStream会同时解析所有实例的日志,解析所得序列可能出现乱序、重复。如需保证共享集群中的Sequence顺序,请设置序列的ORDER属性。

# 其他DDL

YStream支持同步其他DDL的SQL语句字符串。

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流