ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

DM7一主两备数据库搭建以及故障演练

2021-04-01 11:29:11  阅读:291  来源: 互联网

标签:10.111 两备 purged MAL trx INST DM7 一主 pages


背景:
DM7常见的数据守护是一主一备2台数据库,某些特殊场景需要用到一主两备3台数据库来提升数据安全。该篇文章主要介绍一主两备数据库的搭建方法以及故障切换测试。

一、环境
服务器ip 数据库状态 内存
10.111.77.79 主库 31G
10.111.77.80 备库 31G
10.111.77.81 备库 31G

数据库安装包DMInstall.bin

二、部署一主两备(79/80/81):
2.1、分别在3台服务器上安装数据库软件
cd /opt
[dmdba@YNKJ-XZZHGLXT7779 opt]$ ./DMInstall.bin -i

2.2、在10.111.77.79上初始化数据库实例
[dmdba@YNKJ-XZZHGLXT7779 bin]$ pwd
/dmdata1/dmdbms/bin
[dmdba@YNKJ-XZZHGLXT7779 bin]$ ./dminit path=/dmdata1 db_name=TEST instance_name=YNZHTEST page_size=16 extent_size=16
initdb V7.6.1.38-Build(2019.12.05-116618)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-12-05
log file path: /dmdata1/TEST/TEST01.log
log file path: /dmdata1/TEST/TEST02.log
write to dir [/dmdata1/TEST].
create dm database success. 2020-08-07 15:04:58

2.3、前台启动数据库
[dmdba@YNKJ-XZZHGLXT7779 bin]$ ./dmserver /dmdata1/TEST/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V7.6.1.38-Build(2019.12.05-116618)ENT startup…
License will expire on 2020-12-05
ckpt lsn: 0
ndct db load finished
ndct fill fast pool finished
set EP[0]'s pseg state to inactive
iid page’s trxid = 1
NEXT TRX ID = 2
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
trx: 2 purged 1 pages
trx: 21 purged 1 pages
trx: 22 purged 1 pages
trx: 23 purged 1 pages
trx: 24 purged 1 pages
trx: 35 purged 1 pages
trx: 155 purged 1 pages
trx: 172 purged 1 pages
trx: 173 purged 1 pages
trx: 174 purged 1 pages
trx: 175 purged 1 pages
trx: 176 purged 1 pages
trx: 177 purged 1 pages
trx: 179 purged 1 pages
trx: 181 purged 1 pages
trx: 184 purged 1 pages
trx: 190 purged 1 pages
trx: 200 purged 1 pages
trx: 208 purged 16 pages
trx: 213 purged 1 pages
trx: 214 purged 1 pages
trx: 215 purged 1 pages
trx: 216 purged 1 pages
trx: 217 purged 1 pages
trx: 218 purged 1 pages
trx: 219 purged 1 pages
trx: 220 purged 1 pages
trx: 221 purged 1 pages
trx: 222 purged 1 pages
trx: 223 purged 1 pages
trx: 224 purged 1 pages
trx: 225 purged 1 pages
trx: 226 purged 1 pages
trx: 227 purged 1 pages
trx: 262 purged 1 pages
trx: 264 purged 1 pages
trx: 265 purged 1 pages
trx: 266 purged 1 pages
trx: 271 purged 10 pages
trx: 298 purged 1 pages
trx: 299 purged 1 pages
trx: 300 purged 1 pages
trx: 301 purged 1 pages
trx: 307 purged 1 pages
trx: 309 purged 1 pages
trx: 311 purged 1 pages
trx: 316 purged 1 pages
trx: 321 purged 1 pages
trx: 326 purged 1 pages
trx: 328 purged 1 pages
trx: 331 purged 1 pages
trx: 333 purged 1 pages
trx: 339 purged 1 pages
trx: 340 purged 1 pages
trx: 351 purged 4 pages
trx: 360 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.

2.4、后台启动脚本制作

[dmdba@YNKJ-XZZHGLXT7779 root]$ ./dm_service_installer.sh help
必须以 root 身份执行此脚本!
[dmdba@YNKJ-XZZHGLXT7779 root]$ su - root
Password:
[root@YNKJ-XZZHGLXT7779 ~]# cd /dmdata1/dmdbms/script/root/
[root@YNKJ-XZZHGLXT7779 root]# ls
dm_service_installer.sh dm_service_uninstaller.sh root_installer.sh
[root@YNKJ-XZZHGLXT7779 root]# ./dm_service_installer.sh help
请设置参数-t或-s
[root@YNKJ-XZZHGLXT7779 root]# ./dm_service_installer.sh -t dmserver -i /dmdata1/TEST/dm.ini -p d
移动服务脚本文件(/dmdata1/dmdbms/bin/DmServiced 到 /etc/rc.d/init.d/DmServiced)
创建服务(DmServiced)完成
[root@YNKJ-XZZHGLXT7779 root]# exit
logout
[dmdba@YNKJ-XZZHGLXT7779 root]$ service DmServiced start
DmServiced service is not running.
Starting DmServiced: [ OK ]

[dmdba@YNKJ-XZZHGLXT7779 bin]$ ./disql SYSDBA/SYSDBA:5237
服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间: 6.867(毫秒)
disql V7.6.1.38-Build(2019.12.05-116618)ENT
SQL>
2.5、拷贝79数据库文件到80/81
5.1 关闭10.111.77.79
service DmServiced stop
5.2拷贝10.111.77.79的数据库文件到80
Scp -r /dmdata1/TEST dmdba@10.111.77.80:/dmdata1
Scp -r /dmdata1/TEST dmdba@10.111.77.81:/dmdata1

2.6、修改配置文件dm.ini
Vi /dmdata1/TEST dm.ini
10.111.77.79
实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过 16
INSTANCE_NAME = YNZH01
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 33141 #守护环境下,监听守护进程连接端口
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
10.111.77.80
实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过 16
INSTANCE_NAME = YNZH02
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 33141 #守护环境下,监听守护进程连接端口
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
10.111.77.81
实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过 16
INSTANCE_NAME = YNZH03
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 33141 #守护环境下,监听守护进程连接端口
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

2.7、修改配置文件dmarch.ini
Vi /dmdata1/TEST/dmarch.ini
10.111.77.79
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = YNZH02 #实时归档目标实例名
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = YNZH03 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 150000 #单位 Mb, 0 表示无限制,范围 1024~4294967294M
ARCH_WAIT_APPLY=0
10.111.77.80
[root@YNKJ-XZ-ZHGLXT7780 bin]# cat /dmdata/YNZH/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = YNZH01
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = YNZH03
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 150000
ARCH_WAIT_APPLY=0
10.111.77.81
[dmdba@YNKJ-XZ-ZHGLXT7781 YNZH]$ cat dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = YNZH02 #实时归档目标实例名
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = YNZH01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 150000 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

2.8、修改配置文件dmmal.ini
Vi /dmdata1/TEST/dmmal.ini
10.111.77.79
[dmdba@YNKJ-XZZHGLXT7779 YNZH]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = YNZH01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.111.77.79 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.111.77.79 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = YNZH02
MAL_HOST = 10.111.77.80
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.80
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
[MAL_INST3]
MAL_INST_NAME = YNZH03
MAL_HOST = 10.111.77.81
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.81
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
10.111.77.80
[dmdba@YNKJ-XZZHGLXT7779 YNZH]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = YNZH01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.111.77.79 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.111.77.79 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = YNZH02
MAL_HOST = 10.111.77.80
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.80
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
[MAL_INST3]
MAL_INST_NAME = YNZH03
MAL_HOST = 10.111.77.81
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.81
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
10.111.77.81
[dmdba@YNKJ-XZZHGLXT7779 YNZH]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = YNZH01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.111.77.79 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.111.77.79 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = YNZH02
MAL_HOST = 10.111.77.80
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.80
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
[MAL_INST3]
MAL_INST_NAME = YNZH03
MAL_HOST = 10.111.77.81
MAL_PORT = 61141
MAL_INST_HOST = 10.111.77.81
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

2.9、修改配置文件dmwatcher.ini
Vi /dmdata1/TEST/dmwatcher.ini
10.111.77.79
[dmdba@YNKJ-XZZHGLXT7779 YNZH]$ cat 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 = /dmdata/YNZH/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
10.111.77.80
[dmdba@YNKJ-XZ-ZHGLXT7780 YNZH]$ cat 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 = /dmdata/YNZH/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
10.111.77.81
[dmdba@YNKJ-XZ-ZHGLXT7781 YNZH]$ cat 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 = /dmdata/YNZH/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

2.10、制作dmwatcher.ctl
10.111.77.79
Cd /opt/dmdbms
./dmctlcvt TYPE=3 SRC=/dmdata1/TEST/dmwatcher.ini DEST=/dmdata1/TEST
10.111.77.80
Scp /dmdata1/TEST/GRP1/dmwatcher.ctl dmdba@10.111.77.80:/dmdata1/TEST
10.111.77.81
Scp /dmdata1/TEST/GRP1/dmwatcher.ctl dmdba@10.111.77.81:/dmdata1/TEST

2.11、设置OGUID
10.111.77.79
SQL>sp_set_oguid(453331);
10.111.77.80
SQL>sp_set_oguid(453331);
10.111.77.81
SQL>sp_set_oguid(453331);

2.12、修改数据库模式
10.111.77.79
SQL>ALTER DATABASE PRIMARY;
10.111.77.80
SQL>ALTER DATABASE STANDBY;
10.111.77.81
SQL>ALTER DATABASE STANDBY;

2.13、配置dmmonitor.ini
选择其中一台配置即可
[dmdba@YNKJ-XZZHGLXT7779 bin]$ cat dmmonitor.ini
MON_DW_Confirm = 0 #确认监视器模式
MON_LOG_PATH = /opt/dmdb/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 4096 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视111.142.80:52141 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.111.77.79:52141
MON_DW_IP = 10.111.77.80:52141
MON_DW_IP = 10.111.77.81:52141
在这里插入图片描述

六、空闲状态主备之间切换机制验证
6.1手动切换验证
主备切换时间10S左右。可以指定切换到任意一台为主库。

切换前状态如下:
在这里插入图片描述

手动切换至YNZH02状态如下:
在这里插入图片描述

手动切换至YNZH03状态如下:
在这里插入图片描述

手动切换至YNZH01状态如下:
在这里插入图片描述

6.2故障自动切换
6.2.1、模拟故障,强杀主库进程
在这里插入图片描述

自动切换消息
在这里插入图片描述

自动拉起故障实例
在这里插入图片描述

6.2.2、强杀备库YNZH02
在这里插入图片描述

自动重启故障实例
在这里插入图片描述

6.2.3、模拟主机故障,关闭主机服务器
在这里插入图片描述

49服务器起来后,实例重新加入
在这里插入图片描述

6.2.4、模拟任一备库故障,关闭备库服务器
在这里插入图片描述

重启81服务器后,实例自动加入
在这里插入图片描述

标签:10.111,两备,purged,MAL,trx,INST,DM7,一主,pages
来源: https://blog.csdn.net/weixin_42447367/article/details/115368921

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有