达梦实时主备守护集群搭建

1 环境说明

本示例中组名为“GRP1”,配置为实时主备,主库命名为“DM1”,备库命名为“DM2”。

3台机器都需要先安装DM数据库软件。

1.1配置环境说明

主机类型IP地址实例名操作系统
主库192.168.20.128(外部服务) 192.168.76.128(内部通信)DM1Centos7.5.1804
备库192.168.20.129(外部服务) 192.168.56.129(内部通信)DM2Centos 7.5.1804
监视器192.168.20.131(外部服务) 192.168.76.131(内部通信)Centos 7.5.1804

1.2端口规划:

实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT
DM152365237192.168.76.12852385239
DM252365237192.168.76.12952385239

MAL_DW_PORT: 守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建 TCP连接。监视器配置文件 dmmonitor.ini 中,MON_DW_IP 就是一组 MAL_HOST: MAL_DW_PORT。

MAL_INST_DW_PORT:实例对守护进程的监听端口,守护进程使用 MAL_HOST + MAL_INST_DW_PORT 创建到实例的 TCP 连接。

2 搭建

2.1主库搭建

2.1.1 dminit 初始化主库,注册服务和启用归档。

​ 1 初始化数据库

/dm/dmdbms/bin/dminit

​ 2 启动数据库后注册服务

[root@dm1 ~]$/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/data/dm/dm.ini -p DM1 -m open

​ 3 启用归档

SQL> alter database mount;

SQL> alter database add archivelog 'DEST=/dm/dmarch,TYPE=local,FILE_SIZE=256,space_limit=0';'

SQL>  alter database archivelog;

SQL>  alter database open;

SQL>  select arch_mode from v$database;

2.1.2 dminit 初始化备库,注册服务。

​ 1 初始化

/dm/dmdbms/bin/dminit

​ 2 注册服务

[root@dm2 ~]$/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/data/dm/dm.ini -p DM2 -m open

3备库还原

3.1脱机备份、脱机还原方式

  1. 正常关闭数据库

  2. 进行脱机备份

./dmrman CTLSTMT="BACKUP DATABASE '/dm/dmdbms/data/dm/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/dmbakup/dbbak01'"
  1. 拷贝备份文件到备库所在机器

  2. 执行脱机数据库还原与恢复

​ 如果出现下面错误使用dmdba用户还原(安装达梦时创建的用户)

./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET'/dm/dmbakup/dbbak01'"
dmrman V8
RESTORE DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET '/dm/dmbakup/dbbak01'
file dm.key not found, use default license!
管道连接超时
./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET '/dm/dmbakup/dbbak01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET '/dm/dmbakup/dbbak01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/dm/dm.ini' UPDATE DB_MAGIC"

3.2联机备份、脱机还原方式

  1. 对主库进行联机备份操作
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';
  1. 拷贝备份文件到备库所在机器

  2. 执行脱机数据库还原与恢复

./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET '/dm/dmbakup/dbbak01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/dm/dm.ini' FROM BACKUPSET '/dm/dmbakup/dbbak01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/dm/dm.ini' UPDATE DB_MAGIC"

4 配置主备参数

4.1 配置 dm.ini

修改主备库参数,注意2个库的instance_name参数不同。

INSTANCE_NAME = DM1 
#INSTANCE_NAME = DM2 #备库改为此参数
PORT_NUM = 5236  #数据库实例监听端口
ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间
MAL_INI = 1  #打开 MAL 系统
ARCH_INI = 1  #打开归档配置

4.2 配置 dmmal.ini

2节点配置配置一样。具体如下:

MAL_CHECK_INTERVAL = 5             #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5         #判定 MAL 链路断开的时间

[MAL_INST1]
MAL_INST_NAME = DM1         #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.76.128             #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238                     #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.20.128         #实例的对外服务 IP 地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237        #实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5239              #实例对应的守护进程监听 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.76.129
MAL_PORT = 5238
MAL_INST_HOST = 192.168.20.129
MAL_INST_PORT = 5236
MAL_INST_DW_PORT = 5237        
MAL_DW_PORT = 5239

4.3 配置 dmarch.ini

2节点都配置,ARCH_DEST分写写对方的实例。比如当前实例 DAVE1 是主库,则ARCH_DEST 配置为 DAVE2。

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME  #实时归档类型
ARCH_DEST = DM2  #实时归档目标实例名 备库改为 ARCH_DEST = DM1

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128   #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0  #单位 Mb,0 表示无限制

4.4 配置 dmwatcher.ini

2节点都配置。守护进程使用MANUAL,手工切换模式。

[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 = /dm/dmdbms/data/dm/dm.ini           #dm.ini 配置文件路径
INST_AUTO_RESTART = 1                       #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver       #命令行方式启动
RLOG_SEND_THRESHOLD = 0                   #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                   #指定备库重演日志的时间阀值,默认关闭

4.5 主备库实例以mount模式启动

第一次主备搭建成功后可以注册服务以服务方式后台运行。

./dmserver /dm/dmdbms/data/DAVE/dm.ini mount

4.6 设置OGUID 和数据库模式

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

# 主库执行alter database primary;备库执行alter database standby;
SQL>alter database primary;  

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

这里使用disql登录数据库提示为主库/备库数据库配置状态

4.7 启动守护进程

主备都注册守护进程服务

/dm/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdbms/data/dm/dmwatcher.ini -p DW

第一次启动建议命令行启动可以看到日志和查看服务状态

主备命令行启动守护进程

./dmwatcher  /dm/dmdbms/data/dm/dmwatcher.ini

守护进程可使用命令status查看守护进程状态,help查看帮助

这时可使用disql登录数据库如果是主库/备库打开状态证明配置成功

这是就可以测试在主库写数据,备库查看了

5 配置监视器

5.1 配置监视器

监视器建议放到第三台机器上

在监控节点的/dm/dmdbms/data/dm/目录下创建并修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。

确认监视器(可留做后台启动使用)

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 453331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.76.128:5239
MON_DW_IP = 192.168.56.129:5239

监控监视器,查看监控集群状态使用

MON_DW_CONFIRM = 0 #监控监视器模式
MON_LOG_PATH = /dm/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 453331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.76.128:5239
MON_DW_IP = 192.168.56.129:5239

5.2 启动监视器

注册服务方式启动

/dm/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmdbms/data/dm/dmwatcher.ini -p DW

命令行启动

(第一次建议命令行启动可看到启动状态和日志,或者以服务方式启动确认监视器以命令行启动监控监视器也可以)

./dmmonitor /dm/dmdbms/data/dm/dmmonitor.ini

如果命令行界面接收到守护进程的消息则证明监控成功,也可使用监视器命令查看集群状态。

[dave@www.cndba.cn data]$ dmmonitor /dm/dmdbms/data/dmmonitor.ini

[monitor]         Received message from(DM1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                 OPEN           OK        DM1            OPEN        STANDBY   NULL     7        71664           71664           

[monitor]          Received message from(DM2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                 OPEN           OK        DM2            OPEN        PRIMARY   VALID    7        71664           71664      

6 集群启动和关闭

关闭
  1. 如果启动了确认监视器,先关闭确认监视器(防止自动接管)
  2. 关闭备库守护进程(防止重启实例)
  3. 关闭主库守护进程(防止重启实例)
  4. Shutdown 主库
  5. Shutdown 备库
启动

先启动主库实例可守护进程,然后备库库实例和守护进程,最后监视器

如果守护进程配置了自动启动,则守护进程启动时也会自动启动实例,不过这样守护关闭时,实例也会关闭

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Docker 搭建达梦数据库主备集群,需要进行以下步骤: 1. 下载达梦数据库镜像 可以从官方网站或 Docker Hub 下载达梦数据库镜像。例如,可以使用以下命令从 Docker Hub 下载达梦数据库镜像: ``` docker pull dameng/db:7.5.0 ``` 2. 创建主数据库容器 使用以下命令创建主数据库容器: ``` docker run -d --name dameng-master -p 5236:5236 -e MASTER_SLAVE=M \ -e DBNAME=dm7 -e USERNAME=sysdba -e PASSWORD=123456 \ dameng/db:7.5.0 ``` 其,`-d` 表示在后台运行容器,`--name` 指定容器名称,`-p` 指定容器端口映射,`-e` 指定环境变量,`dameng/db:7.5.0` 是达梦数据库镜像名称和版本号。 3. 创建备数据库容器 使用以下命令创建备数据库容器: ``` docker run -d --name dameng-slave -p 5237:5237 -e MASTER_SLAVE=S \ -e DBNAME=dm7 -e USERNAME=sysdba -e PASSWORD=123456 \ -e MASTER_HOST=172.17.0.2 -e MASTER_PORT=5236 \ dameng/db:7.5.0 ``` 其,`MASTER_SLAVE` 指定容器角色为备数据库,`MASTER_HOST` 和 `MASTER_PORT` 指定主数据库的 IP 地址和端口号。 4. 测试主备切换 可以使用 `docker ps` 命令查看容器运行状态,使用 `docker logs` 命令查看容器日志信息。测试主备切换时,可以通过关闭主数据库容器,观察备数据库容器是否能够自动接管主数据库的角色。 以上就是使用 Docker 搭建达梦数据库主备集群的基本步骤。需要注意的是,在实际生产环境,还需要进行容器管理、数据备份等工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值