达梦数据库DM8主备集群搭建详解
安装环境
一、安装环境检查
1、查看系统位数
getconf LONG_BIT
2、查看系统版本
cat /proc/version
3、查看内核版本
uname -a
二、创建数据库安装用户
1.创建安装用户组 dinstall
groupadd -g dinstall
2.创建安装用户 dmdba
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
3.初始化用户密码
passwd dmdba
三、检查操作系统限制
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
四、命令行安装数据库软件
1、创建安装目录
mkdir -p /dm8
chown -R dmdba.dinstall /dm8
chmod 755 /dm8
2、授权dmdba执行安装程序
chmod a+x DMInstall.bin
3、命令行安装数据库
./DMInstall.bin -i
五、主备集群安装
1.集群规划
组名称 组ID
GD1 118812
业务IP 心跳IP 实例名 实例端口 MAL端口 MAL守护进程端口 守护进程端口
172.16.1.1 192.168.1.1 DM1_01 5236 5336 5436 5536
172.16.1.2 192.168.1.2 DW2_02 5236 5336 5436 5536
192.168.1.100 监视器 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
###登录disql修改参数
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);
###添加mal文件#####
[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
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
[dmdba@~]# vi /opt/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME = DW1_01B #数据库实例名
[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 #实时归档目标实例名
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
六、配置应用连接
Linux环境:dm_svc.conf放在应用服务器/etc目录下。
Windows32环境:dm_svc.conf放在应用服务器System32目录下。
Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下。
[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)
七、监视器管理常用命令
#检查指定组的指定库是否满足自动恢复条件
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]