之前已经安装了dm的单机库,今天来继续搭一下dm的数据守护集群
集群部署准备工作:
主机名称 IP 数据库名称 数据库实例名称
dmdb01 192.168.184.133 DAMENG DMSERVER01
dmdb02 192.168.184.136 DAMENG DMSERVER02
数据库端口:
主机名称 实例名称 实例端口 MAL 系统监听 TCP 连接的端口 实例本地守护进程监听TCP端口 实例监听守护进程端口
dmdb01 DMSERVER01 5236 55101 65101 45101
dmdb02 DMSERVER02 5236 55121 65121 45121
初始化实例
两台机器都需要完成实例的初始化
DMSERVER01
cd /home/dmdba/dm/dmdbms/bin
./dminit path= /home/dmdba/dbdata/dmdata page_size=32 extent_size=16 log_size=2048 db_name=DAMENG instance_name=DMSERVER01
DMSERVER02
cd /home/dmdba/dm/dmdbms/bin
./dminit path= /home/dmdba/dbdata/dmdata page_size=32 extent_size=16 log_size=2048 db_name=DAMENG instance_name=DMSERVER02
脱机备份DMSERVER01数据库
cd /home/dmdba/dm/dmdbms/bin
./dmrman use_ap=2
backup database 'dm.ini' backupset '/home/dmdba/dbbak/dmbak/fullbak0122';
把fullbak发到DMSERVER02备库去,然后备份还原:
cd /home/dmdba/dm/dmdbms/bin
./dmrman use_ap=2
restore database 'dm.ini' from backupset '/home/dmdba/dbbak/dmbak/fullbak0122';
recover database 'dm.ini' from backupset '/home/dmdba/dbbak/dmbak/fullbak0122';
recover database 'dm.ini' update db_magic; --dm8所需要加
检查数据一致性,DMSERVER01 & DMSERVER02
这里不能后台./dmserverd启动,因为数据守护集群是通过收发redo日志,重演redo日志来实现的,而后台启动会生成redo日志,造成主库和备库不是同一版本
cd /home/dmdba/dm/dmdbms/bin
./dmserver dm.ini mount
./disql SYSDBA/SYSDBA
select file_LSN, cur_LSN from v$rlog;
修改配置参数
修改dm.ini
DMSERVER01 :
vi /home/dmdba/dm/dmdbms/bin/dm.ini
INSTANCE_NAME = DMSERVER01
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
DMSERVER02 :
vi /home/dmdba/dm/dmdbms/bin/dm.ini
INSTANCE_NAME = DMSERVER02
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
修改dmarch.ini
DMSERVER01:
注意,存放归档日志需要填写另一个库
vi /dbdata/dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER02 --填写另一个库
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dbarch/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
DMSERVER02:
vi /dbdata/dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dbarch/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
添加配置文件dmmal.ini
DMSERVER01& DMSERVER02
vi /home/dmdba/dbdata/dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST = 192.168.168.133
MAL_PORT = 55101
MAL_INST_HOST = 192.168.168.133
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.168.136
MAL_PORT = 55121
MAL_INST_HOST = 192.168.168.136
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
添加配置文件dmwatcher.ini
DMSERVER01& DMSERVER02
vi /home/dmdba/dbdata/dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO --故障自动切换模式
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dm/dmdbms/bin/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
dm7需要 配置 dmwatcher.ctl,dm8不需要
拷贝生成的 dmwatcher.ctl 文件到数据文件目录DAMENG下面。
同样需要把控制文件发到 备库的DAMENG下面
./dmctlcvt TYPE=3 SRC=/home/dmdba/dbdata/dmdata/DAMENG/dmwatcher.ini DEST=/home/dmdba/dbdata/dmdata/DAMENG
##以 mount 方式启动数据库实例
DMSERVER01
cd /home/dmdba/dm/dmdbms/bin
./dmserver dm.ini mount
./disql SYSDBA/SYSDBA
sp_set_oguid(453331);
alter database primary; --主库
DMSERVER02
cd /home/dmdba/dm/dmdbms/bin
./dmserver dm.ini mount
./disql SYSDBA/SYSDBA
sp_set_oguid(453331);
alter database standby; --备库
启动守护进程
DMSERVER01& DMSERVER02
cd /home/dmdba/dm/dmdbms/bin
./dmwatcher /home/dmdba/dbdata/dmdata/DAMENG/dmwatcher.ini
添加dmmonitor.ini配置文件,并启动监视器,如果没有第三台,就在备库中添加监视器
DMSERVER02
vi /home/dmdba/dbdata/dmdata/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /home/dmdba/dm/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.184.133:65101
MON_DW_IP = 192.168.184.136:65121
cd /home/dmdba/dm/dmdbms/bin
./dmmonitor /home/dmdba/dbdata/dmdata/DAMENG/dmmonitor.ini
show
都是处于open状态就代表成功
验证主备集群同步
DMSERVER01
在主库插入数据,然后去备库验证
cd /home/dmdba/dm/dmdbms/bin
./disql SYSDBA/SYSDBA
create table t1 (a int, b int);
insert into t1 values (1,1);
insert into t1 values (2,2);
commit;
select * from t1;
DMSERVER02
备库查询
cd /home/dmdba/dm/dmdbms/bin
./disql SYSDBA/SYSDBA
select * from t1;
文章
阅读量
获赞