达梦数据库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 |
---|---|
GDW1 | 45331 |
业务IP | 心跳IP | 实例名 | 实例端口 | MAL端口 | MAL守护进程端口 | 守护进程端口 |
---|---|---|---|---|---|---|
172.16.1.1 | 192.168.1.1 | DW1_01 | 5236 | 5336 | 5436 | 5536 |
172.16.1.2 | 192.168.1.2 | DW1_01B | 5236 | 5336 | 5436 | 5536 |
192.168.1.2 | 监视器 | 5236 | 5336 | 5436 | 5536 |
为了避免集群的心跳监测和数据同步与业务网络产生影响,在实际生产环境业务网络和心跳网络一定要采用不同的网络。
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