**达梦数据库(DM)主备集群是一种高可用性解决方案,旨在通过冗余机制提高数据库系统的可靠性和稳定性。主备集群为最基础的高可用架构,只有主库对外提供数据库服务,备库仅做备份,根据实际要求及网络条件,可以选择配置为自动切换或者手动切换模式。主备集群也是DCP考试中一项重要的考点,下面简要介绍搭建过程及一些重要参数的解释。
一、部署规划
数据守护节点规划:
dwp 192.168.56.103 ---主机
dws 192.168.56.104 ---备机
dwm 192.168.56.105 ---监视器
数据守护端口规划:
数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMDB DMDB01 5236 45101 192.168.56.103 55101 65101
DMDB DMDB02 5236 45121 192.168.56.104 55121 65121
系统参数修改
cat /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.swappiness=10
vm.dirty_background_ratio = 0
–vm.min_free_kbytes = 2097152
vim /etc/security/limits.conf
dmdba soft nofile 32768
dmdba hard nofile 65536
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
系统资源限制
vi /home/dmdba/.bash_profile
export DM_HOME=/dm/
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
二、主备集群搭建
----先初始化主备库实例,dbca建库,注意名称
或者命令行初始化命令如下:
主库(IP: 192.168.56.103 实例名:DMDB):
./dminit path=/dm/data DB_NAME=DMDB INSTANCE_NAME=DMDB01 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=500 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng123
备库(IP: 192.168.56.104 实例名:DMDB):
./dminit path=/dm/data DB_NAME=DMDB INSTANCE_NAME=DMDB02 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=500 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng123
--注意 dbca初始化数据库,在初始化过程中会注册数据库服务。如果用命令初始化需要自己手动注册服务,命令如下:
主库:
/dm/script/root/dm_service_installer.sh -t dmserver -p DMDB01 -dm_ini /dm/data/DMDB/dm.ini
备库:
/dm/script/root/dm_service_installer.sh -t dmserver -p DMDB02 -dm_ini /dm/data/DMDB/dm.ini
--主备两台实例关掉
./DmServiceDMDB01 stop
./DmServiceDMDB02 stop
--对主机进行备份:
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DMDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/backup/BACKUP_FILE_01'"
--从主传到备
scp /dm/backup/BACKUP_FILE_01/* dmdb@192.168.56.104:/dm/backup
--在备上进行恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/backup'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/backup'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DMDB/dm.ini' UPDATE DB_MAGIC"
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMDB01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.56.103 #MAL系统监听TCP连接的IP地址
MAL_PORT = 55101 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.56.103 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 65101 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 45101 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMDB02
MAL_HOST = 192.168.56.104
MAL_PORT = 55121
MAL_INST_HOST = 192.168.56.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMDB02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~2147483647M
[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 = /dm/data/DMDB/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
启动主库
./dmserver /dm/data/DMDB/dm.ini mount #前台启动,关闭窗口会停实例
或者
cd /dm/bin
./DmServiceDMDB mount #后台启动
修改主库的模式和设置oguid。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
INSTANCE_NAME = DMDB02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMDB01
MAL_HOST = 192.168.56.103
MAL_PORT = 55101
MAL_INST_HOST = 192.168.56.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMDB02
MAL_HOST = 192.168.56.104
MAL_PORT = 55121
MAL_INST_HOST = 192.168.56.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMDB01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm/data/DMDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
以 Mount 方式启动备库
./dmserver /dm/data/DMDB/dm.ini mount
或者
cd /dm/bin
./DmServiceDMDB mount
设置备库模式和oguid值
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
--启主备库的守护进程
启主库守护进程
[dmdba@/dm/bin]#./dmwatcher /dm/data/DMDB/dmwatcher.ini
启备库守护进程
[dmdba@/dm/bin]#./dmwatcher /dm/data/DMDB/dmwatcher.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
MON_DW_IP = 192.168.56.103:65101 #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.56.104:65121 #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
前台启动监视器
[dmdba@localhost bin]$ ./dmmonitor /dm/dmmonitor.ini
监视器提供一系列命令,支持当前守护系统状态查看及故障处理,可输入help查看。,在监视器上执行show命令,可以监控所有实例。
主备切换
1.查看集群可以切换的节点
choose switchover GRP1
Can choose one of the following instances to do switchover:
1: DMDB02
2.输入switchover DMDB02回车,集群开始进行主备切换
switchover DMDB2
后续步骤:
--在mon节点注册监视器服务(也可以不注册)
/dm/script/root/dm_service_installer.sh -t dmmonitor -p ITSM_DB -monitor_ini /dm/dmmonitor.ini
-- 注意守护进程注册服务
注册主库的守护进程
[root@~]# /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DMDB/dmwatcher.ini
注册备库的守护进程
[root@~]# /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DMDB/dmwatcher.ini
**
文章
阅读量
获赞