一主一备构建达梦集群

本文适合对象:在达梦官网翻阅过文档,需要参考实际生产环境搭建的小伙伴

概述:

xxx项目采用物理机搭建实施主备集群,实时主备由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。
实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。
主库修改数据产生的Redo日志,通过实时归档机制,
在写入联机Redo日志文件之前发送到备库,实时备库通过重演Redo日志与主库保持数据同步。
当主库出现故障时,备库在将所有Redo日志重演结束后,就可以切换为主库对外提供数据库服务

注意:以下路径自定义,xxx项目产环境采用/opt/dmdbms,由于各步骤配置相互依赖,如服务名,请完整阅读后进行操作

大白话:你需要准备2台机器,装2个节点,机器不够的话,监视器可以随便装在其中一台上面,今儿实现主备切换

1 环境准备

为了方便理解,文章随便写了两个ip11.11.11.11,22.22.22.222 ,观众老爷可以根据自己的ip全文替换

服务器 主库IP:11.11.11.11   dm8数据库 实例名 :DMDW1 端口号:5236
服务器 备库IP:22.22.22.222   dm8数据库 实例名 :DMDW2 端口号:5236

数据库启动服务命令路径/dm8/bin,实例配置文件路径/dm8/data/DAMENG/

2 主备库分别初始化实例

./dminit path=/dm8/data page_size=32instance_name=DMDW1
./dminit path=/dm8/data page_size=32instance_name=DMDW2

3 备份还原

如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据,如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。

3.1 主库创建实例之后,启动数据库并登录

./dmserver /dm8/data/DAMENG/dm.ini

3.2 关闭数据库,以dmrman备份数据库

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini'BACKUPSET '/dm8/data/backup';

3.3 将备份文件复制到备库对应目录下(如果是root用户,复制成功需要将备份文件设置属于dmdba:dinstall用户组)

scp -r /dm8/data/backup dmdba@22.22.22.222:/dm8/data/backup

3.4 备库启动dmrman执行数据库还原

RESTORE DATABASE '/dm8/data/DAMENG/dm.ini'FROM BACKUPSET '/dm8/data/backup';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini'FROM BACKUPSET '/dm8/data/backup';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATEDB_MAGIC;

4 配置集群文件

4.1 vim dm.ini #主备库实例都需更改下面参数

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL系统
ARCH_INI = 1 #打开归档配置

4.2 vim dmmal.ini #主备库配置必须完全一致

MAL_CHECK_INTERVAL       = 5     #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL   = 5  #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME    = DMDW1 #实例名,和dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST              = 11.11.11.11 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT              = 61141    #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST    = 11.11.11.11 #实例的对外服务 IP 地址
MAL_INST_PORT    = 5236 #实例的对外服务端口,dm.ini中的 PORT_NUM 一致
MAL_DW_PORT      = 52141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT    = 33141 #实例监听守护进程TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME       = DMDW2
MAL_HOST                 = 22.22.22.222
MAL_PORT                 = 61141
MAL_INST_HOST       = 22.22.22.222
MAL_INST_PORT       = 5236
MAL_DW_PORT         = 52141
MAL_INST_DW_PORT    = 33141

4.3 vim dmarch.ini #主备库归档目标实例名不一致,其他一致

#与联机 Redo 日志文件可以被覆盖重用不同,本地归档日志文件不能被覆盖,写入其中Redo 日志信息会一直保留,直到用户主动删除;如果配置了归档日志空间上限,系统会自动删除最早生成的归档 Redo 日志文件,腾出空间。如果磁盘空间不足,且没有配置归档日志空间上限(或者配置的上限超过实际空间),系统将自动挂起,直到用户主动释放出足够的空间后继续运行。配置如下:

[ARCHIVE_REALTIME]
ARCH_TYPE        = REALTIME #实时归档类型
ARCH_DEST        = DMDW2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE        =LOCAL #本地归档类型
ARCH_DEST        = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE   = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 500000 #单位 Mb,0 表示无限制,范围1024~4294967294M

4.4 配置dmwatcher.ini#主备库配置一致

[GRP1]
DW_TYPE       = GLOBAL #全局守护类型
DW_MODE       = MANUAL # 手工切换 AUTO自动切换模式必须部署一个确认监视
DW_ERROR_TIME    =  10#远程守护进程故障认定时间
INST_RECOVER_TIME =  60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME  =  10 #本地实例故障认定时间
INST_OGUID     = 453332 #守护系统唯一 OGUID 值
INST_INI      = /dm8/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART =  1 #打开实例的自动启动功能
INST_STARTUP_CMD  = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD =  0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD =  0 #指定备库重演日志的时间阀值,默认关闭

4.5vim dmmonitor.ini #生产环境如果是自动切换需单独一台服务器配置监视器

MON_DW_Confirm    = 0 # 0表示普通监视器 ,最多配置8个,1 确认监视器模式
MON_LOG_PATH    = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT  = 0  #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID    = 453332 #组 GRP1 的唯一OGUID 值
#配置为监视器到组GRP1的守护进程的连接信息以―IP:PORT‖的形式配置
#IP对应dmmal.ini中的 MAL_HOST,PORT 对应dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP     = 11.11.11.11:52141
MON_DW_IP     = 22.22.22.222:52141

5 以 Mount方式启动主备库

./dmserver /dm8/data/DAMENG/dm.ini mount

#一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库

6 启动命令行工具 disql,登录主备库设置 OGUID 值和数据库模式。

6.1 主库

sp_set_oguid(453332);
alter database primary;

6.2 备库

sp_set_oguid(453332);
alter database standby;

7 启动各个主备库上的守护进程

./dmwatcher /dm8/data/DAMENG/dmwatcher.ini

8 启动监视器

./dmmonitor /dm8/data/DAMENG/dmmonitor.ini

监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入help 命令查看各种命令说明使用,结合实际情况选择使用。至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于Open 状态,即为正常运行状态。

9 创建服务(root用户,安装目录script/root下,输入./dm_service_installer.sh -h查看帮助,过程略)

#如果是自动切换,一定要创建监视器服务并启动
创建成功之后,由于前面已经前台方式启动,以服务方式启动会报错,需要将前台服务关闭。关闭顺序如下

  1. 如果启动了确认监视器,先关闭确认监视器(防止自动接管)
  2. 关闭备库守护进程(防止重启实例)
  3. 关闭主库守护进程(防止重启实例)
    4.先关主库,后关备库(主库Shutdown 过程中,需要 Purge 所有已提交事务,会修改数据,并产生 Redo 日志。如果先 Shutdown 备库,会导致主库发送归档日志失败,并且由于主库已经处于 Shutdown 状态,会导致主库异常关闭)

10 服务名配置

配置 DM 数据守护,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以在 DM 提供的 JDBC、DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP。可以通过编辑 dm_svc.conf 文件配置连接服务名。
dm_svc.conf 配置文件在DM 安装时生成,Windows 平台下位于%SystemRoot%\system32目录,Linux 平台下位于/etc 目录,详细配置见系统管理员手册

10.1 vim dm_svc.conf

这一步距离,如果你是java程序,可以通过在该配置设置服务名(比如什么DMDW,自定义),从而进行连接,达梦会自己实现主备切换,这个配置的方法可以参考官网了,对java小伙伴比较友好

dw_svc=(11.11.11.11:5236,22.22.22.222:5236)
LOGIN_MODE =(1)

原创不易 转载备注 感谢观众老爷

完结撒花,虚拟机也是比较推荐的方案,没有机器的观众老爷可以扫码看是否有优惠
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1afc83cf4f442c9856d1431477c4e45.jpeg在这里插入图片描述
阿里云学生福利
在这里插入图片描述

Logo

数据库是今天社会发展不可缺少的重要技术,它可以把大量的信息进行有序的存储和管理,为企业的数据处理提供了强大的保障。

更多推荐