搭建DM主备集群最好准备3台服务器,一台主库服务器,一台备库服务器,一台监视器服务器。主备库服务器需配置两张网卡,且三台服务器都要安装数据库服务器,并将内部通信IP的端口开放。
注:如果测试搭建时,没有3台服务器,可以将监视器配置到备库服务器上。
主备库服务器目录规划保持一致
数据库安装目录: /dm8
实例安装目录: /dmdata/
归档日志存放目录: /dmarch
备份文件存放目录: /dmbak
服务器名 | 外部服务IP | 内部通信IP | 实例名 | 端口号 |
---|---|---|---|---|
DM1 | 192.168.92.201 | 192.168.92.191 | DMRT1 | 5237 |
DM2 | 192.168.92.202 | 192.168.92.192 | DMRT2 | 5237 |
主库 | 备库 | |
---|---|---|
数据库实例监听端口 | 5237 | 5237 |
MAL系统监听TCP连接的端口 | 61141 | 61143 |
实例本地的守护进程监听TCP连接的端口 | 52141 | 52143 |
实例监听守护进程TCP连接的端口 | 33141 | 33143 |
集群之间防火墙需开放以上所有端口,集群对客户端只需要开通数据库实例监听端口。
例:检测端口5236是否开放(回车后没有返回即为端口开放可以使用)
netstat -ano | grep 5237
1.查看操作系统位数
uname -a
2.查看时区
date -R
查看防火状态 systemctl status firewalld service iptables status
systemctl stop firewalld.service (暂时关闭防火墙服务,系统重启后防火墙还会打开)
systemctl disable firewalld.service(通过关闭防火墙服务,开机自动启动,来做到永久关闭防火墙服务)
安装步骤可参考:
https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html
su dmdba
cd /dm8/bin
主库实例:
./dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 INSTANCE_NAME=DMRT1 PORT_NUM=5237
备库实例:
./dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 INSTANCE_NAME=DMRT2 PORT_NUM=5237
1.1 主库创建实例之后,启动数据库并登录
./dmserver /dmdata/DAMENG/dm.ini
1.2 关闭数据库,以./dmrman(脱机备份还原工具)备份数据库
BACKUP DATABASE ‘/dmdata/DAMENG/dm.ini’ FULL BACKUPSET ‘/dmbak/backup/’;
1.3 将备份文件复制到备库对应目录下(如果是root用户,复制成功需要将备份文件设置属于dmdba:dinstall用)
scp -r /dmbak/backup/ dmdba@192.168.92.202:/dmbak/backup/
vim /dmdata/DAMENG/dm.ini
INSTANCE_NAME =DMRT1
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
(在/dmdata/DAMENG/下创建的新文件)
vim /dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMRT1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.92.191 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.92.201 #实例的对外服务IP地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMRT2
MAL_HOST = 192.168.92.192
MAL_PORT = 61143
MAL_INST_HOST = 192.168.92.202
MAL_INST_PORT = 5237
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
(在/dm8/data/DAMENG/下创建的新文件)配置本地归档和实时归档
vim /dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRT2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 64 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位Mb,0表示无限制,范围1024~2147483647M
(在/dm8/data/DAMENG/下创建的新文件)配置守护进程,配置为全局守护类型,使用自动切换模式
vim /dmdata/DAMENG/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 = /dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
./dmserver /dmdata/DAMENG/dm.ini mount
启动命令行工具disql,登录主库设置OGUID值。
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);
alter database primary;
启动dmrman执行数据库还原
cd /dm8/bin
./dmrman
RESTORE DATABASE ‘/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/backup’;
RECOVER DATABASE ‘/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/backup’;
RECOVER DATABASE ‘/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC;
vim /dmdata/DAMENG/dm.ini
INSTANCE_NAME =DMRT2
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
(在/dmdata/DAMENG/下创建的新文件)
vim /dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMRT1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.92.191 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.92.201 #实例的对外服务IP地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMRT2
MAL_HOST = 192.168.92.192
MAL_PORT = 61143
MAL_INST_HOST = 192.168.92.202
MAL_INST_PORT = 5237
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
(在/dm8/data/DAMENG/下创建的新文件)配置本地归档和实时归档
vim /dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRT1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 64 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位Mb,0表示无限制,范围1024~2147483647M
(在/dm8/data/DAMENG/下创建的新文件)配置守护进程,配置为全局守护类型,使用自动切换模式
vim /dmdata/DAMENG/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 = /dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
./dmserver /dmdata/DAMENG/dm.ini mount
启动命令行工具disql,登录备库设置OGUID值。
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);
alter database standby;
1、配置确认监视器
(在/dm8/data/DAMENG/下创建的新文件)
配置dmmonitor.ini
vim /dmdata/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[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.92.191:52141
MON_DW_IP = 192.168.92.192:52143
2、配置普通监视器
vim /dmdata/DAMENG/dmmonitor2.ini
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[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.92.191:52141
MON_DW_IP = 192.168.92.192:52143
1.启动主备机上的数据库
先启动主库,在启动备库
./dmserver /dmdata/DAMENG/dm.ini mount
2.启动守护进程
先启动主库的守护进程,在启动备库的守护进程
./dmwatcher /dmdata/DAMENG/dmwatcher.ini
3.启动确认监视器
./dmmonitor /dmdata/DAMENG/dmmonitor.ini
当以下参数符号要求,集群搭建成功
用root用户进入安装目录下的/script/root
cd /dm8/script/root
1.注册实例服务
主机:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMRT1
备机:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMRT2
2.注册守护进程服务
主机:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini -p dmw1
备机:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini -p dmw2
3.注册确认监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/DAMENG/dmmonitor.ini -p dmm
4.服务名配置 dm_svc.conf,Linux中此文件位于/etc 目录
vim /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DM_TIME=(192.168.92.201:5237,192.168.92.202:5237)
[DM_TIME]
LOGIN_MODE =(1)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
达梦主备集群搭建完成
集群启动顺序:
1.启动主备机上的数据库
先启动主库,在启动备库
./DmServiceDMRT1 start
./DmServiceDMRT2 start
2.启动守护进程
先启动主库的守护进程,在启动备库的守护进程
./DmWatcherServicedmw1 start
./DmWatcherServicedmw2 start
3.启动监视器
./dmmonitor /dmdata/DAMENG/dmmonitor.ini
集群关闭顺序:
1.关闭监视器
./DmMonitorServicedmm stop
2.关闭守护进程
先关闭备库的守护进程,在关闭主库的守护进程
./DmWatcherServicedmw2 stop
./DmWatcherServicedmw1 stop
3.关闭主备机上的数据库
先关闭备库,在关闭主库
./DmServiceDMRT2 stop
./DmServiceDMRT1 stop
正常情况下,如果主库出现错误,确认监视器会接管集群,将备库RAC2切换为primary(主库),切换后数据库正常工作。
如果出现问题后没有自动切换,也可以通过监视器的命令进行主备之间的切换
show-显示所有组的详细信息
login-登录监视器
choose switchover-查询可切换为PRIMARY库的备库列表
switchover DMRT2-切换DMRT2库为PRIMARY库
文章
阅读量
获赞