dm8主备集群与数据守护
一、 达梦数据库主备简介... 2
二、 环境准备... 3
三、 主备库数据同步... 5
四、 主从配置文件参数... 7
4.1 配置dm.ini 7
4.2 配置dmmal.ini 7
4.3 配置本地归档和即时归档dmarch.ini 8
4.4 配置守护进程dmwatcher.ini 9
五、 修改主备库OGUID. 11
5.1 修改主库... 11
5.2 修改备库... 12
六、 配置监视器(一台即可)... 14
七、 启动主备库的实例、守护进程以及监视器... 15
八、 集群启动与关闭... 17
8.1 关闭... 17
8.2 启动... 17
一、 达梦数据库主备简介
达梦主备集群顾名思义就是一主一备(也可以一主多备)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求。解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求,即实现系统的双机热备功能。在使用的过程中,如果是实时同步模式的话,主机和备机的数据保持完全一致。主机产生一条新的记录时,在记录写入数据库文件之前,会把新产生的redo日志文件发送到备机,由备机重新执行接收到的redo日志,来保证主备集群数据的一致性。
二、 环境准备
数据库安装完成
主机名 |
端口默认号 |
节点 |
数据库名 |
实例名 |
node1 |
5240 |
192.168.152.11 |
MASTER |
MASTER |
node2 |
5240 |
192.168.152.12 |
SLAVE |
SLAVE |
主节点node1:192.168.152.11
实例名: MASTER 端口默认:5240
数据库初始化
./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=MASTER INSTANCE_NAME=MASTER PORT_NUM=5240
创建实例
./dm_service_installer.sh -t dmserver -p MASTER -dm_ini /dm8/data/MASTER/dm.ini
从节点node1: 192.168.152.11
实例名: SLAVE 端口默认:5240
数据库初始化
./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=SLAVE INSTANCE_NAME=SLAVE PORT_NUM=5240
创建实例
./dm_service_installer.sh -t dmserver -p SLAVE -dm_ini /dm8/data/SLAVE/dm.ini
都先执行初始化
创建文件夹 mkdir backup
然后只启动主库,启动一次之后,然后用disql工具登陆,进行数据库备份
RMAN> backup database ‘/dm8/data/MASTER/dm.ini’ backupset '/dm8/data/backup';
三、 主备库数据同步
将主库的备份文件拷贝到备库同级目录下面:(可以用scp)
拷贝文件到从节点的back文件夹(可以利用xftp工具,手动拖包到从节点机器)
[dmdba@localhost~]$
scp -r /dm8/data/backup/back.bak dmdba@192.168.152.140:/dm8/data/backup
[dmdba@localhost ~]$
scp -r /dm8/data/backup/back.meta dmdba@192.168.152.140:/dm8/data/backup
然后从库利用dmrman工具,冷还原刚才主库所发送过来的备份文件
restore database '/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'
recover database '/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'
recover database '/dm8/data/SLAVE/dm.ini' update db_magic
四、 主从配置文件参数
4.1 配置dm.ini 文件在/dm8/data/MASTER下
修改dm.ini文件的4个参数
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
4.2 配置dmmal.ini
主备库的配置必须完全一致(可以使用scp方式传输)
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = MASTER #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.152.11 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.152.11 #实例的对外服务 IP 地址
MAL_INST_PORT = 5240 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = SLAVE
MAL_HOST = 192.168.152.12
MAL_PORT = 61142
MAL_INST_HOST = 192.168.152.12
MAL_INST_PORT = 5240
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
4.3 配置本地归档和即时归档dmarch.ini
先配置主节点master
[ARCHIVE_TIMELY1]
ARCH_TYPE
= TIMELY #即时归档类型
ARCH_DEST = SLAVE #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE
= LOCAL #本地归档类型
ARCH_DEST =
/dm8/data/MASTER/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围
1024~4294967294M
再配置从节点slave
[ARCHIVE_TIMELY1]
ARCH_TYPE
= TIMELY #即时归档类型
ARCH_DEST = MASTER #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE
= LOCAL #本地归档类型
ARCH_DEST =
/dm8/data/SLAVE/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围
1024~4294967294M
4.4 配置守护进程dmwatcher.ini
故障自动切换模式下,可以实时处理故障,但对网络稳定性要求更高,需要确保主备库之间,主备库与守护进程、确认监视器之间的网络稳定可靠,否则可能会误判主库故障,备库自动接管后,出现多个 Open 状态的主库,引发脑裂。故障手动切换模式下,备库不会自动接管,出现节点故障或者网络故障时,由用户根据各种故障情况,进行人工干预。生产中推荐MANUAL
[dmdba@node1 MASTER]$ pwd
/dm8/data/MASTER
[dmdba@node1 MASTER]$ vim dmwatcher.ini
主库配置文件
[GRP1]
DW_TYPE
= GLOBAL #全局守护类型
DW_MODE
= AUTO #自动切换模式
DW_ERROR_TIME
= 10 #远程守护进程故障认定时间
INST_RECOVER_TIME
= 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME
= 10 #本地实例故障认定时间
INST_OGUID
= 453332 #守护系统唯一 OGUID 值
INST_INI
= /dm8/data/MASTER/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART
= 1 #打开实例的自动启动功能
INST_STARTUP_CMD
= /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0
#指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
从库配置文件
[GRP1]
DW_TYPE
= GLOBAL #全局守护类型
DW_MODE
= AUTO #自动切换模式
DW_ERROR_TIME
= 10 #远程守护进程故障认定时间
INST_RECOVER_TIME
= 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME
= 10 #本地实例故障认定时间
INST_OGUID
= 453332 #守护系统唯一 OGUID 值
INST_INI
= /dm8/data/SLAVE/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART
= 1 #打开实例的自动启动功能
INST_STARTUP_CMD
= /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0
#指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
五、 修改主备库OGUID
5.1 修改主库
以mount 方式启动主库
./dmserver /dm8/data/MASTER/dm.ini mount
以disql工具登陆,修改oguid值
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5.2 修改备库
以mount方式登陆备库
./dmserver /dm8/data/SLAVE/dm.ini mount
以disql工具登陆备库修改oguid值
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
六、 配置监视器(一台即可)
故障自动切换模式的数据守护系统,必须部署一个确认监视器,否则在出现数据库故障时,会导致数据库服务中断,在主备机器或者同网段第三台新机器上部署即可。
配置监视器,在哪台机器配置都可以,不做限制
[dmdba@node3 MASTER]$ pwd
/dm8/data/MASTER
[dmdba@node3 MASTER]$ vim dmmonitor.ini
MON_DW_Confirm = 1 #确认监视器模式
MON_LOG_PATH = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以—IP:PORT?的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.152.11:52141
MON_DW_IP = 192.168.152.12:52142
七、 启动主备库的实例、守护进程以及监视器
启动顺序 :启动主备库的实例、守护进程
启动备库的实例、守护进程
最后启动监视器
mount 方式启动主备库实例:
./dmserver /dm8/data/MASTER/dm.ini mount
./dmserver /dm8/data/SLAVE/dm.ini mount
在bin目录下启动主库的守护进程
./dmwatcher /dm8/data/MASTER/dmwatcher.ini
然后再启动备库的守护进程
./dmwatcher /dm8/data/SLAVE/dmwatcher.ini
现在关闭node1和node2的防火墙,开启node3上面的监视器,可输入show命令查看状态
./dmmonitor /dm8/data/MASTER/dmmonitor.ini
到了这一步之后,便可以开始建表测试了
主库进入/dm8/bin
./disql SYSDBA/SYSDBA@localhost:5240
SQL>create table test (id int);
SQL>insert into values (999999);
备库查找
进入/dm8/bin
./disql SYSDBA/SYSDBA@localhost:5240
SQL>select * from test;
切换主备测试
在守护进程操作
Login
输入用户名 密码
如果需要把备库切换为主库 switchover GRP1.SLAVE
把主库切换为备库 switchover GRP1.MASTER
在主库正常的情况下,备库无法操作数据,只能更新来自主库的数据
八、 集群启动与关闭
8.1 关闭
如果启动了确认监视器,先关闭确认监视器(防止自动接管),关闭备库守护进程(防止重启实例),关闭主库守护进程(防止重启实例),Shutdown 主库,Shutdown 备库。再关闭实例。
8.2 启动
先启动主库实例,在启动主库守护进程、然后备库也一样,先实例再进程,最后启动监视器。