搭建环境:centos7.7
node1:
主机名:dmdb1
IP:172.20.10.100
node2:
主机名:dmdb2
IP:172.20.10.101
达梦安装目录:/dm8/dmdbms
达梦数据目录:/dm8/data
达梦归档目录:/dm8/dmarch
达梦备份目录:/dm8/dmbak
mkdir /dm8
mkdir /dm8/dmdbms
mkdir /dm8/data
mkdir /dm8/dmarch
mkdir /dm8/dmbak
chown -R dmdba:dinstall /dm8
修改用户资源限制(两个节点)
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
修改环境变量(两个节点)
vi /home/dmdba/.bash_profile
export DM_HOME=/dm8/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
搭建 2 节点集群,端口规划如下:(实际中可以按需要修改端口号)
主机名
public ip
private ip
实例名
端口
用途
dmdb1
172.20.10.100
10.0.0.100
dmrw1
5236
数据库实例 dmrw1 监听端口
dmdb1
172.20.10.100
10.0.0.100
dmrw1
61141
MAL 系统监听 TCP 连接的端口
dmdb1
172.20.10.100
10.0.0.100
dmrw1
52141
实例本地的守护进程监听 TCP 连接的端口
dmdb1
172.20.10.100
10.0.0.100
dmrw1
33141
实例监听守护进程 TCP 连接的端口
dmdb2
172.20.10.101
10.0.0.101
dmrw2
5236
数据库实例 dmrw2 监听端口
dmdb2
172.20.10.101
10.0.0.101
dmrw2
61141
MAL 系统监听 TCP 连接的端口
dmdb2
172.20.10.101
10.0.0.101
dmrw2
52141
实例本地的守护进程监听 TCP 连接的端口
dmdb2
172.20.10.101
10.0.0.101
dmrw2
33141
实例监听守护进程 TCP 连接的端口
安装达梦数据库软件
挂载ISO到/mnt
mount -oloop dm8_XXX.iso /mnt
切换到dmdba用户 到mnt目录下 执行./DMInstall.bin -i 安装向导进行安装
初始化数据库(bin目录下执行)(主备库都执行)
./dminit path=/dm8/data db_name=dmrw page_size=32
在node1上启动数据库(bin目录下执行)
./dmserver /dm8/data/dmrw/dm.ini
启动dmap服务(bin/service_template目录下执行)
./DmAPService start
使用dmrman工具备份数据库
在dmdba用户bin目录下执行./dmrman
在rman下执行
backup database ‘/dm8/data/dmrw/dm.ini’ full to backup_file1 backupset ‘/dm8/dmbak/backup_file_01’;
将备份文件拷贝到备库
scp -r /dm8/dmbak/backup_file_01 172.20.10.101:/dm8/dmbak/
在备库采用dmrman工具恢复数据库
启动dmap服务(bin/service_template目录下执行)
./DmAPService start
在bin目录下执行./dmrman
在dmrman中执行
restore database ‘/dm8/data/dmrw/dm.ini’ from backupset ‘/dm8/dmbak/backup_file_01’;
执行recover database
recover database ‘/dm8/data/dmrw/dm.ini’ from backupset ‘/dm8/dmbak/backup_file_01’;
recover update db_magic
recover database ‘/dm8/data/dmrw/dm.ini’ update db_magic;
修改数据库参数
vi /dm8/data/dmrw/dm.ini
主库参数修改为:
INSTANCE_NAME = dmrw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库参数修改为:
INSTANCE_NAME = dmrw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
在实例目录下新建dmarch.ini,并修改归档配置文件参数
vi /dm8/data/dmrw/dmarch.ini
主库添加内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmrw2 #实时归档目标实例名(主库侧填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB
备库添加内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmrw1 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB
在实例目录下新建文件 dmmal.ini,并修改dmmal.ini文件
vi /dm8/data/dmrw/dmmal.ini
主备库添加相同内容
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = dmrw1 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.100 #MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.20.10.100 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = dmrw2 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.101 # MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61142 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.20.10.101 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52142 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33142
守护进程配置文件 dmwatcher.ini
在实例目录下新建dmwatcher.ini文件
vi /dm8/data/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 = /dm8/data/dmrw/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver #命令行方式启动
使用dmctlcvt命令生成dmwatcher.ctl
./dmctlcvt TYPE=2 SRC=/dm8/data/dmrw/dmwatcher.ini DEST=/dm8/
将数据库启动到mount状态(主备都启动到mount)
在bin目录下执行
./dmserver /dm8/data/dmrw/dm.ini mount
使用disql工具登录数据库
在bin目录下执行./disql SYSDBA/SYSDBA
在disql中修改 oguid 主备库都修改
sp_set_oguid(453331);
将主库修改为primary模式
alter database primary;
将备库修改为stanby模式
alter database standby;
启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行(主备库都执行)
./dmwatcher /dm8/data/dmrw/dmwatcher.ini
守护进程启动后,数据库会从mount变为open
在备服务器上建立监视器
在实例目录下新建dmmonitor.ini
vi /dm8/data/dmrw/dmmonitor.ini
添加内容:
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/dmdbms/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 = 10.0.0.100:52141
MON_DW_IP = 10.0.0.101:52142
启动监视器
./dmmonitor /dm8/data/dmrw/dmmonitor.ini
注册主库实例服务(root用户 /dm8/dmdbms/script/root)
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/dmrw/dm.ini -m mount -p dmrw1
注册守护进程服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/dmrw/dmwatcher.ini -p dmrw1
注册备库实例服务(root用户 /dm8/dmdbms/script/root)
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/dmrw/dm.ini -m mount -p dmrw2
注册守护进程服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/dmrw/dmwatcher.ini -p dmrw2
注册监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /dm8/data/dmrw/dmmonitor.ini -p dmrw