背景
因用户需要增加远程异地灾备功能,用户要求远距离的备机不能影响原有的主备集群,允许有远程备机有一定延迟,现测试在主备集群增加一台异步备机
IP规划:
主机名 |
服务ip |
心跳ip |
数据库名 |
实例名 |
21 |
192.168.145.21 |
192.168.145.21 |
DAMENG |
DM21 |
22 |
192.168.145.22 |
192.168.145.22 |
DAMENG |
DM22 |
23(异步备机) |
192.168.145.23 |
192.168.145.23 |
DAMENG |
DM23 |
66 |
192.168.145.66 |
192.168.145.66 |
DAMENG |
|
端口规划:
实例名 |
实例端口 |
MAL 系统监听 TCP 连接的端口 |
实例本地的守护进程监听 TCP 连接的端口 |
实例监听守护进程 TCP 连接的端口 |
DM21 |
5236 |
7336 |
7436 |
7536 |
DM22 |
5236 |
7336 |
7436 |
7536 |
DM23 |
5236 |
7336 |
7436 |
7536 |
监视器 |
关闭防火墙 |
目录规划:
数据库软件安装目录 |
/home/dmdba/dmdbms |
实例安装目录 |
/dmdata/ |
归档日志存放目录 |
/dmdata/arch |
配置文件目录 |
/dmdata/DAMENG/ |
2 数据库软件安装及环境配置
2.1 操作系统配置
新建数据库管理用户和组
执行以下命令,新建用户组 dinstall。
groupadd dinstall -g 2001 |
执行以下命令,新建用户 dmdba。
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba |
执行以下命令,修改 dmdba 用户密码。
passwd dmdba |
dameng123
修改用户资源限制
执行以下命令,修改 dmdba 用户资源限制。
vim /etc/security/limits.conf |
文件末尾添加如下内容:
dmdba soft nice 0 dmdba hard nice 0 dmdba soft as unlimited dmdba hard as unlimited dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 65536 dmdba hard nproc 65536 dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited |
执行以下命令,修改 dmdba 用户环境变量。
vi /home/dmdba/.bash_profile |
文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms |
使环境变量生效
source /home/dmdba/.bash_profile |
2.2数据库软件安装
使用root用户挂载数据库软件的iso文件
mkdir -p /dmsoft mount -o loop dm8_20211222_x86_rh6_64_sec_8.4.2.98 /dmsoft |
使用dmdba用户安装软件
su - dmdba |
执行以下命令,切换到 /dmsoft目录下
cd /dmsoft |
执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
./DMInstall.bin -i |
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,key路径/opt。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh |
2.3初始化实例
--21节点执行 dminit path=/dmdata instance_name=DM21 --22节点执行 dminit path=/dmdata instance_name=DM22 --23节点执行 dminit path=/dmdata instance_name=DM23 |
3一主一备集群配置
3.1 节点21和22先搭建主备集群
以主机21为主备集群主库,启动实例
dmserver /dmdata/DAMENG/dm.ini |
出现system is ready后表示数据已正常启动
打开另外一个窗口登录数据库
disql SYSDBA/SYSDBA |
然后退出并关闭数据库。
3.2脱机备份数据库
在主机21上执行以下命令,dmdba用户 启动dmrman工具
dmrman use_ap=2 |
执行 backup 全库:
BACKUP DATABASE '/dmdata/DAMENG/dm.ini' BACKUPSET '/dmdata/bakfull'; |
3.3备份还原备库
将备份的文件/dmdata/bakfull拷贝到22节点服务器上。
scp -r /dmdata/bakfull [email protected]:/dmdata/bakfull |
在22节点上使用 dmrman 工具还原备库,dmdba 用户执行:
dmrman use_ap=2 |
进入dmrman工具交互界面
执行 restore:
RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/bakfull'; |
完成后执行 recover:
recover database '/dmdata/DAMENG/dm.ini' from backupset '/dmdata/bakfull'; |
最后执行 recover update db_magic。
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC; |
3.4修改dm.ini参数
两节点21和22都要修改,执行以下命令:
vi /dmdata/DAMENG/dm.ini |
所有节点修改以下参数值:
MAL_INI = 1 |
3.5配置归档配置文件 dmarch.ini
在实例目录下新建文件 dmarch.ini,执行以下命令:
vi /dmdata/DAMENG/dmarch.ini |
主库21上添加以下内容:
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DM22 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT =10000#单位 Mb,0 表示无限制,范围 1024~4294967294M |
备库22上添加以下内容:
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST =DM21 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT =10000#单位 Mb,0 表示无限制,范围 1024~4294967294M |
3.6配置MAL系统配置文件 dmmal.ini
在实例目录下新建文件 dmmal.ini,执行以下命令。
vi /dmdata/DAMENG/dmmal.ini |
主备库2个节点文件内容要相同。
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME =DM21 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST =192.168.145.21#MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST =192.168.145.21#实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 7536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DM22 MAL_HOST = 192.168.145.22 MAL_PORT = 7336 MAL_INST_HOST = 192.168.145.22 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 |
3.7配置守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vi /dmdata/DAMENG/dmwatcher.ini |
主备2节点文件内容要相同。
[GRP_RW] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #AUTO自动切换模式 DW_ERROR_TIME = 30 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一 OGUID 值 INST_INI = /dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDM start #服务方式启动 |
以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):
dmserver /dmdata/DAMENG/dm.ini mount |
在新的终端使用 disql 工具连接数据库:
disql SYSDBA/SYSDBA |
主备库都修改 oguid,执行以下命令:
sp_set_oguid(453331); |
主库21上修改数据库模式为 primary,执行以下命令:
alter database primary; |
备库222上修改数据库模式为 standby,执行以下命令:
alter database standby; |
启动守护进程(使用dmdba 用户,主备库都执行)
dmwatcher /dmdata/DAMENG/dmwatcher.ini |
3.8注册服务
用 root 用户,到数据库安装目录script/root下
cd /home/dmdba/dmdbms/script/root |
注册守护进程服务(主备库都执行)。
./dm_service_installer.sh -t dmwatcher -p DM -watcher_ini /dmdata/DAMENG/dmwatcher.ini |
注册数据库实例服务(主备库都执行):
./dm_service_installer.sh -t dmserver -p DM -dm_ini /dmdata/DAMENG/dm.ini |
以服务方式启动
执行以下命令,启动数据库实例:
systemctl start DmServiceDM |
执行以下命令,启动守护进程:
systemctl start DmWatcherServiceDM |
3.9验证主备集群同步状态
监视器查看主备集群状态
在监视器主机配置监视器,执行以下命令:
vi /dmdata/DAMENG/dmmonitor.ini |
添加以下内容:
MON_DW_Confirm =1 #0普通监视器模式 |
执行以下命令,启动监视器:
dmmonitor /dmdata/DAMENG/dmmonitor.ini |
输入 show 命令查看集群状态:
其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 TIMELY,归档状态 RSTAT 为VALID。
4 在搭建好的主备集群上增加一台异步备机
4.1登录主库,执行联机备份
备份路径要有足够空间:
backup database backupset '/dmdata/bakful'; |
将备份文件复制到新增备机节点
scp -r /dmdata/bakful [email protected]:/dmdata |
4.2 登录新备机使用dmrman还原
dmrman use_ap=2
RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/bakful'; RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/bakful'; RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC; |
4.3配置新备库
配置dm.ini
在dm.ini 文件修改如下
MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 |
配置 dmmal.ini
拷贝一份原系统 dmmal.ini 文件,并加上自己一项,最终配置如下
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME =DM21 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST =192.168.145.21#MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST =192.168.145.21#实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 7536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DM22 MAL_HOST = 192.168.145.22 MAL_PORT = 7336 MAL_INST_HOST = 192.168.145.22 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST3] MAL_INST_NAME = DM23 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.145.23 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.145.23 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 7536#实例监听守护进程 TCP 连接的端口 |
配置 dmarch.ini
异步备机只需配置本地归档
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/arch #本地归档文件路径 ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 10000 #单位 Mb,0 表示无限制,范围 1024~4294967294M |
配置 dmwatcher.ini
异步备库不具备故障自动切换等功能,只需配置本地守护进程和手工切换
[GRP_RW] DW_TYPE = LOCAL #本地守护类型 DW_MODE = MANUAL #AUTO自动切换模式 DW_ERROR_TIME = 30 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一 OGUID 值 INST_INI = /dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDM start #服务方式启动 |
启动新备库
以Mount方式启动备库
./dmserver /dmdata/DAMENG/dm.ini mount |
启动命令行工具 DIsql,设置 OGUID和修改数据库为 Standby 模式
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); |
4.4 原主备集群配置
修改监视器 dmmonitor.ini配置
配置如下
MON_DW_Confirm =1 #0普通监视器模式 MON_LOG_PATH = /dmdata/dmonilog #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间 [GRP_RW] MON_INST_OGUID = 453331 #组 GRP_RW 的唯一 OGUID 值 #以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP =192.168.145.21:7436 MON_DW_IP = 192.168.145.22:7436 MON_DW_IP = 192.168.145.23:7436 |
配置 dmmal.ini
原系统中每个实例都执行,每个实例内容都要一样
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME =DM21 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST =192.168.145.21#MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST =192.168.145.21#实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 7536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DM22 MAL_HOST = 192.168.145.22 MAL_PORT = 7336 MAL_INST_HOST = 192.168.145.22 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST3] MAL_INST_NAME = DM23 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.145.23 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.145.23 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 7536#实例监听守护进程 TCP 连接的端口 |
配置文件 dm.ini,打开定时器配置,其他配置不变
原集群主备库都执行
TIMER_INI = 1 |
配置dmarch.ini
在原有归档配置基础上,增加异步归档的配置项,主备都添加
[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = DM23 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致 |
配置定时器 dmtimer.ini,用于定时触发实例发送归档日志到异步备库
原主备库都配置(这里设置每隔二分钟定时发生一次)
[RT_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致 TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 1 FREQ_MINUTE_INTERVAL = 2 START_TIME = 00:00:00 END_TIME = 00:00:00 DURING_START_DATE = 2022-12-13 16:15:09 DURING_END_DATE = 9999-12-31 23:59:59 NO_END_DATE_FLAG = 1 DESCRIBE = RT TIMER IS_VALID = 1 |
4.5 配置普通监视器
监视器服务器配置一个普通监视器,以便观察集群状态,是否正常
Vi /dmdata/DAMENG/dmmonitorp.ini
MON_DW_Confirm =0 #0普通监视器模式 MON_LOG_PATH = /dmdata/dmonilog #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间 [GRP_RW] MON_INST_OGUID = 453331 #组 GRP_RW 的唯一 OGUID 值 #以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP =192.168.145.21:7436 MON_DW_IP = 192.168.145.22:7436 MON_DW_IP = 192.168.145.23:7436
|
4.6 重启原主备守护进程及实例,让配置文件生效,
重启确认监视器服务
systemctl restart DmMonitorServiceDM |
打开普通监视器,观察集群状态,重启成功之后,才能依次执行下一步重启操作
原集群主备及新增的备机守护进程都启动(先备后主,异步备机创建服务参考3.8步骤)
systemctl restart DmWatcherServiceDM |
原集群主备实例服务都重启(先主后备)
systemctl restart DmServiceDM |
正常之后,进行数据同步测试
标签:异步,备机,PORT,实例,INST,ini,主备,MAL,dmdata From: https://www.cnblogs.com/fangzpa/p/16988504.html