1、介绍
1.1 MPP 主备
MPP 主备就是在MPP 集群的基础上,为每一个 MPP 节点配置一套实时主备系统,这些实时主备系统一起构成了 MPP .备库只做数据容灾、备份,MPP 备库并不是 MPP 集群的一部分,只是某个MPP 节点(主库)的镜像主备系统。通过dmmpp.ctl文件可以实现mpp集群的主备切换,需要所有节点的dm.ini文件都配置MPP_INI=1。dmmpp.ctl控制文件记录了mpp集群的节点信息,在主备切换或者备库接管后必须更新新的主库信息到dmpp.ctl文件中。
1.2 dmmpp.ctl文件
dmmpp.ctl 控制文件的信息主要包括:系统状态、MPP 节点数、文件校验码、故障节点数、故障节点序号、配置项名、实例名、实例节点序号,以及根据节点数和实例序号生成 的哈希映射数组等。MPP 集群中节点间的关联信息记录在dmmpp.ctl 控制文件中,因此, 所有MPP 主节点存放的 dmmpp.ctl 文件内容要求完全一致。
环境说明:4台已经安装dm8数据库,操作系统版本rhel 7.4
EP01主库:192.168.10.21和192.168.11.21
EP02主库:192.168.10.22和192.168.11.22
EP01备库:192.168.10.23和192.168.11.23
EP02备库:192.168.10.24和192.168.11.24
监视器:192.168.11.20
达梦数据库安装参考:https://mp.csdn.net/mp_blog/creation/editor/119575165
1、备份还原
2.1备份
#停止EP01主库数据库dmserver服务,启动dmap服务。
su - dmdba
cd /dm8/dmdbms/bin
./DmServiceDMSERVER stop
./DmAPService start
#EP01主库使用dmrman执行备份
./dmrman
RMAN>backup database '/dm8/dmdata/EP01/DAMENG/dm.ini' backupset 'full_bak';
2.2 还原
#将EP01主库的备份拷贝到EP01备库和EP02的主备库进行还原。
#停止EP01备库的数据库dmserver服务,启动dmap服务。
su - dmdba
cd /dm8/dmdbms/bin
./DmServiceDMSERVER stop
./DmAPService start
#使用dmrman还原
su - dmdba
cd /dm8/dmdbms/bin
RMAN>restore database '/dm8/dmdata/EP01/DAMENG/dm.ini' from backupset '/dm8/bak/full_bak';
RMAN>recover database '/dm8/dmdata/EP01/DAMENG/dm.ini' from backupset '/dm8/bak/full_bak';
RMAN>recover database '/dm8/dmdata/EP01/DAMENG/dm.ini' update db_magic;
#停止EP02主备库的数据库dmserver服务,启动dmap服务。
su - dmdba
cd /dm8/dmdbms/bin
./DmServiceDMSERVER stop
./DmAPService start
#使用dmrman还原
su - dmdba
cd /dm8/dmdbms/bin
RMAN>restore database '/dm8/dmdata/EP02/DAMENG/dm.ini' from backupset '/dm8/bak/full_bak';
RMAN>recover database '/dm8/dmdata/EP02/DAMENG/dm.ini' from backupset '/dm8/bak/full_bak';
RMAN>recover database '/dm8/dmdata/EP02/DAMENG/dm.ini' update db_magic;
3、EP01主备配置
3.1配置dm.ini
#EP01主库
cd /dm8/dmdata/EP01/DAMENG
vi dm.ini
INSTANCE_NAME = GRP1_MPP_EP01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
#EP01备库
cd /dm8/dmdata/EP01/DAMENG
vi dm.ini
INSTANCE_NAME = GRP1_MPP_EP11
说明:其他参数和主库一样
3.2配置dmmal.ini
#EP01和EP02主备库的dmmal.ini配置一样
cd /dm8/dmdata/EP01/DAMENG
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_MPP_EP01
MAL_HOST = 192.168.11.21
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.21
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_MPP_EP11
MAL_HOST = 192.168.11.22
MAL_PORT = 61142
MAL_INST_HOST = 192.168.10.22
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = GRP2_MPP_EP02
MAL_HOST = 192.168.11.23
MAL_PORT = 61143
MAL_INST_HOST = 192.168.10.23
MAL_INST_PORT = 5236
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
[MAL_INST4]
MAL_INST_NAME = GRP2_MPP_EP22
MAL_HOST = 192.168.11.24
MAL_PORT = 61144
MAL_INST_HOST = 192.168.10.24
MAL_INST_PORT = 5236
MAL_DW_PORT = 52144
MAL_INST_DW_PORT = 33144
3.3配置dmarch.ini
#EP01主库
cd /dm8/dmdata/EP01/DAMENG
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_MPP_EP11
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 512000
#EP01备库
cd /dm8/dmdata/EP01/DAMENG
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_DEST = GRP1_MPP_EP01
说明:其他参数和主库一致
3.4配置dmmpp.ini
#EP01主库,所有节点都使用这个dmmpp.ctl
cd /dm8/dmdata/EP01/DAMENG
vi dmmpp.ini
[service_name1]
mpp_seq_no = 0
mpp_inst_name = GRP1_MPP_EP01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = GRP2_MPP_EP02
#转换成dmmpp.ctl
cd /dm/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/dm8/dmdata/EP01/DAMENG/dmmpp.ini DEST=/dm8/dmdata/EP01/DAMENG/dmmpp.ctl
#EP01备库,从EP01主库拷贝dmmpp.ctl到相同的目录下。
3.5配置dmwatcher.ini
#EP01主库和EP01备库的dmwatcher.ini配置一样
cd /dm8/dmdata/DAMENG
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 202108101
INST_INI = /dm8/dmdata/EP01/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
3.6设置主备角色
#EP01主库
cd /dm8/dmdbms/bin
#以mount方式启动主库数据库服务
./dmserver /dm8/dmdata/EP01/DAMENG/dm.ini mount
#如果./disql SYSDBA/SYSDBA登录不了使用以下这种方式登录
./disql SYSDBA/SYSDBA@192.168.10.21:5236#"{mpp_type=local,inet_type=tcp}"
#设置为主库
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(202108101);
SQL> alter database primary;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
SQL> select file_LSN, cur_LSN from v$rlog;
#EP01备库
cd /dm8/dmdbms/bin
#以mount方式启动备库数据库服务
./dmserver /dm8/dmdata/EP01/DAMENG/dm.ini mount
./disql sysdba/SYSDBA
#设置为备库
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(202108101);
SQL> alter database standby;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
SQL> select file_LSN, cur_LSN from v$rlog;
4、EP02主备配置
4.1配置dm.ini
#EP02主库
cd /dm8/dmdata/EP02/DAMENG
vi dm.ini
INSTANCE_NAME = GRP2_MPP_EP02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
#EP02备库
cd /dm8/dmdata/EP02/DAMENG
vi dm.ini
INSTANCE_NAME = GRP2_MPP_EP22
说明:其他参数和EP02主库一致
4.2配置dmmal.ini
#EP01和EP02主备库的dmmal.ini配置一样
cd /dm8/dmdata/EP02/DAMENG
vi dmmal.ini
4.3配置dmarch.ini
#EP02主库
cd /dm8/dmdata/EP02/DAMENG
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_MPP_EP22
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 512000
#EP02备库
cd /dm8/dmdata/EP02/DAMENG
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_DEST = GRP2_MPP_EP02
说明:其他参数和EP02主库一致
4.4配置dmmpp.ini
#从EP01拷贝dmmpp.ctl文件到EP02主备的/dm8/dmdata/EP02/DAMENG/目录下。
4.5配置dmwatcher.ini
#EP02主库和备库的dmwatcher.ini配置一样
cd /dm8/dmdata/EP02/DAMENG
vi dmwatcher.ini
[GRP2]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 202108102
INST_INI = /dm8/dmdata/EP02/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
4.6设置主备角色
#EP02主库
cd /dm8/dmdbms/bin
#以mount方式启动主库数据库服务
./dmserver /dm8/dmdata/EP02/DAMENG/dm.ini mount
./disql SYSDBA/SYSDBA
#设置为主库
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(202108102);
SQL> alter database primary;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
SQL> select file_LSN, cur_LSN from v$rlog;
#EP02备库
cd /dm8/dmdbms/bin
#以mount方式启动备库数据库服务
./dmserver /dm8/dmdata/EP02/DAMENG/dm.ini mount
./disql sysdba/SYSDBA
#设置为备库
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(202108102);
SQL> alter database standby;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
SQL> select file_LSN, cur_LSN from v$rlog;
5、启动mpp主备集群
5.1启动守护进程
#EP01主库和EP01备库
#使用root用户生成dmwatcher服务脚本
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dmdata/EP01/DAMENG/dmwatcher.ini -p DMWATCHER
#启动dmwatcher
cd /dm8/dmdbms/bin
./ DmServiceDMWATCHER start
#EP02主库和EP02备库
#使用root用户生成dmwatcher服务脚本
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dmdata/EP02/DAMENG/dmwatcher.ini -p DMWATCHER
#启动dmwatcher
cd /dm8/dmdbms/bin
./ DmServiceDMWATCHER start
#守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将 本地实例Open,并切换为 Open 状态。
5.2配置监视器
#监视器
mkdir -pv /opt/dmmonitor/{log,config}
#从主库或者备库拷贝/dm8/dmdbms/bin目录到本机/opt/dmmonitor
#使用root用户编辑配置文件dmmonitor_manual.ini
cd /opt/dmmonitor/config
vi dmmonitor_manual.ini
MON_DW_ CONFIRM = 0 #确认监视器模式,0表示普通监视器
MON_LOG_PATH = /opt/dmmonitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 202108101 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.11.21:52141
MON_DW_IP = 192.168.11.23:52143
[GRP2]
MON_INST_OGUID = 202108102 #组GRP2的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.11.22:52142
MON_DW_IP = 192.168.11.24:52144
#启动dmmonitor
cd /opt/dmmonitor/bin
./dmmonitor /opt/dmmonitor/config/dmmonitor_manual.ini
总结
更多资讯请上达梦技术社区了解:https://eco.dameng.com