环境准备
最好为一主多备加一个独立确认监视器服务器,本次为测试环境,确认监视器放在了备库上
应用 | ip | prot | ||
---|---|---|---|---|
集群 | 主库 | 192.168.189.129 | 5236 | 实例的对外服务端口 |
集群 | 主库 | 192.168.189.129 | 52141 | 实例对应的守护进程监听 TCP 连接的端口 |
集群 | 主库 | 192.168.189.129 | 61141 | 系统监听 TCP 连接的端口 |
集群 | 主库 | 192.168.189.129 | 33141 | 守护环境下,监听守护进程连接端口 |
集群 | 备库 | 192.168.189.130 | 5236 | 实例的对外服务端口 |
集群 | 备库 | 192.168.189.130 | 52142 | 实例对应的守护进程监听 TCP 连接的端口 |
集群 | 备库 | 192.168.189.130 | 61142 | 系统监听 TCP 连接的端口 |
集群 | 备库 | 192.168.189.130 | 33142 | 守护环境下,监听守护进程连接端口 |
集群 | 监视器 | 192.168.189.130 |
一 创建安装用户
主库、备库与确认监视器相同操作,下方仅以主库为例
1.1 创建安装用户组 dinstall
# groupadd dinstall
1.2 创建安装用户 dmdba
# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
1.3 初始化用户密码
# passwd dmdba
1.4 创建达梦数据库安装目录并授权
# mkdir -p /opt/dmdbms
# chown -R dmdba:dinstall /opt/dmdbms
1.5 挂载iso文件
# mount -o loop dm***.iso /mnt
# cd ../mnt
# cp DMInstall.bin /opt
# cd ../
# umount /mnt
二 安装数据库
主库、备库与确认监视器相同操作,下方仅以主库为例
2.1 安装数据库软件 注:主备库都需要安装
切换用户到dmdba
# su - dmdba
$ cd /opt
$ ./DMInstall.bin -i
依次输入 c 选择中文
y 选择输入dm.key文件路径(有key选择输入路径,没有key输入 n 跳过)
/opt/dm.key 输入路径地址
y 选择设置时区
21 默认为21中国标准时间
1 默认为1标准安装
/opt/dmdbms/ 输入安装目录
y 输入y确认安装
安装结束,根据提示,请以root系统用户执行命令:
$ su - root
# cd /opt/dmdbms/script/root/
# ./root_installer.sh
数据库安装完成
2.2 主库初始化实例
注:搭建达梦主备仅需要主库初始化实例即可,如主库存在实例且有数据的情况,请参考搭建DM实时主备-数据准备,此处选择数据拷贝方式同步实例数据,所以仅初始化主库实例
# su – dmdba
$ cd /opt/dmdbms/bin
$ ./dminit PATH=/opt/dmdbms/data/ CHARSET=1
初始化实例可选参数,此处选择字符集为UTF-8
初始化成功后将以正常方式启动,并退出一次
对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常退出,然后才允许 mount 方式启动。
$ cd /opt/dmdbms/bin
$ ./dmserver /opt/dmdbms/data/DAMENG/dm.ini
启动后关闭进程即可
2.3 数据文件拷贝
将主库DAMENG文件夹scp至备库data文件夹下
$ cd /opt/dmdbms
$ scp -r data/ 192.168.189.130:/opt/dmdbms/data/
2.4 检查数据一致性
分别在主备库/opt/dmdbms/bin/目录下,以mount形式启动数据库
$ cd /opt/dmdbms/bin/
$ ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
分别启动命令行工具 DIsql
$ cd /opt/dmdbms/bin/
$ ./disql SYSDBA/SYSDBA
SQL>select file_LSN, cur_LSN from v$rlog;
SQL>select permanent_magic;
查看备库file_LSN值、cur_LSN 值与 permanent值是否一致,其中主备库file_LSN值与cur_LSN 值应为同一值(四组值相同),主备库permanent值为同一值。
确保值都一致的情况下,正常关闭各个实例。
三 配置主库配置文件
3.1 配置 dm.ini
$ cd /opt/dmdbms/data/DAMENG/
$ vi dm.ini
- 将INSTANCE_NAME值改为GRP1_RT_01
- 将DW_PORT值改为33141
- 将DW_ERROR_TIME值改为60
- 将ALTER_MODE_STATUS值改为 0
- 将ENABLE_OFFLINE_TS 值改为2
- 将MAL_INI 值改为1
- 将ARCH_INI值改为1
- 将HA_INST_CHECK_FLAG 值改为1
3.2 配置 dmmal.ini
$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.189.129 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.189.129 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.189.130
MAL_PORT = 61142
MAL_INST_HOST = 192.168.189.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
3.3 配置 dmarch.ini
$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M
3.4 配置 dmwatcher.ini
$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 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 #指定备库重演日志的时间阀值,默认关闭
3.5 生成 dmwatcher.ctl文件
**同一个守护进程组,必须使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt
工具生成一份 dmwatcher.ctl 文件,然后拷贝到192.168.189.130目录下即可.
**
$ cd /opt/dmdbms/bin
$ ./dmctlcvt TYPE=3 SRC=/opt/dmdbms/data/DAMENG/dmwatcher.ini DEST=/opt/dmdbms/data
$ cd /opt/dmdbms/data/GRP1/
$ cp dmwatcher.ctl /opt/dmdbms/data/DAMENG/
$ scp dmwatcher.ctl 192.168.189.130:/opt/dmdbms/data/DAMENG/
3.6 启动主库
以 mount 方式启动主库
$ cd /opt/dmdbms/bin/
$ ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
另开窗口
$ cd /opt/dmdbms/bin/
$ ./disql
输入以下sql
SQL>sp_set_oguid(453331); 注:设置OUGID值
SQL>alter database primary; 注:登录主库修改数据库为 primary 模式
四 配置备库配置文件
4.1 配置 dm.ini
$ cd /opt/dmdbms/data/DAMENG/
$ vi dm.ini
9. 将INSTANCE_NAME值改为GRP1_RT_02
10. 将DW_PORT值改为33142
11. 将DW_ERROR_TIME值改为60
12. 将ALTER_MODE_STATUS值改为 0
13. 将ENABLE_OFFLINE_TS 值改为2
14. 将MAL_INI 值改为1
15. 将ARCH_INI值改为1
16. 将HA_INST_CHECK_FLAG 值改为1
4.2 配置 dmmal.ini
$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.189.129 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.189.129 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.189.130
MAL_PORT = 61142
MAL_INST_HOST = 192.168.189.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
4.3 配置 dmarch.ini
$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M
4.4 配置 dmwatcher.ini
$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 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 #指定备库重演日志的时间阀值,默认关闭
4.5 启动备库
以 mount 方式启动备库
$ cd /opt/dmdbms/bin/
$ ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
$ cd /opt/dmdbms/bin/
进入disql
$ ./disql SYSDBA/SYSDBA
将以下sql执行
SQL>sp_set_oguid(453331); --注:设置OUGID值
SQL>alter database standby; --注:登录备库修改数据库为 Standby 模式
五 配置监视器
最好配置两个监视器 一个作为确认监视器,后台启动,保障主库发生故障会自动接管,一个作为普通监视器可以随时登录查看状态
此次为测试环境,监视器部署在备库上
5.1 配置普通监视器
# mkdir monitor
# chown -R dmdba:dinstall /monitor
# su - dmdba
$ cd /opt/dmdbms/monitor
$ vi monitor_nor.ini
将以下内容添加至文件中
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /opt/dmdbms/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.189.129:52141
MON_DW_IP = 192.168.189.130:52142
5.2 配置确认监视器
$ vi monitor.ini
将以下内容添加至文件
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /opt/dmdbms/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.189.129:52141
MON_DW_IP = 192.168.189.130:52142
5.3 启动进程
1.启动主备库实例进程
$ cd /opt/dmdbms/bin/
$ ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
2.启动主备库守护进程
$ cd /opt/dmdbms/bin/
./dmwatcher /opt/dmdbms/data/DAMENG/dmwatcher.ini
3.启动确认监视器
./dmmonitor /opt/dmdbms/monitor_cloud /monitor.ini
查看主备库处于正常状态关闭进程,注册服务。
六 注册服务
6.1 主库注册实例服务
$ cd /opt/dmdbms/script/root
$ ./dm_service_installer.sh -t dmserver -i /opt/dmdbms/data/DAMENG/dm.ini -m mount -p GRP1_RT_01
6.2 主库注册守护进程服务
$ ./dm_service_installer.sh -t dmwatcher -i /opt/dmdbms/data/DAMENG/dmwatcher.ini -p dm1
6.3 备库注册实例服务
$ cd /opt/dmdbms/script/root
$ ./dm_service_installer.sh -t dmserver -i /opt/dmdbms/data/DAMENG/dm.ini -m mount -p GRP1_RT_02
6.4 备库注册守护进程服务
$ ./dm_service_installer.sh -t dmwatcher -i /opt/dmdbms/data/DAMENG/dmwatcher.ini -p dm2
6.5 注册监视器服务
$ ./dm_service_installer.sh -t dmmonitor -i /opt/dmdbms/monitor/monitor.ini
7 查看状态
登录普通监视器查看状态
$ cd /opt/dmdbms/bin
$ ./dmmonitor /opt/dmdbms/monitor_cloud /monitor_nor.ini
集群状态定时刷新,也可登录监视器,输入 login,提示输入用户名密码,默认为SYSDBA,登录后输入 show 即可实时查看集群状态