一、安装前准备
1.1 硬件环境建议
数据守护集群安装部署前需要额外注意操作系统、CPU、网络环境和磁盘 IO 配置情况,其他环境配置项建议请参考安装前准备工作。
1.1.1 操作系统检查
为了确保集群的高效性,需要对各节点操作系统版本进行检查。不同操作系统版本存在性能差异,如果各节点服务器的操作系统版本不同,会严重影响集群的整体性能,尤其是故障切换后可能存在响应服务请求慢的情况。在正式生产环境中,建议安装统一版本的操作系统,确保系统各节点版本以及内核版本一致。
1.1.2 CPU 架构检查
国产化工作开展以来,国产化芯片种类很多,作为数据库集群来说,需要确保各节点服务器的 CPU 一致。不同芯片的性能不同,如果各节点服务器的 CPU 不一致,则会严重影响集群的整体性能,从而影响整体服务响应的效果。在正式生产环境中,建议使用统一配置的服务器。
1.1.3 网络环境
心跳网络对 mal 通讯系统的影响非常大,如果网络丢包或者延迟较大,则会严重影响 mal 系统的处理能力,从而导致整个集群出现响应服务请求慢的情况。为确保集群的稳定性,网络配置如下:
- 使用千兆或千兆以上网络;
- 集群间的心跳网络需同步数据,建议尽量使用两个交换机构建内网,以实现冗余和负载均衡;
- 建议服务器采用两个网卡绑定为一个逻辑网卡来使用(比如 bond 方式)。
1.1.4 磁盘 IO
磁盘 IO 的读写速率会极大影响系统性能和用户体验。因此在进行集群安装部署前,应测试 IO 性能能否满足系统功能和性能需求。
IO 性能指标与系统的并发数、热点数据等因素往往密切相关。在数据守护集群,尤其生产系统中,推荐使用高性能 SSD 磁盘,以获得更佳性能,保证集群数据的实时同步。
1.2 集群规划
A 机器 | B 机器 | |
业务 IP | 172.16.1.1 | 172.16.1.2 |
心跳 IP | 192.168.1.1 | 192.168.1.2 |
实例名 | GRP1_RT_01 | GRP1_RT_02 |
实例端口 | 5236 | 5236 |
MAL 端口 | 5336 | 5336 |
MAL 守护进程端口 | 5436 | 5436 |
守护进程端口 | 5536 | 5536 |
OGUID | 45331 | 45331 |
守护组 | GRP1 | GRP1 |
安装目录 | /opt/dmdbms | /opt/dmdbms |
实例目录 | /opt/dmdbms/data/ | /opt/dmdbms/data/ |
归档上限 | 51200 | 51200 |
确认监视器 IP 为 10.10.10.10。
说明:具体规划及部署方式以现场环境为准。
1.3 集群架构
搭建的主备集群架构如下图:
1.4 切换模式说明
故障切换方式 | dmarch | dmwatcher | dmmonitor | 监视器要求 |
故障手动切换 | ARCH_WAIT_APPLY=0 | DW_MODE=MANUAL | MON_DW_CONFIRM=0 | 1、配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。 |
故障自动切换 | ARCH_WAIT_APPLY=0 | DW_MODE=AUTO | MON_DW_CONFIRM=1 | 1、配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。 2、配置自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。 |
ARCH_WAIT_APPLY
参数,设置为 0:高性能模式;设置为 1:事务一致模式。- 故障手动切换情境下
ARCH_WAIT_APPLY
只能为 0。故障自动切换情境下ARCH_WAIT_APPLY
可以为 0,也可以为 1。 ARCH_WAIT_APPLY
参数设置的判断依据为业务是否要查询备机最新数据。如果需要,则配置为 1(较大性能衰减);如果不需要,则配置为 0。
二、集群搭建
2.1 配置 A 机器
2.1.1 初始化实例并备份数据
- 初始化实例
- 启动服务
- 开启归档
- 备份数据
- 修改 dm.ini
- 关闭前台实例服务
2.1.2 修改 dmarch.ini
2.1.3 创建 dmmal.ini
2.1.4 创建 dmwatcher.ini
2.1.5 拷贝备份文件
2.1.6 注册服务
若要删除自启,可利用如下方式:
2.2 配置 B 机器
2.2.1 初始化实例
2.2.2 恢复数据
2.2.3 替换 dmarch.ini
2.2.4 配置 dm.ini、dmmal.ini 和 dmwatcher.ini
配置 dm.ini
在 B 机器上配置备库的实例名为 GRP1_RT_02,dm.ini 参数修改如下:
配置 dmmal.ini 和 dmwatcher.ini
2.2.5 注册服务
若要删除自启,可利用如下方式:
2.3 配置确认监视器
在第三台机器 10.10.10.10 上配置确认监视器,存放确认监视器配置文件,并注册后台自启服务。
2.3.1 创建 dmmonitor.ini
配置非确认监视器:集群各节点的 bin 目录中,存放非确认监视器配置文件。
在配置监视器时,一般配置好确认监视器后,建议再配置一个非确认监视器的配置文件,在主备发生切换时,可以通过前台的方式启动非确认监视器进行手动切换。非确认监视器是通过将监视器配置文件中 MON_DW_CONFIRM
参数值修改为 0 来实现,示例如下:
2.3.2 注册服务
非确认监视器无需注册服务。
若要删除自启服务,可利用如下方式:
2.3.3 监视器使用
命令 | 含义 |
list | 查看守护进程的配置信息 |
show global info | 查看所有实例组的信息 |
tip | 查看系统当前运行状态 |
login | 登录监视器 |
logout | 退出登录 |
choose switchover GRP1 | 主机正常:查看可切换为主机的实例列表 |
switchover GRP1. 实例名 | 主机正常:使用指定组的指定实例,切换为主机 |
choose takeover GRP1 | 主机故障:查看可切换为主机的实例列表 |
takeover GRP1. 实例名 | 主机故障:使用指定组的指定实例,切换为主机 |
choose takeover force GRP1 | 强制切换:查看可切换为主机的实例列表 |
takeover force GRP1. 实例名 | 强制切换:使用指定组的指定实例,切换为主机 |
对于在生产环境中配置有确认监视器时,主备只是发生了切换的情况下,再想将主备切换回去时,只需要启动非确认监视器执行切换命令即可。
例如,有主库 GRP1_RT_01 与备库 GRP1_RT_02 发生切换,恢复方法如下:
1)通过前台方式启动非确认监视器。
从监视器中可以看到 GRP1_RT_02 变成了主库,GRP1_RT_01 变成了备库。
2)检查集群状态。
可通过监视器命令 tip
或 show
来检查集群状态是否正常。
通过 tip
命令可以看到集群状态正常。
3)登录非确认监视器。
在非确认监视器中输入 login
再输入用户名和密码登录监视器。
4)查看满足切换条件的实例。
输入命令 choose switchover 组名
查看可切换为主机的实例列表。
可以看到 GRP1_RT_01 可以进行切换。
5)主备切换。
执行命令 switchover GRP1.实例名
进行切换。
切换成功,GRP1_RT_01 恢复到主库对外提供服务。
6)退出非确认监视器。
先通过监视器命令 tip
和 show
检查当前集群状态。
集群状态正常,执行 exit
命令退出监视器。
2.4 启动服务及查看信息
2.4.1 启动数据库并修改参数
2.4.2 启动守护进程
2.4.3 启动监视器
2.5 启停集群
三、dm_svc.conf 配置
3.1 简介
dm_svc.conf
是使用达梦数据库时非常重要的配置文件,它包含了达梦各接口和客户端工具所需要配置的一些参数。通过它可以实现达梦各种集群的读写分离和均衡负载,且必须和接口 / 客户端工具位于同一台机器上才能生效。
初始 dm_svc.conf 文件由达梦安装时自动生成。不同的平台生成目录有所不同,注意相应访问用户需要对该文件有读取权限。
- 32 位的 DM 安装在 Win32 操作平台下,此文件位于 % SystemRoot%\system32 目录;
- 64 位的 DM 安装在 Win64 操作平台下,此文件位于 % SystemRoot%\system32 目录;
- 32 位的 DM 安装在 Win64 操作平台下,此文件位于 % SystemRoot%\SysWOW64 目录;
- 在 Linux 平台下,此文件位于 /etc 目录。
但在某些情况下,所使用的用户没有读取和修改 /etc
目录下文件的权限,这时就需要将 dm_svc.conf
文件放到有权限的目录下,并修改 url 连接串的内容。以 Linux 平台,文件放在 /home/dmdba
目录下为例:
- 在
/home/dmdba
目录下,编辑dm_svc.conf
文件。
- 修改连接串。
dm_svc.conf
配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置所有的配置项,服务配置区在后,以 “[服务名]” 开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区(服务配置区的相同配置项会覆盖全局配置区对应的配置项)。
3.2 常用配置项介绍
- 服务名
用于连接数据库的服务名,参数值格式为:
服务名 =(IP [:PORT],IP [:PORT],……)。
- TIME_ZONE
指明客户端的默认时区设置范围为:-779~840M,如 60 对应 +1:00 时区,+480 对于东八区,如果不做配置默认是操作系统的时区。
- KEYWORDS
该参数可以用于屏蔽数据库关键字,如果数据库关键字在 SQL 语句中以单词的形式存在,无法识别需要加上双引号或者可以通过该参数来屏蔽关键字,建议大小写都写入参数中。
例如:KEYWORDS=(versions,VERSIONS,type,TYPE)
。
- LOGIN_MODE
指定优先登录的服务器模式。
- 0:优先连接 PRIMARY 模式的库,NORMAL 模式次之,最后选择 STANTBY 模式。
- 1:只连接主库。
- 2:只连接备库。
- 3:优先连接 STANDBY 模式的库,PRIMARY 模式次之,最后选择 NORMAL 模式。
- 4:优先连接 NORMAL 模式的库,PRIMARY 模式次之,最后选择 STANDBY 模式。
注意
在 2021 年版本之后,此参数的默认值由 0 变更为 4。该参数详细介绍及使用办法请参考《DM 数据守护与读写分离集群》-5.8 章节。手册位于数据库安装路径 /dmdbms/doc 文件夹。
- SWITCH_TIMES
表示以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围 1~9223372036854775807,默认值为 1,可以设置至少 3 次用来避免由于网卡的波动,造成数据库连接测频繁切换。
- SWITCH_INTERVAL
表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~9223372036854775807。与参数 SWITCH_TIMES、EP_SELECTOR 配合使用,EP_SELECTOR 设置为 0,等待 SWITCH_INTERVAL 后会切换尝试连接下一个服务器,EP_SELECTOR 设置为 1,等待 SWITCH_INTERVAL 后会继续尝试连接该服务器,直到 SWITCH_TIMES 次再切换下一个服务器。
- EP_SELECTOR
表示连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接。
- AUTO_RECONNECT
表示连接发生异常或一些特殊场景下连接处理策略。0:关闭连接,1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个 SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理;2 配合 EP_SELECTOR=1
使用,如果服务名列表前面的节点恢复了,将当前连接切换到前面的节点上,可以根据应用的实际要求设定。
3.3 常用配置
3.3.1 单机配置
配置示例:
连接示例:
- Disql 连接:
- 通过管理工具连接:
3.3.2 主备集群配置
- 配置示例:
- jdbc 连接串:
四、查询
官方文档地址
https://eco.dameng.com/document/dm/zh-cn/ops/DW-installation-cluster.html