准备背景:
三台已经安装了DM数据库的Centos7虚拟机,其中三台虚拟机为监视器、主机、备机,安装目录为/soft/dmdba/dmdhs
注意:
三台虚拟机的IP地址
监视器 192.168.20.139
主机 192.168.20.150
备机 192.168.20.149
第一步,在主机上建立数据库实例,并进行脱机备份到备机上。(脱机备份的目的是为了保证建立连接之后,主备机的数据库一致性)
主备库实例信息 (切记主备库实例名不要相同)
停止数据库实例服务
#systemctl stop DmServicedmzb101_z.service
#systemctl stop DmServicedmzb102_b.service
备份库:
#backup database '/soft/dmdata/dmzb101_z/dm.ini' full to dmzb101_b backupset '/soft/dmarch';
recover database '/soft/dmdata/dm102_zb1_b/dm.ini' from backupset '/soft/dmback'
在备份机上对数据库进行恢复操作
#restore database '/soft/dmdata/dmzb102_b/dm.ini' from backupset '/soft/dmarch'
#recover database '/soft/dmdata/dmzb102_b/dm.ini' from backupset '/soft/dmarch'
#recover database '/soft/dmdata/dmzb102_b/dm.ini' update db_magic
第二步:配置主机配置
vi dm.ini
配置dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1] #主机
MAL_INST_NAME =dmzb101_z #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST =192.168.20.150 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST =192.168.20.150 #实例的对外服务 IP 地址
MAL_INST_PORT = 50001 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2] #备机
MAL_INST_NAME =dmzb102_b
MAL_HOST =192.168.20.149
MAL_PORT = 61142
MAL_INST_HOST =192.168.20.149
MAL_INST_PORT = 50002
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
配置dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmzb102_b #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST =/soft/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
配置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 =/soft/dmdata/dmzb101_z/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /soft/dmdba/dmdhs/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
以mount的方式启动数据库实例否则系统会重构roll表空间,产生redo日志,破坏数据一致性。
#./dmserver dm安装目录/data/实例名/dm.ini mount
而后,新打开一个命令行窗口,启动disql命令行工具,登录数据库,将数据库设为primary模式并设置oguid值(在dmwatcher.ini中设置的),注意以disql连接数据库时如果不设ip和端口号则默认连接本机的5236端口,此时如果数据库实例不是默认端口便会报网络连接错误。
#conn SYSDBA/tangyurun123@192.168.20.150:50001
- 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);
第三步:配置备库
1、备机的dm.ini、dmmal.ini、dmwatcher配置与主机基本一致(仅实例名、安装路径可能存在差异需要调整),在此不做赘述,可用scp命令直接传输过来。
2、配置备机的dmarch.ini,因为这是备机,要将归档发送到主机,因此ARCH_DEST要写主机的实例,这里可能有长得好看的要问了:“啊~为啥备机要给主机发归档啊?”,我猜是因为将来可能会发生主机故障需要将备机切换成主机的这种主备交换身份的操作,那么有可能成为主机的备机就需要知道将来可能要把日志发给谁。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST =dmzb101_z #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = 自己的归档路径 #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
3、mount方式启动备库:
./dmserver dm安装目录/data/实例名/dm.ini mount
新开命令行,使用disql执行SQL:
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);
第四步 配置监视器
因为这个集群设置的故障自动切换,所以需要第三台机器作为监视器,在dm的安装目录下新建dmmonitor.ini,其中的MON_DW_IP中的IP与PORT需要和dmmal.ini中的MAL_HOST与MAL_DW_PORT保持一致。
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /soft/dmdba/dmdhs/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.20.150:52141 #主机的MAL_HOST对应ip+冒号+主机的守护进程监听端口MAL_DW_PORT
MON_DW_IP = 192.168.20.149:52142
第五步 注册并启动服务
1、注册服务。需要在服务器上注册数据库实例、守护进程与监视器的服务,当然,之前注册过的数据库实例是不需要再次注册的,命令行注册数据库实例、守护进程和监视器服务的方式,使用root用户在dm安装目录的bin目录下执行:
--注册主库实例服务
./dm_service_installer.sh -t dmserver -dm_ini /soft/dmdata/dmzb101_z/dm.ini -m mount -p dmzb101_z
--注册主库守护进程服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /soft/dmdata/dmzb101_z/dmwatcher.ini -p dmzb101_zS
--注册监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /soft/dmdba/dmdhs/bin/dmmonitor.ini -p dmzb101_zDm
2、启动服务,先启动主备机的数据库实例服务与守护进程而后启动监视器,启动方式是在dm安装目录的bin目录下执行:
--启动数据库实例
./dmserver /soft/dmdata/dmzb101_z/dm.ini
./dmserver /soft/dmdata/dmzb102_b/dm.ini
--启动守护进程
./dmwatcher /soft/dmdata/dmzb101_z/dmwatcher.ini
./dmwatcher /soft/dmdata/dmzb102_b/dmwatcher.ini
--启动监视器
./dmmonitor /soft/dmdba/dmdhs/bin/dmmonitor.ini
eco.dameng.com