1、数据准备
初始化数据库
实时主备
开归档
vi dm.ini
ARCH_INI = 1
vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 1024
ARCH_FLUSH_BUF_SIZE = 0
脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dmdata/bak/bak_full_file_01'"
脱机还原
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/bak/bak_full_file_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/bak/bak_full_file_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
2、配置主库
2.1dm.ini
vi dm.ini
INSTANCE_NAME = GRP1_RWW_01
MAL_INI = 1
ARCH_INI = 1
2.2dmmal.ini
vi dmmal.ini
MAL_CHECK_INTERVAL=5
MAL_CONN_FAIL_INTERVAL=5
[MAL_INST1]
MAL_INST_NAME=GRP1_RWW_01
MAL_HOST=192.168.186.101
MAL_PORT=61141
MAL_INST_HOST=192.168.186.101#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52141
MAL_INST_DW_PORT=33141
[MAL_INST2]
MAL_INST_NAME=GRP1_RWW_02
MAL_HOST=192.168.186.102
MAL_PORT=61142
MAL_INST_HOST=192.168.186.102#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52142
MAL_INST_DW_PORT=33142
2.3dmarch.ini
vi dmarch.ini
ARCH_WAIT_APPLY=1#事务一致性
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST=GRP1_RWW_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 1024
ARCH_FLUSH_BUF_SIZE = 0
2.4dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE=GLOBAL
DW_MODE=MANUAL
DW_ERROR_TIME=10
INST_RECOVER_TIME=60
INST_ERROR_TIME=10
INST_OGUID=210129#和当天时间一致
INST_INI=/dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART=1
INST_STARTUP_CMD=/home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD=0
RLOG_APPLY_THRESHOLD=0
3、启动实例和守护进程
./dmserver /dmdata/data/DAMENG/dm.ini mount
设置oguid
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(210129);
alter database primary;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
启动守护进程
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
4、配置备库
4.1dm.ini
vi dm.ini
INSTANCE_NAME = GRP1_RWW_02
MAL_INI = 1
ARCH_INI = 1
4.2dmmal.ini
vi dmmal.ini
MAL_CHECK_INTERVAL=5
MAL_CONN_FAIL_INTERVAL=5
[MAL_INST1]
MAL_INST_NAME=GRP1_RWW_01
MAL_HOST=192.168.186.101
MAL_PORT=61141
MAL_INST_HOST=192.168.186.101#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52141
MAL_INST_DW_PORT=33141
[MAL_INST2]
MAL_INST_NAME=GRP1_RWW_02
MAL_HOST=192.168.186.102
MAL_PORT=61142
MAL_INST_HOST=192.168.186.102#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52142
MAL_INST_DW_PORT=33142
4.3dmarch.ini
vi dmarch.ini
ARCH_WAIT_APPLY=1#事务一致性
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST=GRP1_RWW_01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 1024
ARCH_FLUSH_BUF_SIZE = 0
4.4dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE=GLOBAL
DW_MODE=MANUAL
DW_ERROR_TIME=10
INST_RECOVER_TIME=60
INST_ERROR_TIME=10
INST_OGUID=210129#和当天时间一致
INST_INI=/dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART=1
INST_STARTUP_CMD=/home/dmdba/dmdbms/bin/dmserver
RLOG_APPLY_THRESHOLD=0
5、启动实例和守护进程
./dmserver /dmdata/data/DAMENG/dm.ini mount
设置oguid
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(210129);
alter database standby;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
启动守护进程
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
6、监视器
vi dmmonitor.ini
MON_DW_Confirm = 1 #确认监视器模式
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 210129 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.186.101:52141
MON_DW_IP = 192.168.186.102:52142
7、注册服务
使用root用户
cd /home/dmdba/dmdbms/script/root
注册dmserver服务
./dm_service_installer.sh -t dmserver -m mount -dm_ini /dmdata/data/DAMENG/dm.ini -p DMSERVER1
注册dmwatcher服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini –p DMWATCHER1
注册dmmonitor服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/data/DAMENG/dmmonitor.ini -p DMMONITOR
8、动态增加实时备库
初始化备库
./dminit path=/dmdata/data
对主库进行联机备份操作
BACKUP DATABASE BACKUPSET '/dmdata/bak/bak_full_29';
还原恢复新增备库
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET
'/dmdata/bak/bak_full_29'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET
'/dmdata/bak/bak_full_29'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
8.1dm.ini
vi dm.ini
INSTANCE_NAME = GRP1_RWW_03
MAL_INI = 1
ARCH_INI = 1
8.2dmmal.ini
vi dmmal.ini
MAL_CHECK_INTERVAL=5
MAL_CONN_FAIL_INTERVAL=5
[MAL_INST1]
MAL_INST_NAME=GRP1_RWW_01
MAL_HOST=192.168.186.101
MAL_PORT=61141
MAL_INST_HOST=192.168.186.101#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52141
MAL_INST_DW_PORT=33141
[MAL_INST2]
MAL_INST_NAME=GRP1_RWW_02
MAL_HOST=192.168.186.102
MAL_PORT=61142
MAL_INST_HOST=192.168.186.102#心跳ip
MAL_INST_PORT=5236
MAL_DW_PORT=52142
MAL_INST_DW_PORT=33142
[MAL_INST3]
MAL_INST_NAME = GRP1_RWW_03
MAL_HOST = 192.168.186.104
MAL_PORT = 61142
MAL_INST_HOST = 192.168.186.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
8.3dmarch.ini
vi dmarch.ini
ARCH_WAIT_APPLY=1#事务一致性
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = GRP1_RWW_01 #实时归档目标实例名
[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = GRP1_RWW_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 64 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1024 #单位 Mb,0 表示无限制,范围 1024~4294967294M
8.4dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 210129 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动拉起功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
9、启动实例和守护进程
./dmserver /dmdata/data/DAMENG/dm.ini mount
设置oguid
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(210129);
alter database standby;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
启动守护进程
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
10、动态添加 MAL 配置,每个节点都需要执行
SF_MAL_CONFIG(1,0); SF_MAL_INST_ADD('MAL_INST3','GRP1_RWW_03','192.168.186.104',61143,'192.168.186.1 04',5236,52143,0,33143);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
11、动态添加归档配置,数据库处于mount状态才能配置归档,停掉守护进程,重启服务,数据库处于mount状态,每个数据库节点都需要配置归档
alter database add archivelog 'DEST=GRP1_RWW_03, TYPE=TIMELY';
在 dmmonitor.ini 中添加新增的备库
GRP1_RT_03: MON_DW_IP = 192.168.186.104:52143
注册增加节点的服务和守护进程
启动全部守护进程,最后启动监视器。
所有实例均是打开状态,动态添加备库完成