一:实时主备
1.准备环境
机器名 | IP 地址 | 初始状态 | 操作系统 | 备注 |
---|---|---|---|---|
zhu | 192.168.23.133 192.168.23.133 | 主库 GRP1_RT_01 | Kylin-Server-V10-SP3-General-Release-2303-X86_64 | 192.168.23.133 外部服务 IP; 192.168.23.133 内部通信 IP |
bei | 192.168.23.134 192.168.23.134 | 备库 GRP1_RT_02 | Kylin-Server-V10-SP3-General-Release-2303-X86_64 | 192.168.23.134 外部服务 IP; 192.168.23.134 内部通信 IP |
zhu | 192.168.23.133 | 确认监视器 | Kylin-Server-V10-SP3-General-Release-2303-X86_64 |
实例名 | PORT_NUM | MAL_INST_DW_PORT | MAL_HOST | MAL_PORT | MAL_DW_PORT |
---|---|---|---|---|---|
CB1 | 5500 | 5500 | 192.168.23.133 | 61141 | 52141 |
CB2 | 5600 | 5600 | 192.168.23.134 | 61142 | 52142 |
2.主库创建实例
使用dmdba创建实例
[dmdba@bei bin]$ ./dminit path=/dm/dmdata DB_NAME=CB INSTANCE_NAME=CB1 PORT_NUM=5500 page_size=32
启动主库验证实例能否正常启动:
[dmdba@bei bin]$ ./dmserver /dm/dmdata/CB/dm.ini
去root创建服务
[root@zhu ~]# cd /dm/script/root/
[root@zhu root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/CB/dm.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB.service → /usr/lib/systemd/system/DmServiceCB.service.
创建服务(DmServiceCB)完成
关闭DmServiceCB服务开机自启动
[root@zhu ~]# systemctl disable DmServiceCB.service
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB.service.
回dmdba启动DmServiceCB服务
[dmdba@bei bin]$ DmServiceCB start
Starting DmServiceCB: [ OK ]
启动归档
[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5500
服务器[LOCALHOST:5800]:处于普通打开状态
登录使用时间 : 3.578(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 1.714(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 9.238(毫秒). 执行号:0.
SQL> alter database add archivelog 'dest=/dmdata/arch,type=local,file_size=128,space_limit=0';
操作已执行
已用时间: 8.702(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 6.916(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 Y
已用时间: 0.821(毫秒). 执行号:501.
3.备份一下主库
主库创建备份目录
[dmdba@bei dm]$ cd /dm/
[dmdba@bei dm]$ mkdir back
备份主库:联机备份
SQL> backup database full backupset '/dm/back/CB_01';
操作已执行
已用时间: 00:00:06.399. 执行号:801.
拷贝给备库
[dmdba@bei bin]$ scp -r /dm/back/CB_01 dmdba@192.168.23.134:/dm/back/
4.主库参数修改
1>配置dm.ini
在 zhu 机器上配置主库的实例名为 CB1,dm.ini 参数修改如下:
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = CB1
PORT_NUM = 5500 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
2>配置dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = CB1 ##实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.23.133 ##MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.23.133 ##实例的对外服务IP地址
MAL_INST_PORT = 5500 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = CB2
MAL_HOST = 192.168.23.134
MAL_PORT = 61142
MAL_INST_HOST = 192.168.23.134
MAL_INST_PORT = 5600
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3>配置 dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST = CB2 ##实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档类型
ARCH_DEST = /dm/arch ##本地归档文件存放路径
ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限,1024~2147483647M
4>配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/dmdata/CB/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 0 ##打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关>闭
RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
5>启动主库
以mount方式启动。
前台启动
./dmserver /dm/dmdata/CB/dm.ini mount
后台启动
复制一个DmServiceCB 修改参数为mount,就可以后台启动
查看一下状态是不是mount
6>设置 OGUID
[dmdba@bei bin]$ ./disql SYSDBA/SYSDBA:5500
服务器[LOCALHOST:5500]:处于普通配置状态
登录使用时间 : 4.392(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 8.211(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 2.316(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 8.014(毫秒). 执行号:3.
7>修改数据库模式
SQL> alter database primary;
操作已执行
已用时间: 7.381(毫秒). 执行号:0.
5.备库参数修改
1>创建实例
[dmdba@bei bin]$ ./dminit path=/dm/dmdata DB_NAME=CB2 INSTANCE_NAME=CB2 PORT_NUM=5600 page_size=32
启动备库验证实例能否正常启动:
[dmdba@bei bin]$ ./dmserver /dm/dmdata/CB2/dm.ini
root创建服务(DmServiceCB2)完成
[root@bei ~]# cd /dm/script/root/
[root@bei root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/CB2/dm.ini -p CB2
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB2.service → /usr/lib/systemd/system/DmServiceCB2.service.
创建服务(DmServiceCB2)完成
关闭DmServiceCB2服务开机自启动
[root@bei root]# systemctl disable DmServiceCB2.service
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB2.service.
启动DmServiceCB2服务
[dmdba@bei bin]$ DmServiceCB2 start
Starting DmServiceCB2:
[ OK ]
开启归档模式
[dmdba@bei bin]$ ./disql SYSDBA/SYSDBA:5600
服务器[LOCALHOST:5600]:处于普通打开状态
登录使用时间 : 3.101(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 1.201(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 5.014(毫秒). 执行号:0.
SQL> alter database add archivelog 'DEST=/dm/arch,type=local,FILE_SIZE=128,space_limit=0';
操作已执行
已用时间: 1.077(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 5.471(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 Y
已用时间: 0.831(毫秒). 执行号:501.
备库还原:
[dmdba@bei bin]$ cd /dm/bin
[dmdba@bei bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdata/CB2/dm.ini' FROM BACKUPSET '/dm/back/CB_01'"
[dmdba@bei bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdata/CB2/dm.ini' FROM BACKUPSET '/dm/back/CB_01'"
[dmdba@bei bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdata/CB2/dm.ini' UPDATE DB_MAGIC"
2>配置dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = CB2
PORT_NUM = 5600 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
3>配置 dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = CB1 ##实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.23.133 ##MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.23.133 ##实例的对外服务IP地址
MAL_INST_PORT = 5500 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = CB2
MAL_HOST = 192.168.23.134
MAL_PORT = 61142
MAL_INST_HOST = 192.168.23.134
MAL_INST_PORT = 5600
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
4>配置 dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST = CB1 ##实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档类型
ARCH_DEST = /dm/arch ##本地归档文件路径
ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M
5>配置dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/damdata/CB2/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
6>启动备库
以 Mount 方式启动主库
前台方式
[dmdba@kylin bin]$ ./dmserver /dm/dmdata/CB2/dm.ini mount
后台启动
复制一个DmServiceCB2 修改参数为mount,就可以后台启动
7>设置 OGUID
[dmdba@bei bin]$ ./disql SYSDBA/SYSDBA:5600
服务器[LOCALHOST:5600]:处于普通配置状态
登录使用时间 : 3.242(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 9.748(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 2.048(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 8.244(毫秒). 执行号:3.
8>修改数据库模式
6.配置监控器
MON_DW_CONFIRM = 1 ##确认监视器模式
MON_LOG_PATH = /dm/data/log ##监视器日志文件存放路径
MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 ##组GRP1的唯一OGUID值
##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.23.133:52141
MON_DW_IP = 192.168.23.134:52142
7.启动守护进程
主备两台都起,前台启功
[dmdba@bei bin]$ ./dmwatcher /dm/dmdata/CB2/dmwatcher.ini
这样及时启动成功
后台启动
在/dm/bin/service_template/DmWatcherService
复制一个到bin下,修改路径,就可以前台启动。
8.启动监视器
[dmdba@bei bin]$ ./dmmonitor /dm/dmdata/CB/dmmonitor.ini
open就没问题
9.关闭Dw环境
集群关闭顺序
1.退出监控
2.关闭主机的守护集群
3.关闭备机的守护集群
4.关闭主机实例
5.关闭备机实例
二:异步备库
1.环境主备
机器名 | IP 地址 | 初始状态 | 操作系统 | 备注 |
---|---|---|---|---|
DWS2 | 192.168.23.144 192.168.23.144 | 异步备库 GRP1_LOCAL_01 | Kylin-Server-V10-SP3-General-Release-2303-X86_64 | 192.168.23.144 外部服务 IP; 192.168.23.144 内部通信 IP |
DWS3 | 192.168.23.145 192.168.23.145 | 异步备库 GRP1_LOCAL_02 | Kylin-Server-V10-SP3-General-Release-2303-X86_64 | 192.168.23.145 外部服务 IP; 192.168.23.145 内部通信 IP |
2.关闭
如果实时主备守护环境已经处于运行状态,需要先正常退出主备库实例和守护进程。
3.修改主库的参数
1>配置dm.ini
配置 dm.ini的基础上,打开定时器配置,其他配置不变。
##配置有异步归档时,打开定时器,定时同步归档到异备库
TIMER_INI = 1
2>配置 dmmal.ini
增加异步备库 GRP1_LOCAL_01 和 GRP1_LOCAL_02 的 MAL 配置项。
[MAL_INST3]
MAL_INST_NAME = GRP1_LOCAL_01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.23.144 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61143 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.23.144 #实例的对外服务IP地址
MAL_INST_PORT = 5500 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52143 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33143 #实例监听守护进程TCP连接的端口
[MAL_INST4]
MAL_INST_NAME= GRP1_LOCAL_02 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.23.145 #MAL系统监听TCP连接的IP地址
MAL_PORT= 61144 #MAL系统监听TCP连接的端口
MAL_INST_HOST= 192.168.23.145 #实例的对外服务IP地址
MAL_INST_PORT= 5600 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT= 52144 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT= 33144 #实例监听守护进程TCP连接的端口
3>配置 dmarch.ini
增加异步归档的配置项。
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC ##异步归档类型
ARCH_DEST = GRP1_LOCAL_01 ##异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER ##定时器名称,和dmtimer.ini中的名称一致
4>配置 dmtimer.ini
配置 dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天 00:00:00 触发主库发送归档日志到异步备库,可以根据实际情况再做调整。
[RT_TIMER] ##和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2024-06-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
5>以mount启动,并启动主库的守护进程。
4.修改备库
主库上配置异步备库,备库上也需要增加相同的异步备库配置,保证备库在切换为主库后可以继续向同一个异步备库同步数据。
1>配置 dm.ini
打开定时器配置,其他配置不变。
##配置有异步归档时,打开定时器,定时同步归档到异备库
TIMER_INI = 1
2>配置 dmmal.ini
拷贝过来主库的
3>配置 dmarch.ini
增加异步归档的配置项。
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC ##异步归档类型
ARCH_DEST = GRP1_LOCAL_01 ##异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER ##定时器名称,和dmtimer.ini中的名称一致
4>配置 dmtimer.ini
配置 dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天 00:00:00 触发 GRP1_LOCAL_01 发送归档日志到异步备库 GRP1_LOCAL_02,可以根据实际情况再做调整。
[RT_TIMER] ##和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2024-06-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
5>以mount启动,并启动备库的守护进程。
5.异步备库1
1>创造实例
在 DWS2 机器上配置备库的实例名为 GRP1_LOCAL_01
[dmdba@DWS2 bin]$ ./dminit path=/dm/dmdata DB_NAME=CB INSTANCE_NAME=GRP1_LOCAL_01 PORT_NUM=5500 page_size=32
root创建服务(DmServiceCB)完成
[root@DWS2 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/CB/dm.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB.service → /usr/lib/systemd/system/DmServiceCB.service.
创建服务(DmServiceCB)完成
关闭DmServiceCB服务开机自启动
[root@DWS3 root]# systemctl disable DmServiceCB.service
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB.service.
开启dms
[dmdba@DWS2 bin]$ ./DmServiceCB start
Starting DmServiceCB:
[ OK ]
2>配置 dm.ini
dm.ini 参数修改如下:
#实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = GRP1_LOCAL_01
PORT_NUM = 5500 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
TIMER_INI = 1 #打开定时器,定时同步归档到异步备库。目的是使GRP1_LOCAL_01能够定时发送归档信息到GRP1_LOCAL_02
RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志重演信息
3>配置 dmmal.ini
直接拷贝主库的
4>配置 dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
[ARCHIVE_ASYNC]
ARCH_TYPE= ASYNC #异步归档类型
ARCH_DEST= GRP1_LOCAL_02 #异步归档目标实例名
ARCH_TIMER_NAME= RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
5>配置 dmtimer.ini
配置 dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天 00:00:00 触发 GRP1_LOCAL_01 发送归档日志到异步备库 GRP1_LOCAL_02,可以根据实际情况再做调整。
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2024-06-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
6> 配置 dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL #本地守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/dmdata/CB/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
7>启动异步备库
以 Mount 方式启动备库
前台启动
./dmserver /dm/dmdata/CB/dm.ini mount
后台启动
复制一个DmServiceCB 修改参数为mount,就可以后台启动
查看一下状态是不是mount
一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
8>设置 OGUID
[dmdba@DWS2 bin]$ ./disql SYSDBA/SYSDBA:5500
服务器[LOCALHOST:5500]:处于普通配置状态
登录使用时间 : 4.638(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 8.806(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 2.163(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 10.069(毫秒). 执行号:3.
系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。
9>修改数据库模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 7.860(毫秒). 执行号:4.
SQL> alter database standby;
操作已执行
已用时间: 7.779(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 9.937(毫秒). 执行号:5.
6.级联配置异步备库2
1>创造实例
在 DWS3 机器上配置备库的实例名为 GRP1_LOCAL_02
[dmdba@DWS3 bin]$ ./dminit path=/dm/dmdata DB_NAME=CB2 INSTANCE_NAME=GRP1_LOCAL_02 PORT_NUM=5600 page_size=32
root创建服务(DmServiceCB)完成
[root@DWS3 ~]# cd /dm/script/root/
[root@DWS3 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/CB2/dm.ini -p CB2
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB2.service → /usr/lib/systemd/system/DmServiceCB2.service.
创建服务(DmServiceCB2)完成
关闭DmServiceCB服务开机自启动
[root@DWS3 root]# systemctl disable DmServiceCB2.service
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB2.service.
开启dms
[dmdba@DWS3 bin]$ ./DmServiceCB2 start
Starting DmServiceCB2:
[ OK ]
2>配置 dm.ini
在 DW_S3 机器上配置备库的实例名为 GRP1_LOCAL_02。dm.ini 参数修改如下:
#实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_LOCAL_02
PORT_NUM = 5600 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志重演信息
3> 配置 dmmal.ini
直接拷贝主库的
4>配置 dmarch.ini
本地守护类型的备库只需要配置本地归档。
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
5>配置 dmwatcher.ini
修改 dmwatcher.ini 配置守护进程,配置为本地守护类型,异步备库不具备故障自动切换等功能,DW_MODE 配置并不起作用,此处配置为 MANUAL 即可。
[GRP1]
DW_TYPE = LOCAL ##本地守护类型
DW_MODE = MANUAL ##故障手动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/dmdata/CB2/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
6>启动异步备库
以 Mount 方式启动备库
前台启动
./dmserver /dm/dmdata/CB2/dm.ini mount
后台启动
复制一个DmServiceCB2 修改参数为mount,就可以后台启动
查看一下状态是不是mount
一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
7> 设置 OGUID
[dmdba@DWS3 bin]$ ./disql SYSDBA/SYSDBA:5600
服务器[LOCALHOST:5600]:处于普通配置状态
登录使用时间 : 3.881(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 8.189(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 7.050(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 8.791(毫秒). 执行号:3.
系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。
8>修改数据库模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 7.970(毫秒). 执行号:4.
SQL> alter database standby;
操作已执行
已用时间: 7.640(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 8.913(毫秒). 执行号:5.
7.配置监视器
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.23.133:52141
MON_DW_IP = 192.168.23.134:52142
#新增到异步备库GRP1_LOCAL_01/GRP1_LOCAL_02守护进程的连接信息
MON_DW_IP = 192.168.23.144:52143
MON_DW_IP = 192.168.23.145:52144
8.启动守护进程
启动异步备库的守护进程:
前台启动
./dmwatcher /dm/dmdata/CB/dmwatcher.ini
后台启动
在/dm/bin/service_template/DmWatcherService
复制一个到bin下,修改路径,就可以前台启动。
9.启动监视器
修改监视器配置后,需要重新启动监视器:
./dmmonitor /dm/dmdata/CB/dmmonitor.ini
可以显示异步备库
感谢观看!