M数据守护( Data Watch )是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障等极端情况下避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。DM 数据守护(DM Data Watch)的实现原理是将主库产生的Redo日志传输到备库,备库接收并重新应用Redo 日志,从而实现备库与主库的数据同步。DM数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。结构图如下:
01环境信息本文描述的环境为模拟环境,主要信息如下:操作系统: Kylin Linux Advanced Server V10 (Sword)数据库版本:DM 8.1
主机名IP 地址数据库角色dmdw01192.168.3.167主库dmdw02192.168.3.168备库dmdw03192.168.3.169仲裁
02配置实施环境2.1. 服务器配置达梦的资源限制编辑 /etc/security/limits.conf 文件,添加如下配置,确保达梦数据库用户资源限制满足需求 #add for DM
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 655362.2. 操作系统创建用户以 root 用户登录,执行以下命令创建DM数据库专用的用户和组groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba2.3. 规划安装目录序号目录路径目录描述1/dm存放达梦的安装程序文件2/dmdata存放数据文件3/dmarch存放归档日志文件4/dmbak存放数据库备份文件5/opt/soft存放达梦数据库安装介质2.4. 创建目录并更改目录属主,确保 dmdba 用户具有目录权限创建目录并更改属主,以 root 用户执行以下命令。mkdir /dm /dmdata /dmarch /dmbak
chown -R dmdba:dinstall /dm /dmdata /dmarch /dmbak2.5. 挂载达梦镜像盘将安装镜像包及证书 dm.key 上传至服务器 /opt/soft 目录,并执行挂载操作。mount -o loop /opt/soft/*.iso /mnt准备安装文件并授予执行权限,以 root 用户执行以下命令。cp -r /mnt/DMInstall.bin /opt/soft
chmod +x /opt/soft/DMInstall.bin2.6. 关闭防火墙使用root用户登录所有服务器,执行以下步骤:systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
03安装数据库软件登录服务器并执行安装,主备节点和仲裁节点都执行数据库软件安装操作。使用root用户登录服务器,依次执行以下步骤:
su - dmdba cd /opt/soft./DMInstall.bin -i 进行命令行安装请选择安装语言(C/c:中文 E/e:英文) [C/c]:【C】是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:【Y】请输入Key文件的路径地址 [dm.key]:【/opt/soft/dm.key】是否设置时区? (Y/y:是 N/n:否) [Y/y]:【Y】请选择设置时区 [21]:【21】请选择安装类型的数字序号 [1 典型安装]:【1】请选择安装目录 [/home/dmdba/dmdbms]:【/dm】是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:【Y】是否确认安装? (Y/y:是 N/n:否):【Y】……请以root系统用户执行命令:/dm/script/root/root_installer.sh安装结束安装完成后需要根据提示以root用户执行脚本
04初始化数据库在主备库服务器中均要执行数据库初始化操作。使用dmdba用户,执行以下命令:cd /dm/bin/
./dminit PATH=/dmdata
DB_NAME=DAMENG
INSTANCE_NAME=DW01
PAGE_SIZE=32
EXTENT_SIZE=32
BLANK_PAD_MODE=0
CASE_SENSITIVE=0
CHARSET=1
LOG_SIZE=2048
USE_NEW_HASH=1备库不同的部分参数INSTANCE_NAME=DW02参数说明:参数安装参数说明PATH/dmdata数据文件目录DB_NAMEDAMENG数据库名称INSTANCE_NAMEDW01数据库实例名称PAGE_SIZE32页大小EXTENT_SIZE32簇大小BLANK_PAD_MODE0设置空格填充模式CASE_SENSITIVE0大小写是否敏感CHARSET1字符集为 UTF8LOG_SIZE2048REDO 日志文件大小USE_NEW_HASH1改进的 HASH 算法前端启动主机数据库,使用dmdba用户,执行以下命令:cd /dm/bin
./dmserver /dmdata/DAMENG/dm.ini出现SYSTEM IS READY.关键字后停止数据库Ctrcl + c 停止或者ps -ef|grep dmser 然后 kill -9 进程号停止。
05部署主备5.1. 准备备库环境 将主库的数据备份,发送至备库进行还原恢复。 (1) 在主库上备份数据库主库若是正在运行的单机库则可执行联机备份,使用dmdba用户,执行以下命令。cd /dm/bin
./disql sysdba/密码@localhost:数据库端口
Backup database backupset compressed;若是新搭建读写集群,为刚初始化的库则脱机备份即可。cd /dm/bin
./dmrman
RMAN> BACKUP DATABASE ‘/dmdata/DAMENG/dm.ini’ BACKUPSET ‘/dmbak/fullbak’; (2) 拷贝备份文件到备库上scp -r /dmbak/* dmdba@192.168.3.168:/dmbak/5.2. 配置主备库参数文件配置文件都在数据库目录下创建,根据安装目录规划,数据库目录在/dmdata/DAMENG路径下。pwd //查看当前路径
/dmdata/DAMENG(1) 配置dm.inidm.ini是达梦数据库的配置文件,在创建实例时会自动生成。配置数据守护时,需要修改dm.ini文件中的以下参数值。在主备节点的dm.ini文件中修改以下参数值:INSTANCE_NAME = DW01
#INSTANCE_NAME = DW02 #根据节点实例名填写具体值
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许以手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 1 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志发送信息(2) 配置dmmal.inidmmal.ini是MAL系统的配置文件,各主备库的dmmal.ini配置必须完全一致。默认没有dmmal.ini文件,需要单独创建并添加以下内容:$ cat dmmal.ini
MAL_CHECK_INTERVAL = 60
MAL_CONN_FAIL_INTERVAL = 60
MAL_TEMP_PATH = /dmdata/DAMENG
MAL_BUF_SIZE= 512
MAL_SYS_BUF_SIZE= 2048
MAL_COMPRESS_LEVEL= 0
[MAL_INST1]
MAL_INST_NAME = DW01
MAL_HOST = 192.168.3.167
MAL_PORT = 5336
MAL_INST_HOST = 192.168.3.167
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
[MAL_INST2]
MAL_INST_NAME = DW02
MAL_HOST = 192.168.3.168
MAL_PORT = 5336
MAL_INST_HOST = 192.168.3.168
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536(3)配置dmarch.inidmarch.ini是归档配置文件。在两个主备节点的环境中,数据同步的ARCH_DEST互相写对方的实例。比如,当前是DW01,则对应的ARCH_DEST写DW02。如果之前已经启用了归档,那么该文件已经存在;如果未启用归档,则需要手动创建文件并添加内容。主库参数:$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/DAMENG
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 96000
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DW02备库参数:$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/DAMENG
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 96000
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DW01(4)配置dmwathcer.inidmwatcher.ini是守护进程配置文件,除了异步主备,其他类型的主备必须配置为全局守护类型。在两个主备节点都创建并添加以下内容。$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 60
INST_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_OGUID = 413113
INST_INI = /dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 05.3. 配置主备库模式使用dmdba用户在备库上执行还原恢复操作,启动DMAP服务后,执行恢复命令。cd /dm/bin
./dmrman
RMAN> restore database ‘/dmdata/DAMENG/dm.ini’ from backupset ‘/dmbak/fullbak’;
RMAN> recover database ‘/dmdata/DAMENG/dm.ini’ from backupset ‘/dmbak/fullbak’;
RMAN> recover database ‘/dmdata/DAMENG/dm.ini’ update db_magic;主备数据库服务器均启动到mount状态,主备服务器命令相同,使用dmdba用户执行以下命令。cd /dm/bin
./dmserver /dmdata/DAMENG/dm.ini mount设置OGUID,主备服务器命令相同,使用dmdba用户执行以下命令。语法:disql SYSDBA/密码@localhost:端口号cd /dm/bin
./disql SYSDBA/SYSDBA@localhost:5236
SQL> sp_set_oguid(413113);修改数据库模式,使用SQL语句,将主库的模式设置为PRIMARY,备库的模式设置为STANDBY。主库执行:SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);备库执行:SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);5.4. 启动主备守护服务dmwatcher主备数据库服务器均启动dmwatcher,使用dmdba用户,执行以下命令。cd /dm/bin
./dmwatcher /dmdata/DAMENG/dmwatcher.ini5.5. 注册服务并以服务形式启动集群状态正常后可注册服务,先ctrl+ c依次停掉备机dmwatcher,主机dmwatcher,备机dmserver,主机dmserver然后以服务形式启动服务。将主备机数据库守护进程注册为服务,使用root用户,执行以下命令:su - root
cd /dm/script/root/
// 注册dmserver服务
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dmdata/DAMENG/dm.ini
// 注册dmwatcher服务
./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dmdata/DAMENG/dmwatcher.ini启动主备守护服务,使用root用户,执行以下命令:systemctl start DmWatcherServiceDMWATCHER
systemctl start DmServiceDMSERVER守护进程启动后,会自动拉起dmserver服务。
06部署仲裁6.1. 配置人工监视器参数文件在仲裁节点/dmdata/DAMENG目录下新建监视器参数文件dmmonitor_manual_GRP1.ini,内容如下:$ cat dmmonitor_manual_GRP1.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /dm/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 413113
MON_DW_IP = 192.168.3.167:5436
MON_DW_IP = 192.168.3.168:54366.2. 启动人工监视器登录仲裁机,启动监视器服务查看集群状态/dm/bin/dmmonitor /dmdata/DAMENG/dmmonitor_manual_GRP1.ini输入show 查看集群状态,可以监控到所有实例都处于Open 状态,所有守护进程也都处于Open 状态,以下图示信息为正常。6.3. 配置确认监视器参数文件在仲裁节点/dmdata/DAMENG目录下新建监视器参数文件dmmonitor_auto_GRP1.ini,内容如下:$ cat dmmonitor_auto_GRP1.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 413113
MON_DW_IP = 192.168.3.167:5436
MON_DW_IP = 192.168.3.168:54366.4. 注册监视器服务将数据库监视器注册为服务,使用root用户,执行以下命令:su - root
cd /dm/script/root
./dm_service_installer.sh -t dmmonitor -p DMMONITOR -monitor_ini /dmdata/DAMENG/dmmonitor_auto_GRP1.ini启动确认监视器systemctl start DmMonitorServiceDMMONITOR.service
07配置dm_svc.conf在/etc 目录下会自动生成集群的dm_svc.conf配置文件,请自行复制它到客户端机器的相关目录下:dm_svc.conf配置文件,Windows平台下位于%SystemRoot%\system32目录,Linux平台下位于/etc目录。DM=(192.168.3.167:端口,192.168.3.168:端口)
TIME_ZONE=(+480) #操作系统时区,表示+8:00 时区
LANGUAGE=(cn) #操作系统语言,CN(表示中文)和 EN(表示英文)
LOGIN_MODE=(1) #指定优先登录的服务器模式。0:优先连接 PRIMARY 模式的库,NORMAL 模式次之,最后选择 STANTBY 模式;1:只连接主库;2:只连接备库;3:优先连接STANDBY 模式的库,PRIMARY 模式次之,最后选择 NORMAL 模式;4:优先连接 NORMAL 模式的库,PRIMARY 模式次之,最后选择 STANDBY模式
SWITCH_TIMES=(3) #以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围1~9223372036854775807
SWITCH_INTERVAL=(1000) #在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807
LOGIN_ENCRYPT=(0) #是否进行通信加密。0:不加密;1:加密
[DM]
#以下参数为读写分离集群配置
RW_SEPARATE=(1)#是否开启读写分离
RW_PERCENT=(25)#读写分离比,0-100,按需配置Jdbc驱动连接url:jdbc:dm://dm?rwSeparate=1&rwPercent=10
文章
阅读量
获赞