#级联备配置

级联备是从某个备库接收日志的备库,对级联备的配置就是在一主一备部署的基础上,添加一个或多个备库,且该备库连接的是已有的另一个备库(上级备库),将其扩展为级联备部署架构。如用户在安装产品时已规划为级联备架构,则可以将一主一备部署与本文档结合参考,一次性完成配置。

在级联备部署中,存在主库→备库和备库→级联备两种不同的主备复制链路,这通过ARCH_DEST_x链路参数中的VALID_FOR关键字来进行识别:

  • VALID_FOR=PRIMARY_ROLE(默认值),表示只有当前数据库为主库时,该链路才生效,这条链路只能是主库→备库的链路。
  • VALID_FOR=STANDBY_ROLE,表示只有当前数据库为备库时,该链路才生效,这条链路只能是备库→级联备的链路。
  • VALID_FOR=ALL_ROLES,表示该链路一直生效。当前数据库为主库时,这条链路是主库→备库的链路;当前数据库为备库时,这条链路是备库→级联备的链路。

本文以在一主一备(主库、备库1)的基础上在线增加一台备库1的下级备库(备库2)为例进行介绍,过程中无需重启主库和备库1。

# 步骤1:准备备库2

一主一备部署架构中的备库准备操作。

# 步骤2:配置备库参数

增加一个级联备库所需要配置的参数有:

  • 备库1上增加ARCHIVE_DEST_2,备库1和备库2数据文件路径不同时还需修改DB_FILE_NAME_CONVERT、REDO_FILE_NAME_CONVERT和DB_BUCKET_NAME_CONVERT。
  • 备库2上增加LISTEN_ADDR、REPLICATION_ADDR、ARCHIVE_DEST_1,备库1和备库2数据文件路径不同时还需增加DB_FILE_NAME_CONVERT、REDO_FILE_NAME_CONVERT和DB_BUCKET_NAME_CONVERT。

上述参数的含义描述和配置注意事项请参考一主一备部署架构中的主备库参数配置。

备库1配置示例(立即生效)

--1689为下级备库的同步复制端口
ALTER SYSTEM SET ARCHIVE_DEST_2='SERVICE=192.168.1.4:1689 VALID_FOR=ALL_ROLES' SCOPE=BOTH;

--以下参数当主备库上路径完全一致时无须配置
--/home/yasdb/YASDB_DATA为主库路径,/home/db1/yashandb/yasdb_data为备库1路径,/home/db2/yashandb/yasdb_data为备库2路径
ALTER SYSTEM SET DB_FILE_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data'
scope=both; 
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data'
scope=both; 
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data'
scope=both; 

备库2配置示例(重启数据库后生效)

ALTER SYSTEM SET LISTEN_ADDR=192.168.1.4:1688 scope=spfile;
ALTER SYSTEM SET REPLICATION_ADDR=192.168.1.4:1689 scope=spfile;

ALTER SYSTEM SET ARCHIVE_DEST_1='SERVICE=192.168.1.3:1689 VALID_FOR=PRIMARY_ROLE' scope=spfile;

--以下参数当主备库上路径完全一致时无须配置
--/home/yasdb/YASDB_DATA为主库路径,/home/db1/yashandb/yasdb_data为备库1路径,/home/db2/yashandb/yasdb_data为备库2路径
ALTER SYSTEM SET DB_FILE_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 

# 步骤3:初始化备库2

一主一备部署架构中的备库初始化操作,其中,该操作的主库需替换为本文中的备库1,备库需替换为本文中的备库2。

# 步骤4:部署后检查

一主一备部署架构中的部署后检查操作,其中,该操作的主库需替换为本文中的备库1,备库需替换为本文中的备库2。