1.搭建准备
主库:10.18.4.181
备库:10.18.4.182
监控:10.18.4.183
2.建库
分别在主备机器上通过dbca.sh创建数据库DM01实例名为DMSVR01和DMSVR02,这里省略1万个字
监控机只需要安装软件无需建库。
3.搭建数据守护和读写分离集群共需要4个ini文件,分别是dm.ini、dmmal.ini、dmarch.ini和dmwatcher.ini
a.首先要先将主库做全备
DmServiceDMSVR01 stop
dmrman CTLSTMT=“BACKUP DATABASE ‘/dm8/data/DM01/dm.ini’ FULL TO backup_file1 BACKUPSET ‘/dm8/backup/full_backup’”
scp -r full_backup dmdba@备库:/dm8/backup
b.备库恢复数据
DmServiceDMSVR02 stop
dmrman CTLSTMT=“RESTORE DATABASE ‘/dm8/data/DM01/dm.ini’ FROM BACKUPSET ‘/dm8/backup/full_backup’”
dmrman CTLSTMT=“RECOVER DATABASE ‘/dm8/data/DM01/dm.ini’ FROM BACKUPSET ‘/dm8/backup/full_backup’”
dmrman CTLSTMT=“RECOVER DATABASE ‘/dm8/data/DM01/dm.ini’ update db_magic”
c.主备两端修改4个ini参数
vi dm.ini
编辑如下几个参数即可
ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 # 不允许备库 OFFLINE 表空间
MAL_INI = 1 # 打开 MAL 系统
ARCH_INI = 1 # 打开归档配置
vi dmmal.ini
MAL_CHECK_INTERVAL = 5 # MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 # 判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMSVR01 # 实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.18.4.181 # MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5235 # MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.18.4.181 # 实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 # 实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5238 # 实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMSVR02
MAL_HOST = 10.18.4.182
MAL_PORT = 5235
MAL_INST_HOST = 10.18.4.182
MAL_INST_PORT = 5236
MAL_INST_DW_PORT = 5237
MAL_DW_PORT = 5238
vi dmarch.ini 增加如下内容,注意ARCH_DEST这个值主库里写备库的实例名,备库里写主库的实例名
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSVR02
vi 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 = /dm8/data/DM01/dm.ini # dm.ini 配置文件路径
INST_AUTO_RESTART = 1 # 打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动
RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭
4.以mount模式启动数据库
主
/dm8/bin/dmserver /dm8/data/DM01/dm.ini mount
备
/dm8/bin/dmserver /dm8/data/DM01/dm.ini mount
5.设置OGUID更改数据库模式
主:
disql sysdba/passwod
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
备:
disql sysdba/passwod
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
6.注册并启动守护进程,数据库状态会被守护进程更改到open状态
/dm8/bin/dmwatcher /dm8/data/DM01/dmwatcher.ini
7.配置monitor
monitor主要参数文件是dmmonitor.ini这个文件,编写dmmonitor.ini
vi dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.18.4.181:5238
MON_DW_IP = 10.18.4.182:5238
启动监视器
/dm8/bin/dmmonitor /dm8/dmmonitor.ini
8.验证读写分离
9.主备切换,主要是在监控器机器上操作
/dm8/bin/dmmonitor /dm8/dmmonitor.ini
choose switchover GRP1 —会告诉你可以切换哪个实例
login -----输入sysdba和密码
switchover GRP1.实例名
完成主备切换