步骤 1:数据准备(主库备份、备库还原恢复)
su - dmdba
/opt/dmdbms/bin/dmrman
RMAN> BACKUP DATABASE '/dmdata/data/SYSDBA/dm.ini' TO BACKUP_FOR_DW BACKUPSET '/dmdata/data/backup_for_dw';
RMAN> exit;
scp -r /dmdata/data/backup_for_dw dmdba@192.168.72.136:/dmdata/data/
# 还原数据库
su - dmdba
/home/dmdba/dmdbms/bin/dmrman
RESTORE DATABASE TO '/dmdata/data/SYSDBA' FROM BACKUPSET '/dmdata/data/backup_for_dw';
RECOVER DATABASE '/dmdata/data/SYSDBA/dm.ini' FROM BACKUPSET '/dmdata/data/backup_for_dw';
RECOVER DATABASE '/dmdata/data/SYSDBA/dm.ini' UPDATE DB_MAGIC;
exit;
步骤 2:配置文件设置
dm.ini):INSTANCE_NAME = DMOA01 # 136备库改为 DMOA02
PORT_NUM = 5236
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
dmmal.ini):MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 10
[MAL_INST1]
MAL_INST_NAME = DMOA01
MAL_HOST = 192.168.1.138
MAL_PORT = 5269
MAL_INST_HOST = 192.168.1.138
MAL_INST_PORT = 5236
MAL_DW_PORT = 5241
MAL_INST_DW_PORT = 5240
[MAL_INST2]
MAL_INST_NAME = DMOA02
MAL_HOST = 192.168.1.136
MAL_PORT = 5269
MAL_INST_HOST = 192.168.1.136
MAL_INST_PORT = 5236
MAL_DW_PORT = 5241
MAL_INST_DW_PORT = 5240
!
138: dmarch.ini):[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/SYSDBA/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 10240
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DMOA02
!
136: dmarch.ini):[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/SYSDBA/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 10240
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DMOA01
dmwatcher.ini):[GRP_DMOA]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453332
INST_INI = /dmdata/data/SYSDBA/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #备库为/home/dmdba/dmdbms/bin/dmserver
步骤 3:启动与模式初始化
./dmserver /dmdata/data/SYSDBA/dm.ini mount
SP_SET_OGUID(453332);
ALTER DATABASE PRIMARY;
SP_SET_OGUID(453332);
ALTER DATABASE STANDBY;
root 执行): cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/SYSDBA/dm.ini -m mount -p DMOA01
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/SYSDBA/dmwatcher.ini -p DMOA01
root 执行): cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/SYSDBA/dm.ini -m mount -p DMOA02
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/SYSDBA/dmwatcher.ini -p DMOA02
/dmdata/data/dmmonitor.ini):MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmdata/data/SYSDBA/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP_DMOA]
MON_INST_OGUID = 453332
MON_DW_IP = 192.168.72.138:5241
MON_DW_IP = 192.168.72.136:5241
./DmServiceDMOA01 start ./DmWatcherServiceDMOA01 start
!
./DmServiceDMOA02 start ./DmWatcherServiceDMOA02 start
/opt/dmdbms/bin/dmmonitor /dmdata/data/dmmonitor.ini
步骤 4:数据同步验证
CREATE TABLE DW_TEST_SYNC(ID INT PRIMARY KEY, MEMO VARCHAR(50), CREATE_TIME DATETIME DEFAULT SYSDATE);
INSERT INTO DW_TEST_SYNC(ID, MEMO) VALUES (1, 'DW_SYNC_OK');
COMMIT;
SELECT * FROM DW_TEST_SYNC;
SELECT * FROM T_SYNC;
备库能够立即查询到 ID=1 的记录。
killall -9 dmserver
login
switchover DM01
读写分离集群只需将归档模式由 REALTIME 调整为 TIMELY(即时归档),打开 SQL 审计日志,并配置客户端 dm_svc.conf 的读写分发规则。
dm_svc.conf):/etc/dm_svc.conf 中添加读写分离连接组:TIME_ZONE=(480)
LANGUAGE=(cn)
# 定义读写分离服务名 RW_DMOA
RW_DMOA=(192.168.72.138:5236,192.168.72.136:5236)
[RW_DMOA]
LOGIN_MODE=(0) # 0: 优先连接 Primary 模式库
RW_SEPARATE=(1) # 1: 开启读写分离
RW_PERCENT=(0) # 0: 只读事务 100% 分发到备库执行
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(0)
AUTO_RECONNECT=(1)
制造主机故障与备机接管
强杀主库 DM01 进程:
killall -9 dmserver
./DmServiceDMOA01 start
STANDBY 模式并完成历史数据重演。login
switchover DM01
SVR_LOG = 1,开启 SQL 日志追踪。./disql SYSDBA/SYSDBA@DW_RW
-- 1. 创建测试表
CREATE TABLE T_RW_VERIFY(ID INT PRIMARY KEY, NAME VARCHAR(30));
-- 2. 插入测试数据并提交
INSERT INTO T_RW_VERIFY VALUES (1, 'TIMELY_SYNC_DATA');
COMMIT;
-- 3. 本地查询确认
SELECT * FROM T_RW_VERIFY;
!
在136机器上登录备库进行查询:
SELECT * FROM T_RW_VERIFY;
然后在备库查看SQL日志:
达梦社区:https://eco.dameng.com
文章
阅读量
获赞
