DM数据库实时主备集群搭建

一、前期准备

准备三台主机,情况如下

主机名第一IP第二IP实例名
DM1(主)192.168.11.150192.168.11.160DM_MF
DM2(备)192.168.11.151192.168.11.161DM_SYNC
DM3(监控)192.168.11.152/DM_MONITOR

目录规划

名称路径
数据库安装/home/dmdba/dm8
实例安装/home/dmdba/dmdata
归档/home/dmdba/dmarch
备份/home/dmdba/dmbak

端口规划,搭建2节点主备集群

端口说明
5236数据库实例监听端口
61141MAL 系统监听 TCP 连接的端口
52141实例本地的守护进程监听 TCP 连接的端口
33141实例监听守护进程 TCP 连接的端口
1.创建用户与组

DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall),并设置系统用户dmdba的密码。

groupadd dinstall
useradd  -g dinstall -m -d /home/dmdba -s /bin/bash  dmdba
passwd dmdba
2.用户资源限制

执行命令,修改 dmdba 用户资源限制。

vim /etc/security/limits.conf

在文件末尾添加如下内容:

dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc  65536
dmdba hard nproc  65536
dmdba soft stack  65536
dmdba hard stack  65536
3.用户环境变量

执行命令,修改 dmdba 用户环境变量:

vi /home/dmdba/.bash_profile

文件末尾添加如下内容:

export DM_HOME=/home/dmdba/dm8
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

修改后使得环境变量生效。

source /home/dmdba/.bash_profile
4.关闭防火墙

查看防火墙状态,如果显示为active,需要关闭防火墙,禁用则开机不启动防火墙。

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

关闭SELinux

查看是否开启了SELinux,如果显示为Enforcing,需要改为Disabled,再重启系统使配置生效。

getenforce
vi /etc/selinux/config     
进入文件后修改 SELINUX = disabled
保存退出文件
reboot
5.安装数据库

三台都要安装,可以参考我之前的博文:DM数据库安装及启动教程(Linux超详细版)

6.初始化实例

软件安装目录:/home/dmdba/dm8/bin,实例初始化目录:/home/dmdba/dmdata,初始化脚本如下:

./dminit path=/home/dmdba/dmdata db_name=dmrw page_size=32

初始化的实例必须先启动一次,才能脱机备份。

./dmserver path=/home/dmdba/dmdata/dmrw/dm.ini

当出现 “SYSTEM IS READY.” 说明已经启动成功,可以 exit 退出实例,进行下一步备份还原。

二、备份还原

1.主机脱机备份

查看主库DMAP服务是否已启动

ps -ef|grep dmap

如图,第一行显示为已启动,进程号为6869。

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

./DmAPService start

关闭数据库后,使用 dmrman 工具脱机备份主库,dmdba 用户到安装目录的 bin 下执行以下命令:

./dmrman

执行 backup 全库。

backup database '/home/dmdba/dmdata/dmrw/dm.ini' backupset '/home/dmdba/dmbak/bakfull'

2.备库还原

拷贝主库备份到备库合适目录,在主库执行本小节命令:

scp -r /home/dmdba/dmbak/bakfull 192.168.11.151:/home/dmdba/dmbak

注意要修改正确路径和要修改成备库的public ip地址。
此处会传输 bakfull.bak 和 bakfull.meta 共两个文件到达备库的dmbak文件夹下。

关闭数据库后,使用 dmrman 工具还原备库,dmdba 用户到安装目录的 bin 下通过 dmrman 工具恢复

# 重启DMAP服务
./DmAPService restart
./dmrman
# 启动工具后执行 restore 还原
restore database '/home/dmdba/dmdata/dmrw/dm.ini' from backupset '/home/dmdba/dmbak/bakfull'; 
# 执行 recover 恢复
recover database '/home/dmdba/dmdata/dmrw/dm.ini' from backupset '/home/dmdba/dmbak/bakfull';
# 执行 recover update db_magic 更新数据库魔数
recover database '/home/dmdba/dmdata/dmrw/dm.ini' update db_magic;

三、添加配置文件

1.配置dm.ini

使用 dmdba 用户,执行以下命令:

vi /home/dmdba/dmdata/dmrw/dm.ini

主库修改以下参数值:

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

备库修改以下参数值:

INSTANCE_NAME = DM_SYNC
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
2.修改dmarch.ini

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

vi /home/dmdba/dmdata/dmrw/dmarch.ini

主库添加以下内容:

[ARCHIVE_REALTIME]
ARCH_TYPE     = REALTIME  #实时归档类型
ARCH_DEST     = DM_SYNC   #实时归档目标实例名(主库侧填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL #本地归档类型
ARCH_DEST     = /home/dmdba/dmarch/arch #本地归档文件存放路径
ARCH_FILE_SIZE    = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 10240    #单位 MB,0 表示无限制,范围 1024~4294967294 MB

备库添加以下内容:

[ARCHIVE_REALTIME]
ARCH_TYPE     = REALTIME  #实时归档类型
ARCH_DEST     = DM_MF  #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL  #本地归档类型
ARCH_DEST     = /home/dmdba/dmarch/arch  #本地归档文件存放路径
ARCH_FILE_SIZE    = 128  #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 10240  #单位 MB,0 表示无限制,范围 1024~4294967294 MB
3.配置dmmal.ini

在实例目录下新建文件 dmmal.ini,使用 dmdba 用户,执行以下命令:

vi /home/dmdba/dmdata/dmrw/dmmal.ini

主备库文件内容要相同,添加以下内容:

MAL_CHECK_INTERVAL   = 5  # MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL  = 5  # 判定 MAL链路断开的时间
[MAL_INST1]
  MAL_INST_NAME = DM_MF  #与 dm.ini中的 INSTANCE_NAME一致
  MAL_HOST     = 192.168.11.160  # MAL系统监听 TCP 内部网络 IP
  MAL_PORT     = 61141  # MAL系统监听 TCP连接的端口
  MAL_INST_HOST   = 192.168.11.150  #实例的对外服务 IP地址
  MAL_INST_PORT   = 5236  #与 dm.ini中的 PORT_NUM一致
  MAL_DW_PORT   = 52141  #实例对应的守护进程监听 TCP 端口
  MAL_INST_DW_PORT = 33141
[MAL_INST2]
  MAL_INST_NAME = DM_SYNC  #与 dm.ini中的 INSTANCE_NAME 一致
  MAL_HOST      = 192.168.11.161  # MAL系统监听 TCP内部网络 IP
  MAL_PORT          = 61141  # MAL系统监听 TCP连接的端口
  MAL_INST_HOST         = 192.168.11.151  #实例的对外服务 IP地址
  MAL_INST_PORT         = 5236  #与 dm.ini中的 PORT_NUM一致
  MAL_DW_PORT  = 52141  #实例对应的守护进程监听 TCP端口
  MAL_INST_DW_PORT = 33141
4.配置dmwatcher.ini

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

vi /home/dmdba/dmdata/dmrw/dmwatcher.ini

主备库文件内容要相同,添加以下内容:

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

四、启动主备集群

1.前台方式启动
1.1启动数据库实例

使用 dmdba 用户,到数据库安装目录的 bin 下执行以下命令。
(主备库都执行)

./dmserver /home/dmdba/dmdata/dmrw/dm.ini mount

注意是 mount 配置状态登录,出现 “SYSTEM IS READY.” 即为成功。

另外开一个新的终端,使用 disql 工具连接数据库,修改 oguid。
(主备库都执行)

./disql SYSDBA/SYSDBA
#连接成功后修改 oguid
sp_set_oguid(453331);

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

alter database primary;

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

alter database standby;

1.2启动守护进程

dmdba 用户下,到数据库安装目录的 bin 下执行。
(主备库都执行)

./dmwatcher /home/dmdba/dmdata/dmrw/dmwatcher.ini

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

1.3启动确认监视器

注意事项:

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

vi /home/dmdba/dmdata/dmmonitor_auto.ini

添加以下内容:

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

使用 dmdba 用户,到数据库安装目录的 bin 下执行以下命令:

./dmmonitor /home/dmdba/dmdata/dmmonitor_auto.ini


集群搭建完毕!


达梦在线服务平台:https://eco.dameng.com/

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Docker 搭建 DM8 实时主备,可以按照以下步骤进行: 1. 安装 Docker 和 Docker Compose 首先需要安装 Docker 和 Docker Compose,可以参考 Docker 官方文档进行安装。 2. 下载 DM8 镜像文件 可以从 DM 官网下载 DM8 镜像文件,也可以使用以下命令从 Docker Hub 上下载: ``` docker pull pingcap/dm:latest ``` 3. 创建 DM8 配置文件 在本地创建一个名为 `dm-master.yaml` 的文件,用于配置 DM8 的主节点。以下是一个示例配置文件: ```yaml master-addr: 172.20.0.2:8261 name: master1 data-dir: /home/data/master1 log-file: /home/logs/master1.log log-level: "info" discovery-mode: "static" static-nodes: - 172.20.0.2:8291 - 172.20.0.3:8291 - 172.20.0.4:8291 web-port: 8281 ``` 其中,`master-addr` 表示当前节点的地址和端口号,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `discovery-mode` 表示节点发现的模式,这里使用静态模式,`static-nodes` 是静态模式下所有节点的地址和端口号。 `web-port` 是 DM8 的 Web 界面端口号。 在本地创建一个名为 `dm-worker.yaml` 的文件,用于配置 DM8 的工作节点。以下是一个示例配置文件: ```yaml name: worker1 data-dir: /home/data/worker1 log-file: /home/logs/worker1.log log-level: "info" server-id: 101 relay-dir: /home/relay_log meta: case-sensitive: true worker-addr: 172.20.0.2:8262 master-addr: 172.20.0.2:8261 relay-binlog-name: mysql-binlog relay-binlog-gtid: "" source-id: "mysql-replica-01" from: host: "172.20.0.5" user: "root" password: "password" routes: route-rule-1: schema-pattern: "test" target-schema: "test" target-instance: "mysql-replica-02" enable-sharding: false ``` 其中,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `server-id` 是工作节点的 ID,`relay-dir` 是中继日志的存储路径。 `worker-addr` 是当前节点的地址和端口号,`master-addr` 是主节点的地址和端口号。 `relay-binlog-name` 是指定中继日志的文件名,`relay-binlog-gtid` 是中继日志的 GTID。 `source-id` 是源实例的 ID,`from` 是源实例的连接信息。 `routes` 是数据路由的配置,这里只配置了一个路由规则,将 `test` 库的数据路由到名为 `mysql-replica-02` 的实例中。 4. 创建 Docker Compose 配置文件 在本地创建一个名为 `docker-compose.yaml` 的文件,用于启动 DM8 的主节点和工作节点。以下是一个示例配置文件: ```yaml version: "3.7" services: dm-master: image: pingcap/dm:latest container_name: dm-master volumes: - ./dm-master.yaml:/etc/dm-master/dm-master.yaml ports: - "8261:8261" - "8281:8281" dm-worker: image: pingcap/dm:latest container_name: dm-worker volumes: - ./dm-worker.yaml:/etc/dm-worker/dm-worker.yaml depends_on: - dm-master ports: - "8262:8262" ``` 其中,`dm-master` 是 DM8 主节点的容器,`dm-worker` 是 DM8 工作节点的容器。`volumes` 挂载了之前创建的两个 YAML 配置文件,`ports` 映射了节点的端口号。 5. 启动 Docker Compose 在命令行中执行以下命令,启动 Docker Compose: ``` docker-compose up -d ``` 6. 验证 DM8 实时主备 使用浏览器访问 `http://localhost:8281`,可以查看 DM8 的 Web 界面。在界面上可以查看主备节点的状态,以及数据同步的情况。可以在主节点上进行写入操作,验证数据同步是否正常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值