1.安装前规划
确认监视器IP 为10.10.122.23
说明:读写分离集群与数据守护集群架构基本类似,但在搭建过程中,归档类型和 dm_svc.conf 配置文件等存在一定区别。当然读写分离集群和数据守护集群最大的却别在于归档文件的参数ARCH_WAIT_APPLY中,读写分离集群要求数据强一致性,数据守护不要求。
2.架构图
3.切换模式说明
2.1 配置A机器
2.1.1初始化实例并备份数据
[root@dxfl2 soft]# mkdir -p /data/dmdata/
[root@dxfl2 ~]# mkdir -p /data/dmdata/bak/
[root@dxfl2 soft]# mkdir -p /data/dmdata/arch
[root@dxfl2 soft]# chmod 755 /data/
[root@dxfl2 soft]# chown -R dmdba:dinstall /data/
[dmdba@dxfl2 ~]$ dminit PATH=/data/dmdata/ INSTANCE_NAME=GRP1_RWW_01 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Wangbowen0204 SYSAUDITOR_PWD=Wangbowen0204
--启动服务:
[dmdba@dxfl2 dmdata]$ dmserver /data/dmdata/DAMENG/dm.ini
--开启归档:
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
--修改dm.ini文件(直接命令行修改):
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
-------
--或者修改dm.ini文件
INSTANCE_NAME = #实例名
PORT_NUM = #数据库实例监听端口
DW_PORT = #守护环境下,监听守护进程连接端口
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
启动DMAP服务,备份数据,(使用图形化创建实例时,会自动启动此服务,但是如果使用dminit创建,需要自己启动)
[dmdba@dxfl2 ~]$ ./dmdbms/bin/service_template/DmAPService start
Starting DmAPService: [ OK ]
[dmdba@dxfl2 ~]$ dmrman CTLSTMT="BACKUP DATABASE '/data/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/data/dmdata/bak'"
2.1.2 修改归档配置文件dmarch.ini
[dmdba@dxfl2 ~]$ vi /data/dmdata/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 1 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmdata/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RWW_02 #实时归档目标实例名
2.1.3 创建 dmmal.ini
[dmdba@dxfl2 ~]$ vi /data/dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /data/dmdata/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = GRP1_RWW_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 10.10.11.17 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.10.122.24 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 10.10.11.18
MAL_PORT = 5337
MAL_INST_HOST = 10.10.122.25
MAL_INST_PORT = 5236
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537
配置守护进程
[dmdba@dxfl2 ~]$ vi /data/dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /data/dmdata/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 #指定备库重演日志的时间阈值,默认关闭
2.1.4 注册服务
[root@dxfl2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RWW_01 -dm_ini /data/dmdata/DAMENG/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceGRP1_RWW_01.service → /usr/lib/systemd/system/DmServiceGRP1_RWW_01.service.
创建服务(DmServiceGRP1_RWW_01)完成
[root@dxfl2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
2.1.5将备份传到B节点
[dmdba@dxfl2 bak]$ scp bak.bak bak.meta dmdba@10.10.11.18:/data/dmdata/bak/
2.2 配置B机器
2.2.1 初始化实例并恢复数据
--初始化实例:
dminit PATH=/data/dmdata/ INSTANCE_NAME=GRP1_RWW_02 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Wangbowen0204 SYSAUDITOR_PWD=Wangbowen0204
--恢复数据:
[dmdba@dxfl3 ~]$ /home/dmdba/dmdbms/bin/service_template/DmAPService start
--从备份恢复:
dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdata/bak'"
--更新数据库:
dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
2.2.2 配置参数文件
配置 dm.ini、dmmal.ini 和 dmwatcher.ini
配置dm.ini
vi /data/dmdata/DAMENG/dm.ini
INSTANCE_NAME = GRP1_RWW_02
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息
将dmmal.ini和dmwatcher.ini从A机器拷贝过来即可
2.2.3 注册服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RWW_02 -dm_ini /data/dmdata/DAMENG/dm.ini
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini
• 手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。
• 自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。
[dmdba@dxfl1 data]$ vi /dmdata/data/dmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 10.10.122.24:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 10.10.122.25:5437
切换root用户注册服务:
[root@dxfl1 ~]# /dmdata/data/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/data/dmmonitor.ini
A机器:
[dmdba@dxfl2 ~]$ DmServiceGRP1_RWW_01 start
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY;
[dmdba@dxfl3 ~]$ DmServiceGRP1_RWW_02 start
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
[dmdba@dxfl2 ~]$ DmWatcherServiceWatcher start
[dmdba@dxfl3 ~]$ DmWatcherServiceWatcher start
文章
阅读量
获赞
