达梦数据库DM8主备集群搭建详解


安装环境

操作系统:麒麟v10, 数据库版本:达梦8.1.2.18

一、安装环境检查

注意:达梦数据库各种适配版本众多,一定要注意版本的选择。

1、查看系统位数

getconf LONG_BIT

2、查看系统版本

cat /proc/version

3、查看内核版本

uname -a

根据以上信息选择适合的版本进行安装。

二、创建数据库安装用户

为了减少对操作系统的影响,非常不建议以 root 系统用户来安装和运行达梦数据库。可以在安装之前为达梦数据库创建一个专用的系统用户。

1.创建安装用户组 dinstall

groupadd -g dinstall

2.创建安装用户 dmdba

useradd  -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

3.初始化用户密码

passwd dmdba

三、检查操作系统限制

在 Linux(Unix)系统中,因为 ulimit 命令的存在,会对程序使用操作系统资源进行限制。为了使 达梦数据库能够正常运行,建议用户检查当前安装用户的 ulimit 参数。

1、系统限制检查

su - dmdba   切换到需要检查的用户
ulimit -a   检查系统限制

2、参数使用限制说明

(1)data seg size (kbytes, -d) 建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败
(2)file size(blocks, -f) 建议用户设置为unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
(3)open files(-n) 建议用户设置为 65536以上或 unlimited(无限制)。
(4)virtual memory (kbytes, -v) 建议用户设置为 1048576(即1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败。

3、系统限制参数修改

追加以下信息

vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 10240
* hard nproc 10240
* soft core unlimited
* hard core unlimited

四、命令行安装数据库软件

达梦数据库的安装要求内存256以上、磁盘空间5G以上、系统盘剩余空间1G以上、临时目录/tmp需要1G以上空间

如默认临时目录空间不足可以通过环境变量切换到其他路径

mkdir -p /dm_tmp
DM_INSTALL_TMPDIR=/dm_tmp
export DM_INSTALL_TMPDIR
echo DM_INSTALL_TMPDIR

1、创建安装目录

mkdir -p /dm8
chown -R dmdba.dinstall /dm8
chmod 755 /dm8

2、授权dmdba执行安装程序

下载的安装程序拷贝到安装目录。并授权文件的可执行权限

chmod a+x DMInstall.bin

3、命令行安装数据库

./DMInstall.bin -i

弹出如下交互窗口,根据提示进行输入
请添加图片描述

在这里插入图片描述
执行完成后会提示,使用root用户执行一个shell脚本,切换到root用户运行即可。
在这里插入图片描述

此时数据库的软件已经安装完成,但是但是这时还不能使用数据库,需要创建数据库实例。

五、主备集群安装

1.集群规划

组名称组ID
GDW145331
业务IP心跳IP实例名实例端口MAL端口MAL守护进程端口守护进程端口
172.16.1.1192.168.1.1DW1_015236533654365536
172.16.1.2192.168.1.2DW1_01B5236533654365536
192.168.1.2监视器5236533654365536

为了避免集群的心跳监测和数据同步与业务网络产生影响,在实际生产环境业务网络和心跳网络一定要采用不同的网络。

2、主库的配置

–初始化实例

/opt/dmdbms/bin/dminit path=/opt/dmdbms/data/ page_size=32 extent_size=32 CASE_SENSITIVE=N CHARSET=1  LOG_SIZE=2048 INSTANCE_NAME=DW1_01

–修改dm.ini

SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'ARCH_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

创建dmmal.ini 配置文件

[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL         = 10  #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定MAL链路断开的时间
MAL_TEMP_PATH              = /opt/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 512  #单个MAL缓存大小,单位MB
MAL_SYS_BUF_SIZE           = 2048  #MAL总大小限制,单位MB
MAL_COMPRESS_LEVEL         = 0  #MAL消息压缩等级,0表示不压缩


[MAL_INST1]
  MAL_INST_NAME            = DW1_01  #实例名,和 dm.ini的INSTANCE_NAME一致
  MAL_HOST                 = 192.168.1.1  #MAL系统监听TCP连接的IP地址
  MAL_PORT                 = 5336  #MAL系统监听TCP连接的端口
  MAL_INST_HOST            = 172.16.1.1  #实例的对外服务IP地址
  MAL_INST_PORT            = 5236  #实例对外服务端口,和dm.ini的PORT_NUM一致
  MAL_DW_PORT              = 5436  #实例对应的守护进程监听TCP连接的端口
  MAL_INST_DW_PORT         = 5536  #实例监听守护进程TCP连接的端口

[MAL_INST2]
  MAL_INST_NAME            = DW1_01B
  MAL_HOST                 = 192.168.1.2
  MAL_PORT                 = 5336
  MAL_INST_HOST            = 172.16.1.2
  MAL_INST_PORT            = 5236
  MAL_DW_PORT              = 5436
  MAL_INST_DW_PORT         = 5536

编辑归档配置文件

[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL]
  ARCH_TYPE                = LOCAL  #本地归档类型
  ARCH_DEST                = /opt/dmdbms/data/DAMENG/arch/  #本地归档存放路径
  ARCH_FILE_SIZE           = 1024  #单个归档大小,单位MB
  ARCH_SPACE_LIMIT         = 51200  #归档上限,单位MB
[ARCHIVE_REALTIME]
  ARCH_TYPE                = REALTIME  #实时归档类型
  ARCH_DEST                = DW1_01B  #实时归档目标实例名

创建守护进程配置文件

[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dmwatcher.ini
[GDW1]
  DW_TYPE                  = GLOBAL  #全局守护类型
  DW_MODE                  = AUTO  #故障自动切换模式 
  DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
  INST_ERROR_TIME          = 20  #本地实例故障认定时间
  INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
  INST_OGUID               = 45331  #守护系统唯一OGUID值
  INST_INI                 = /opt/dmdbms/data/DAMENG/dm.ini  #dm.ini文件路径
  INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
  INST_STARTUP_CMD         = /opt/dmdbms/bin/dmserver  #命令行方式启动
  RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
  RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

##主备之间大部分配置文件是相似的,可以通过复制主库的配置文件,在备库进行简单修改即可

[root@localhost PROD]# scp dm.ini dmarch.ini dmwatcher.ini dmmal.ini dmdba@192.168.1.2:/opt/dmdbms/data/DAMENG/

##以mount方式启动主库

[dmdba@~]# ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount

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

#启动命令行工具 DIsql

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SQL>alter database primary;

3、备库的配置

–初始化实例

/opt/dmdbms/bin/dminit path=/opt/dmdbms/data/ page_size=32 extent_size=32 CASE_SENSITIVE=N CHARSET=1  LOG_SIZE=2048 INSTANCE_NAME=DW1_01B

#修改dm.ini,使用主库复制的配置文件,只需修改数据库实例名称

[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME = DW1_01B #数据库实例名

#替换dmarch.ini,使用主库复制的配置文件,只需修改实时归档目标实例名

[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW1_01 #实时归档目标实例名

###B机器与A机器DW1_01的dmmal.ini、dmwatcher.ini相同,无需修改

##以mount方式启动主库

[dmdba@~]# ./dmserver /dm/data/DAMENG/dm.ini mount

#启动命令行工具 DIsql

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SQL>alter database standby; 

4、配置监视器

创建监视器配置文件

[dmdba@~]# vi /opt/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM             = 1  #0为非确认,1为确认
MON_LOG_PATH               = ../log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位MB

[GDW1]
  MON_INST_OGUID           = 45331  #组GDW1的唯一OGUID 值
  MON_DW_IP                = 192.168.1.1:5436  #IP对应MAL_HOST,PORT对应MAL_DW_PORT
  MON_DW_IP                = 192.168.1.2:5436

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

./dmwatcher /opt/dmdbms/data/DAMENG/dmwatcher.ini

####确认守护进程启动正常后,可以将守护进程加入到服务,这样开机可以服务自启动

[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini


备注:删除服务
[root@~]# /opt/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher

####启动监视器

./dmmonitor /opt/dmdbms/bin/dmmonitor.ini

将监视器加入到服务

[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /opt/dmdbms/bin/dmmonitor.ini


备注:删除自启
[root@~]# /opt/dmdbms/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor

六、配置应用连接

Linux环境:dm_svc.conf放在应用服务器/etc目录下。
Windows32环境:dm_svc.conf放在应用服务器System32目录下。
Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下。

创建dm_svc.conf

[root@~]# vi /etc/dm_svc.conf
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DW1=(172.16.1.1:5236,172.16.1.2:5236)

[DW1]
LOGIN_MODE=(1)
SWITCH_TIME=(300)
SWITCH_INTERVAL=(200)

应用连接

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm://DW1</URL>

七、监视器管理常用命令

#检查指定组的指定库是否满足自动恢复条件
check recover [group_name.]db_name

#检查指定组的指定库是否满足自动Open条件
check open [group_name.]db_name

#强制Open指定组的指定库
open database [group_name.] db_name

#切换指定组的指定库为Primary库
switchover [group_name[.]] [db_name]

#使用指定组的指定库接管故障Primary库
takeover [group_name[.]] [db_name]

#使用指定组的指定库强制接管故障Primary库
takeover force [group_name[.]] [db_name]

达梦技术社区地址:https://eco.dameng.com

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是Linux下达梦数据库主备集群搭建的详细步骤: 1. 确认每个节点都已经安装了达梦数据库,并且版本一致。如果没有安装,可以通过达梦官网下载并安装。 2. 配置节点的IP地址和主机名。可以通过修改/etc/hosts文件和/etc/hostname文件来配置。 ```bash # 编辑 /etc/hosts 文件 sudo vi /etc/hosts # 添加以下内容 192.168.1.100 node1 192.168.1.101 node2 192.168.1.102 node3 # 编辑 /etc/hostname 文件 sudo vi /etc/hostname # 修改为节点对应的主机名 node1 node2 node3 ``` 3. 在主节点上创建一个集群控制文件,并在其中指定其他节点的IP地址和主机名。 ```bash # 创建集群控制文件 sudo mkdir /opt/dm_data/cluster sudo vi /opt/dm_data/cluster/dm.ini ``` 在dm.ini文件中添加以下内容: ```ini [NodeList] Node1=192.168.1.100 Node2=192.168.1.101 Node3=192.168.1.102 ``` 4. 在备节点上创建一个备份控制文件,并在其中指定主节点的IP地址和主机名。 ```bash # 创建备份控制文件 sudo mkdir /opt/dm_data/backup sudo vi /opt/dm_data/backup/dm.ini ``` 在dm.ini文件中添加以下内容: ```ini [NodeList] Node1=192.168.1.100 ``` 5. 在主节点上启动达梦数据库,并确保主备节点之间可以正常通信。 ```bash # 启动数据库 sudo /opt/dmdbms/bin/dm_control start # 检查节点间连通性 ping node2 ping node3 ``` 6. 在主节点上创建一个实例,并将其配置为主实例。 ```bash # 创建实例 sudo /opt/dmdbms/bin/dm_create_instance -i dm_instance -p 123456 -l /opt/dm_data/dm_instance # 配置主实例 sudo /opt/dmdbms/bin/dm_control set -i dm_instance -n node1 -t master ``` 7. 在备节点上创建一个实例,并将其配置为备实例。 ```bash # 创建实例 sudo /opt/dmdbms/bin/dm_create_instance -i dm_instance -p 123456 -l /opt/dm_data/dm_instance # 配置备实例 sudo /opt/dmdbms/bin/dm_control set -i dm_instance -n node1 -t standy ``` 8. 在主节点上将主实例的日志传输到备实例。 ```bash # 配置日志传输 sudo /opt/dmdbms/bin/dm_control set -i dm_instance -t sync -s node2 -p 8888 sudo /opt/dmdbms/bin/dm_control set -i dm_instance -t sync -s node3 -p 8888 ``` 9. 在备节点上启动备实例,并确保备实例可以正常接收主实例的日志。 ```bash # 启动备实例 sudo /opt/dmdbms/bin/dm_control start # 检查日志传输 sudo /opt/dmdbms/bin/dm_control check -i dm_instance -s node1 -p 8888 ``` 10. 测试集群的高可用性和容错性,包括故障切换和恢复。 以上就是Linux下达梦数据库主备集群搭建的全部步骤,如果您遇到了问题,可以参考达梦数据库的官方文档或者联系达梦数据库的客服人员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值