#一主多备配置

一主多备的配置就是在一主一备部署的基础上,继续添加一个或多个备库,将其扩展为一主多备部署架构。如用户在安装产品时已规划为一主多备架构,则可以将一主一备部署与本文档结合参考,一次性完成配置。

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

# 步骤1:准备备库2

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

# 步骤2:配置主备库参数

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

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

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

主库配置示例(立即生效)

--1689为新增备库的同步复制端口
ALTER SYSTEM SET ARCHIVE_DEST_2='SERVICE=192.168.1.4:1689' 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/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/yasdb/YASDB_DATA'
scope=both; 
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/yasdb/YASDB_DATA'
scope=both; 
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/yasdb/YASDB_DATA'
scope=both; 

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

--1689为新增备库的同步复制端口
ALTER SYSTEM SET ARCHIVE_DEST_2='SERVICE=192.168.1.4:1689' 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.2:1689' scope=spfile;
ALTER SYSTEM SET ARCHIVE_DEST_2='SERVICE=192.168.1.3:1689' 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/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db2/yashandb/yasdb_data','/home/db1/yashandb/yasdb_data','/home/db2/yashandb/yasdb_data'
scope=spfile; 

# 步骤3:初始化备库2

一主一备部署中的备库初始化操作。

其中,当同时增加多个备库时,由主库发起的并行build操作可以支持同时build多个备库,具体操作如下:

1.检查主库同所有备库的网络信息与状态。

SELECT CONNECTION,STATUS,DATABASE_MODE FROM V$ARCHIVE_DEST_STATUS;

该视图可以显示主库同所有备库的连接信息,如果查看视图V$ARCHIVE_DEST_STATUS中connection为CONNECTED,则主备网络相通,可以进行备库初始化。

2.初始化并同步多个备库。

--获取所有备库的DB_UNIQUE_NAME, VALID_NOW为YES表示该数据库角色下生效的备库
SELECT DB_UNIQUE_NAME FROM V$ARCHIVE_DEST WHERE VALID_NOW = 'YES';

--根据备库的DB_UNIQUE_NAME执行在线传输
BUILD DATABASE TO STANDBY (standby1, standby2);

3.所有备库完成初始化与同步之后,需要检查备库的数据库角色是否正常,以及同步状态是否正常。

# 步骤4:部署后检查

一主一备部署中的部署后检查操作。