暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

DM8主备集群部署

主备集群为最基础的高可用架构,只有主库对外提供数据库服务,备库仅做备份,根据实际要求及网络条件,可以选择配置为自动切换或者手动切换模式。

1 手动切换模式

1.1部署规划

1主1备,2节点主备集群部署规划

IP规划:

主机名 服务ip 心跳ip 数据库名 实例名
dmdb01 192.168.10.100 10.0.0.100 dmdb dw1
dmdb02 192.168.10.101 10.0.0.101 dmdb dw2

端口规划:

实例名 实例端口 MAL 系统监听 TCP 连接的端口 实例本地的守护进程监听 TCP 连接的端口 实例监听守护进程 TCP 连接的端口
dw1 5236 7336 7436 7536
dw2 5236 7336 7436 7536

本地存储LVM磁盘规划:(按实际需求调整磁盘空间)

磁盘 LVM磁盘名/用途
/dev/sdc(100G) /dev/dmappvg/dmapplv (数据库安装磁盘)
/dev/sde(500G) /dev/dmdatavg/dmdatalv (数据磁盘)
/dev/sdf(500G) /dev/dmbakvg/dmbaklv (备份磁盘)

目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)

目录名 目录位置
数据库软件安装目录 /home/dmdba/dmdbms
实例安装目录 /dmdata/
归档日志存放目录 /dmdata/arch
备份文件存放目录 /dmdata/dmbak/

1.2 数据库软件安装

参考单机安装文档第2节:《DM8单机部署》https://www.modb.pro/db/2067442898636447744

1.3主备集群配置

1.3.1初始化实例

3个节点完成实例初始化
执行以下命令

dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@d****g123" 

--安全版需要SYSSSO_PWD="Hn@d****g123" 参数

以主机dmdb01为主库,启动实例

dmserver /dmdata/dmdb/dm.ini

出现system is ready后输入exit停止数据库。

1.3.2脱机备份数据库

在主机dmdb01上执行以下命令,确认主库 dmap 服务已启动:

ps -ef|grep dmap

图片.png

若未启动,则先启动 DMAP 服务,dmdba 到安装目录的 bin 下执行以下命令:

./DmAPService start

dmdba用户 启动dmrman工具

dmrman use_ap=2

执行 backup 全库:

backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';

1.3.3备份还原备库

将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。
在主机dmdb02上使用 dmrman 工具还原备库,dmdba 用户执行:

dmrman	

进入dmrman工具交互界面执行 restore:

restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

完成后执行 recover:

recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

最后执行 recover update db_magic。

recover database '/dmdata/dmdb/dm.ini'  update db_magic;

1.3.4修改dm.ini参数

所有节点都要修改
执行以下命令:

vi /dmdata/dmdb/dm.ini

主库dmdb01上修改以下参数值:

INSTANCE_NAME = dw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

备库dmdb02上修改以下参数值:

INSTANCE_NAME = dw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

1.3.5配置归档配置文件 dmarch.ini

在实例目录下新建文件 dmarch.ini,执行以下命令:

vi /dmdata/dmdb/dmarch.ini

主库dmdb01上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME  
ARCH_DEST     = dw2   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400

备库Dmdb02上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME 
ARCH_DEST     = dw1   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmdata/arch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400    

1.3.6配置MAL系统配置文件 dmmal.ini

在实例目录下新建文件 dmmal.ini,执行以下命令。

vi /dmdata/dmdb/dmmal.ini

主备库3个节点文件内容要相同。

MAL_CHECK_INTERVAL   = 5  
MAL_CONN_FAIL_INTERVAL  = 15  
[MAL_INST1]
  MAL_INST_NAME = dw1 
  MAL_HOST     = 10.0.0.100  
  MAL_PORT     = 7336
  MAL_INST_HOST   = 192.168.10.100  
  MAL_INST_PORT   = 5236 
  MAL_DW_PORT   = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST2]
  MAL_INST_NAME = dw2 
  MAL_HOST      = 10.0.0.101  
  MAL_PORT          = 7336
  MAL_INST_HOST         = 192.168.10.101  
  MAL_INST_PORT         = 5236 
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536

1.3.7配置守护进程配置文件 dmwatcher.ini

在实例目录下新建文件 dmwatcher.ini,执行以下命令:

vi /dmdata/dmdb/dmwatcher.ini

主备库2节点文件内容要相同。

[GRP_DW] 
DW_TYPE    = GLOBAL  
DW_MODE    = MANUAL 
DW_ERROR_TIME     = 30  
INST_RECOVER_TIME  = 60         
INST_ERROR_TIME   = 20  
INST_OGUID         = 453331 
INST_INI           = /dmdata/dmdb/dm.ini 
INST_AUTO_RESTART  = 1   
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver 

以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):

dmserver /dmdata/dmdb/dm.ini mount

在新的终端使用 disql 工具连接数据库:

disql SYSDBA/'"Hn@d****g123"'

主备库都修改 oguid,执行以下命令:

sp_set_oguid(453331);

如果提示修改不了,使用以下方式修改:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

主库dmdb01上修改数据库模式为 primary,执行以下命令:

alter database primary;

备库dmdb02上修改数据库模式为 standby,执行以下命令:

alter database standby;

启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):

dmwatcher /dmdata/dmdb/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。

启动普通监视器(可以在任意节点配置,一般在备节点配置,手动切换时可以配置验证一下集群状态)
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上配置(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。见2.1.2章节。

新建普通监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dmdata/dmdb/dmmonitor.ini

添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。

MON_DW_CONFIRM    = 0 #普通监视器模式
MON_LOG_PATH    = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT  = 1024  #不限定日志文件总占用空间
[GRP_DW] 
 MON_INST_OGUID    = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 10.0.0.100:7436
 MON_DW_IP     = 10.0.0.101:7436

执行以下命令,启动监视器。

dmmonitor /dmdata/dmdb/dmmonitor.ini	

启动后输入 show 命令查看集群状态。

1.3.8 配置sql日志

所有节点修改sqllog.ini
到实例路径下

cd /dmdata/dmdb/
vi sqllog.ini
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 2:3:25
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS = 

1.3.9 注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/dmdb/dmwatcher.ini	

注册数据库实例服务(主备库都执行):

./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/dmdb/dm.ini

以服务方式启动
执行以下命令,启动数据库实例:

systemctl start DmServicedw

执行以下命令,启动守护进程:

systemctl start DmWatcherServicedw

1.3.10 验证主备集群同步状态

监视器查看主备集群状态
集群任意节点,配置普通监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dmdata/dmdb/dmmonitor.ini

添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。

MON_DW_Confirm    = 0   #普通监视器模式
MON_LOG_PATH    = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT  = 1024  #不限定日志文件总占用空间
[GRP_DW] 
 MON_INST_OGUID    = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 10.0.0.100:7436
 MON_DW_IP     = 10.0.0.101:7436

执行以下命令,启动监视器:

./dmmonitor /dmdata/dmdb/dmmonitor.ini

输入 show 命令查看集群状态:
其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 TIMELY,归档状态 RSTAT 为VALID。

disql 客户端验证
使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:

disql SYSDBA/'"Hn@d****g123"'@192.168.10.100:5236

SQL 提示符下执行以下命令:

create table test(id int);
insert into test values (1);
commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

disql SYSDBA/'"Hn@d****g123"'@192.168.10.101:5236

SQL 提示符下执行以下命令:

select * from test;

查看数据是否正常同步。

1.3.11参数优化

集群部署完成后,需要优化 dm.ini 参数,主备库都需要修改。参数值优化需要联系达梦获取最新脚本。

重启集群(参数修改后需要重启集群)
严格安装顺序执行
集群重启:
关闭主库守护进程:systemctl stop DmWatcherServicedw
关闭备库守护进程:systemctl stop DmWatcherServicedw
关闭主库实例:systemctl stop DmServicedw
关闭备库实例:systemctl stop DmServicedw
启动主库实例:systemctl start DmServicedw
启动备库实例:systemctl start DmServicedw
启动主库守护进程:systemctl start DmWatcherServicedw
启动备库守护进程:systemctl start DmWatcherServicedw

1.3.12定制备份策略

备份与单机相同,详见《DM8单机部署》https://www.modb.pro/db/2067442898636447744
(主库备份即可)

1.3.13客户端连接集群

客户端主机上需要配置 dm_svc.conf 文件(未安装 DM 数据库的机器新建即可),文件路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc 目录。
文件内容:

# 以#开头的行表示是注释
# 全局配置区
DMDW=(192.168.10.100:5236,192.168.10.101:5236)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
# 服务配置区
[DMDW]
LOGIN_MODE=(1) #只连主库

客户端程序连接数据库时,需要指定 IP 端口处替换为服务名即可,例如:

disql SYSDBA/'"Hn@d****g123"'@DMDW

jdbc的url为:jdbc:dm://DMDW

注意
当修改了 dm_svc.conf 内容后,需要重启客户端程序,修改的配置才能生效。

2.自动切换模式

自动切换模式需要修改守护进程模式为自动模式(DW_MODE=AUTO),需要在集群外服务器上部署确认监视器,(注意数据库版本统一)

2.1.1配置守护进程配置文件 dmwatcher.ini

在实例目录下新建文件 dmwatcher.ini,执行以下命令:

vi /dmdata/dmdb/dmwatcher.ini

主备库2节点文件内容要相同。

DW_MODE改为自动切换模式

[GRP_DW] 
DW_TYPE    = GLOBAL  #全局守护类型
DW_MODE    = AUTO  #自动切换模式
DW_ERROR_TIME     = 30  #远程守护进程故障认定时间
INST_RECOVER_TIME  = 60         #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME   = 20  #本地实例故障认定时间
INST_OGUID         = 453331 #守护系统唯一 OGUID 值
INST_INI           = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART  = 1   #打开实例的自动启动功能
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

2.1.2启动监视器(在主备之外节点配置)

守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备机器心跳网络端口开放)。
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dmdata/dmdb/dmmonitor.ini

添加以下内容:

MON_DW_CONFIRM    = 1   #确认监视器模式
MON_LOG_PATH    = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT  = 1024  #不限定日志文件总占用空间
[GRP_DW] 
 MON_INST_OGUID    = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 10.0.0.100:7436
 MON_DW_IP     = 10.0.0.101:7436

注册监视器服务:
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dmdata/dmdb/dmmonitor.ini

以服务方式启动监视器服务
执行以下命令,启动数据库实例:

systemctl start DmMonitorServiceconfirm
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论