一、准备硬件环境(虚拟机)
1.1 操作系统、处理器、内存和磁盘
主机和备机建议一致。
操作系统:Kylin-Server-V10-SP3-2403-Release-20240426-X86_64
处理器内核、内存、磁盘大小如下图:
图 1.1
根据硬件环境,下载安装DM数据库,具体参考。完成安装后,不配置实例也不注册服务。
1.2 网络IP配置
| 配置项 | 主机 | 备机 |
|---|---|---|
| 业务IP及内网 | 192.168.116.135 | 192.168.116.134 |
| 实例名 | GRP1_RT_01 | GRP1_RT_02 |
| 实例端口 | 5236 | 5236 |
| MAL端口 | 5336 | 5336 |
| MAL守护进程端口 | 5346 | 5346 |
| 守护进程端口 | 5556 | 5556 |
| OGUID | 171100 | 171100 |
| 守护组 | GRP1 | GRP1 |
| 安装目录 | /home/dmdba/dmdbms | /home/dmdba/dmdbms |
| 实例目录 | /dmdata/data/DAMENG | /dmdata/data/DAMENG |
| 归档上限 | 4G | 4G |
监视器IP:192.168.116.133
二、配置过程
2.1配置主库
2.1.1 数据库
数据库版本:dm8_20251021_x86_kylin10_sp3_64
配置实例:
[dmdba@localhost bin]$ ./dminit PATH=/dmdata/data/ INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 SYSDBA_PWD=Jimao1017 SYSAUDITOR_PWD=Jimao1017
注册实例:
[root@localhost ~]# cd /home/dmdba/dmdbms/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p DAMENG
2.1.2 修改OGUID
图 2.1
2.1.3 归档与备份
在数据库归档模式下,若数据库突发故障时,系统可以利用归档日志恢复数据库到故障发生的前一刻,而备份是则是保存数据库当前一刻的所有数据至备份集中。联机备份需要数据库在归档模式下。
使用DM管理工具,连接数据库,转换为“配置”模式,进行归档,如下图。
图 2.2
点击“归档”,点击加号,选择归档目录,如下图。
图 2.3
完成归档,进行数据库备份,转换数据为“打开”模式,如下图。
图 2.4
选择“库备份”,进行完全备份,选择目录为“/dmdata/dmbak”。
图 2.5
2.1.5 修改dm.ini的参数
图 2.6
参数解释:
ALTER_MODE_STATUS:是否允许手动修改服务器的模式,选择不允许。
ENABLE_OFFLINE_TS:是否运行OFFLINE表空间,选择备库不允许。
MAL_INI:是否启用MAL系统,启用。
2.1.6 配置文件
1、关闭实例服务
图 2.7
2、修改dmarch.ini
[dmdba@localhost DAMENG]$ vi dmarch.ini
图 2.8
注意:[ARCHIVE_REALTIME1]配置不能少,否则dmWatcher进程会启动失败
归档上限修改为4096MB,即4G,当归档文件大小超出4G时,便会删除最早的归档文件。
ARCH_WAIT_APPLY参数配置为0,则该主备集群为高性能模式。高性能模式下,备库收到主库的REDO日志后,会先响应主库,再启动日志重演,这会导致备库的数据对比主库的数据会存在一定的延迟,但保证了数据库服务提供的性能更高;若该参数配置为1,即为事务一致模式,当备库收到主库的REDO日志后,会完成日志重演后再响应主库,这能保证主备库的数据是同步的,但若面对大量的业务数据写入时,将要花费较多的时间等待数据写入和备库日志重演完成。
3、创建dmmal.ini
[dmdba@localhost DAMENG]$ vi dmmal.ini
图 2.9
4、创建dmwatcher.ini
[dmdba@localhost DAMENG]$ vi dmwatcher.ini
图 2.10
5、注册心跳进程服务
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
6、拷贝文件至备机
[dmdba@localhost dmbak]$ scp -r DB_DAMENG_FULL_2025_11_17_14_30_09 <dmdba@192.168.116.134:/dmdata/dmbak>
2.2配置备库
2.2.1 数据库
数据库版本:dm8_20251021_x86_kylin10_sp3_64
配置实例:
[dmdba@localhost bin]$ ./dminit PATH=/dmdata/data/ INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 EXTENT_SIZE=32 SYSDBA_PWD=Jimao1017 SYSAUDITOR_PWD=Jimao1017
注意:若实例中的MAL_FLAG和ARCH_FLAG参数在初始化时设置为1,会到导致dm.ini中的MAL_INI参数也设置为1,便会启动MAL系统,但由于初始在实例目录下不存在“dmmal.ini”文件,所以该实例restart会失败。
2.2.2 还原文件
[dmdba@localhost bin]$ ./dmrman CTLSTMT="RESTORE DATABASE'/dmdata/data/DAMENG/dm.ini'FROM BACKUPSET '/dmdata/dmbak/DB_DAMENG_FULL_2025_11_17_22_55_26'"
[dmdba@localhost bin]$ ./dmrman CTLSTMT="RECOVER DATABASE'/dmdata/data/DAMENG/dm.ini'FROM BACKUPSET '/dmdata/dmbak/DB_DAMENG_FULL_2025_11_17_22_55_26'"
[dmdba@localhost bin]$ ./dmrman CTLSTMT="RECOVER DATABASE'/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
2.2.3 创建dmarch.ini
[dmdba@localhost DAMENG]$ vi dmarch.ini
图 2.11
2.2.4 修改dm.ini配置****
[dmdba@localhost DAMENG]$ vi dm.ini
ALTER_MODE_STATUS参数取值为0,表示用户不可通过SQL语句切换主备库模式。
ENABLE_OFFLINE_TS参数取值为2,表示备库不允许下线表空间。
MAL_INI参数取值为1,表示开启MAL系统传输。
ARCH_INI参数取值为1,表示启用归档。
2.2.5 创建dmmal.ini
[dmdba@localhost DAMENG]$ vi dmmal.ini
图 2.12
2.2.6 创建dmwatcher.ini****
[dmdba@localhost DAMENG]$ vi dmwatcher.ini
图 2.13
2.2.7 注册服务****
[root@localhost root]# ./dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
2.3配置监视器
在IP地址为192.168.116.133的服务器上配置监视器
2.3.1配置确认监视器
在节点的bin目录下配置监视器
[dmdba@localhost bin]$ vi dmmonitor.ini
图 2.14
该确认监视器的MON_DW_CONFIRM参数配置为1,为自动切换模式。当监视器检测到主库出现故障时,会自动切换至备库,保证正常提供数据库服务。若该参数配置为0,若当前提供数据库服务的数据库出现故障,则需要手动进行切换。
2.3.2配置非确认监视器
[dmdba@localhost bin]$ vi dmmonitor_manual.ini
图 2.15
在整个集群中,监视器部署的作用是,获取整个集群中所有节点守护进程的信息,数据库实例信息,判断每个节点数据库实例的状态。若需要根据节点状态自动进行主库和备库的切换,则建议在第三台服务上配置确认监视器。
在整个集群中,确认监视器只能部署一台,非确认监视器没有部署限制,可以部署在集群的每一个服务节点中,也可以不部署在集群中,也可以部署在不同的操作系统中。
通过前台的方式可以启动非确认监视器。其作用在于,在不影响确认监视器工作的情况下,用户可以使用它来执行用户的命令。通过help指令,可以获取监视器的控制命令,例如观察集群所有实例的情况(show)、查看集群当前状态(tip)、使用实例用户登录监视器(login)、登出监视器(logout)、分离某个数据库实例(detach database)、加入某个数据库实例(attach database)等。
非确认监视器无法自动接管,主要作用在于观察集群的状态并执行用户的操作。下图为主库服务被杀死时,非确认监视提示的警告信息。
图 2.16
2.3.3 注册监视器
[root@localhost bin]# ./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini
三、开启服务
开启服务前,建议先关闭主机和备机的防火墙,或添加以上涉及的端口通道。
3.1 开启主机守护进程
[dmdba@localhost bin]$ ./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
3.2 开启备机守护进程****
[dmdba@localhost bin]$ ./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
3.3 开启监视器
[dmdba@localhost bin]$ ./dmmonitor dmmonitor_manual.ini
以上命令开启的非确认监视器。
通过show命令,可以查看集群内的实例,如下图。
图 3.1
图中最上方可以看到该集群的详细信息,唯一标识的OGUID,故障自动切换模式等。下方可以看到,该集群两个节点的watcher服务(心跳进程)和数据库服务都是正常打开的,并且IP地址为192.168.116.135的两项服务是主服务,另外一个是备服务。
通过tip命令,可以看到集群中是否有问题出现,如下图。
图 3.2
四、验证集群运行状态
通过 kill 命令杀死主库的数据库实例进程,观察集群情况。
图 4.1
可以观察到,IP地址为192.168.116.134的两项服务变为了主服务,故障自动切换服务正常运行。
五、总结
部署并启动主备集群主要分为以下五步。
第一,关闭主库的数据库服务、修改OGUID并归档备份;
第二,配置主库及备库的dmarch.ini(redo日志归档配置文件)、dmmal.ini(MAL配置文件)、dmwatcher.ini(守护进程配置文件);
第三,使用主库的备份文件还原所有备库;
第四,注册主库守护进程、备库数据库实例及备库守护进程;
第五,在第三台服务器上配置监视器,观察并管理该主备集群;
第六,启动主库数据库实例、主库守护进程、备库数据库实例、备库守护进程、监视器服务。
在部署过程中,有二个点需要注意。第一个是,在对主库进行归档操作前,使用SP_SET_OGUID()系统函数将OGUID值设置好,且要保证主备库的dmwatcher.ini文件中的INST_OGUID参数与其一致,这个参数保证这些数据库在一个集群中;第二个是,在还原备库时要使用最新的主库完全备份文件。