在部署之前,需要在4台机器上安装达梦数据库。数据库为DM7,安装路径为'/dbdata',执行程序保在/home/dmdba/dm/dmdbms/bin′目录中,数据存放路径为'/dbdata'。具体主备库配置如下。
192.168.72.101 主机服务名DM01
192.168.72.102 备机服务名DM02
192.168.72.103 备机服务名DM03
192.168.72.104 监视器
数据守护部署
1、dm.ini配置
主库101配置如下:
INSTANCE_NAME = DM01 --实例名字
PORT_NUM = 5236 --数据库实例监听端口
DW_PORT = 33141 --守护环境下,监听守护进程连接端口
ALTER_MODE_STATUS = 0 --不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 --不允许备库OFFLINE表空间
MAL_INI = 1 --打开MAL系统
ARCH_INI= 1 --打开归档配置
备库102配置如下:
INSTANCE_NAME = DM02
PORT_NUM = 5236
DW_PORT = 33142
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI= 1
备库103配置如下:
INSTANCE_NAME = DM03
PORT_NUM = 5236
DW_PORT = 33143
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI= 1
2、dmmal.ini配置
配置 MAL系统,各主备库的 dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MALDWPORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
MAL_CHECK_INTERVAL = 5 --MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 --判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM01 --实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.72.101 --MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 --MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.72.101 --实例的对外服务IP地址
MAL_INST_PORT = 5236 --实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 --实例对应的守护进程监听TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.72.102
MAL_PORT = 61142
MAL_INST_HOST = 192.168.72.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
[MAL_INST3]
MAL_INST_NAME = DM03
MAL_HOST = 192.168.72.103
MAL_PORT = 61143
MAL_INST_HOST = 192.168.72.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52143
3、配置 dmarch.ini
修改 dmarch.ini,配置本地归档和即时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是 Primary模式时,需要同步归档数据的目标实例名。
例如:当前实例 DM01 是主库,需要向即时备库 DM02/ DM03同步数据,因此即时归档的ARCH_DEST分别配置为 DM02和DM03。
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY --即时归档类型
ARCH_DEST = DM02 --即时归档目标实例名
[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY --即时归档类型
ARCH_DEST = DM03 --即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL --本地归档类型
ARCH_DEST = /dbarch --本地归档文件存放路径
ARCH_FILE_SIZE = 128 --单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 --单位Mb,0表示无限制,范围1024~4294967294M
4、配置dmwatcher.ini
修改 dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。
[GRP1]
DW_TYPE = GLOBAL --全局守护类型
DW_MODE = AUTO --自动切换模式
DW_ERROR_TIME = 10 --远程守护进程故障认定时间
INST_RECOVER_TIME = 60 --主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 --本地实例故障认定时间
INST_OGUID = 453332 --守护系统唯一OGUID值
INST_INI = /dbdata/DAMENG/dm.ini --dm.ini配置文件路径
INST_AUTO_RESTART = 1 --打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserver/ --命令行方式启动
RLOG_SEND_THRESHOLD = 0 --指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 --指定备库重演日志的时间阀值,默认关闭
5、配置 dmwatcher.ctl
同一个守护进程组,必须使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt工具生成一份 dmwatcher.ct1文件,然后分别拷贝到各个数据库目录下即可。
在配置完成 dmwatcher.ini后,使用dmctlcvt工具生成dmwatcher.ctl:
./dmctlcvt TYPE=3 SRC=/dbdata/DAMENG/dmwatcher.ini DEST=/dbdata
拷贝生成的 dmwatcher.ctl文件到数据文件目录/dbdata/DAMENG。
6、 启动主备库
以mount方式启动数据库
./dmserver /dbdata/DAMENG/dm.ini mount
注:一定要以mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库一致性。数据守护配置成功后,守护进程会自动open数据库。
7、设置OGUID
启动命令行工具 disql,登录主库设置 OGUID 值。
SQL>sp_set_oguid(453332);
注:系统通过OGUID值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID值。
8、修改数据库模式
启动命令行工具 disql,登录主库修改数据库为primary模式,备库修改成standby模式
第1步
SQL>SP_SET_PARA_VALUE(1,‘ALTER_MODE_STATUS’,1);
第2步
备库修改 : SQL>alter database standby;
主库修改 :SQL>alter database primary;
第3步
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’,0);
9、配置监视器
由于主库和即时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知即时备库接管为新的主库,具有自动故障处理的功能。
注:故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一个
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP中的 IP和 PORT 和dmmal.ini中的MAL_HOST和MAL_DW_PORT 配置项保持一致。
10、启动守护进程
启动各个主备库上的守护进程:
./dmwatcher /dbdata/DAMENG/dmwatcher.ini
守护进程启动后,进入 startup 状态,此时实例都处于 mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将数据库切换为 open状态。
11、 启动监视器
启动监视器:
./dmmonitor /dbdata/dmmonitor.ini
至此读写分离集群搭建完毕,在监视器上执行show命令,可以监控到所有实例都处于open状态,所有守护进程也都处于open状态,即为正常运行状态。
参考文章:https://blog.csdn.net/YLmpm/article/details/116521082