#一主多备配置

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

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

# Step1:备机2准备

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

# Step2:主备机参数配置

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

  • 主机上增加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; 

# Step3:备机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.所有备机完成初始化与同步之后,需要检查备机的数据库角色是否正常,以及同步状态是否正常。

# Step4:部署后检查

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