搭建DM数据守护集群

发布于:2025-07-28 ⋅ 阅读:(13) ⋅ 点赞:(0)

1环境与规划

准备3个kylin 10操作系统的虚拟机,规划IP、端口、安装目录等。

说明

搭建REALTIME归档模式、事务一致性的数据守护

名称项

初始主库机器dm1

初始备库机器dm2

监视器机器dmmon

外部业务IP

192.168.23.129

192.168.23.130

192.168.23.131

内部心跳IP

192.168.23.129

192.168.23.130

192.168.23.131

实例名

GRP1_DW_01

GRP1_DW_02

-

实例端口PORT_NUM

5237

5237

-

MAL监听端口MAL_PORT

65237

65237

-

守护进程监听端口MAL_DW_PORT

55237

55237

-

实例监听守护进程端口

MAL_INST_DW_PORT

35237

35237

-

OGUID

202507

202507

-

守护组

GRP1

GRP1

-

数据库软件安装目录

/opt/dmdbms

/opt/dmdbms

/opt/dmdbms

数据库实例目录

/data/dmdata/

/data/dmdata/

   -

1.1设置主机名与IP、关闭防火墙等

[root@~]# hostnamectl  set-hostname 名称

[root@~]# hostname 名称

[root@~]# systemctl  status  firewalld

firewall-cmd --list-port

firewall-cmd --permanent --zone=public --add-port=5237/tcp

firewall-cmd --permanent --zone=public --add-port=65237/tcp

firewall-cmd --permanent --zone=public --add-port=55237/tcp

firewall-cmd --permanent --zone=public --add-port=35237/tcp

firewall-cmd --reload

1.2配置时间同步

(1)服务端配置

vi  /etc/chrony.conf

allow 192.168.23.0/24   ##许访问的客户端列表

local stratum 10

重启服务:systemctl restart chronyd

(2)客户端配置

vi  /etc/chrony.conf

server 192.168.23.131 iburst

重启服务:systemctl restart chronyd

客户端同步时间: chronyc sources -v 

1.3其它操作参数优化

  略,这里重点数据守护手工搭建过程。

2各节点安装数据库软件

2.1每个节点创建用户和组

groupadd   dinstall

useradd -g dinstall dmdba

echo "HUN_xx202x" | passwd --stdin dmdba

2.2 每个节点安装达梦数据库软件

以主机dm1示例说明:

[root@dm1 ~]#mkdir /dmsoft  /opt/dmdbms  /data/dmarch

上传安装包到/dmsoft目录

[root@dm1 ~]# chown -R dmdba:dinstall /opt/dmdbms /data/dmarch

[root@dm1 ~]# cd /dmsoft

[root@dm1 dmsoft]# mount -o loop dm8.iso  /mnt

[root@dm1 dmsoft]# su  - dmdba

[dmdba@dm1 ~]$ cd /mnt

[dmdba@dm1 mnt]$ ./DMInstall.bin -i 

过程中选择安装目录:请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdbms

最后执行root执行/opt/dmdbms/script/root/root_installer.sh

3在主机dm1(主库机)操作

3.1初始化数据库实例

[dmdba@]$./dminit path=/data/dmdata  page_size=32 extent_size=32 port_num=5237 charset=1  log_size=1024 SYSDBA_PWD=HUN_admin2025 SYSAUDITOR_PWD=HUN_admin2025

主机dm1上注册数据库服务

[root@dm1 ~]# bash /opt/dmdbms/script/root/dm_service_installer.sh  -t dmserver -dm_ini  /data/dmata/DAMENG/dm.ini  -p DAMENG

[root@dm1 ~]# systemctl enable  DmServiceDAMENG.service

[root@dm1 ~]# systemctl start  DmServiceDAMENG.service

3.2启动数据库,配置归档

[dmdba@dm1 bin]$ disql SYSDBA/自定义的pwd@localhost:5237

SQL> ALTER DATABASE MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST =/data/dmarch, TYPE = local, FILE_SIZE = 1024,SPACE_LIMIT = 4096';

SQL> ALTER DATABASE OPEN;

3.3对主库进行联机备份

SQL> BACKUP DATABASE BACKUPSET 'backup_dbfull_01';

SQL> SELECT BACKUP_NAME,BEGIN_LSN FROM V$backupset;

默认的备份路径操作系统/data/dmdata/DAMENG/bak/。

查看数据库魔数:select db_magic;

查看数据库唯一魔数:select permanent_magic;

3.4拷贝主库备份到备机

[dmdba@dm1 ~]$scp -r /data/dmdata/DAMENG/bak/backup_dbfull_01 192.168.23.130:/data/dmdata/DAMENG/bak/

4在主机dm2(备库机)操作

4.1初始化数据库实例后启动后再关闭

[dmdba@]$./dminit path=/data/dmdata/  page_size=32 extent_size=32 port_num=5237 charset=1  log_size=2048 SYSDBA_PWD=自定义 SYSAUDITOR_PWD=自定义

[dmdba@]$./dmserver  /data/dmdata/DAMENG/dm.ini

4.2 dmrman还原恢复

[dmdba@dm2 ~]$ll /data/dmdata/DAMENG/bak/

[dmdba@dm2 bin]$ ./dmrman

RMAN> RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' REUSE DMINI  FROM BACKUPSET '/data/dmdata/DAMENG/bak/backup_dbfull_01';

RMAN> RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/data/dmdata/DAMENG/bak/backup_dbfull_01';

RMAN> RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC ;

5在主机dm1(主库机)操作

5.1配置dm.ini

SP_SET_PARA_VALUE (2,'PORT_NUM',5237);

SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);

SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);

SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);

SP_SET_PARA_VALUE (2,'MAL_INI',1);

SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

或者修改dm.in文件

##实例名,使用“组名_守护环境_序号”命名方式,总长度不能超过16

INSTANCE_NAME = GRP1_DW_01

PORT_NUM = 5237           ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0     ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2     ##不允许备库OFFLINE表空间

MAL_INI = 1               ##打开MAL系统

ARCH_INI = 1              ##打开归档配置

RLOG_SEND_APPLY_MON = 64  ##统计最近64次的日志发送信息

然后关闭数据库实例

SQL> shutdown immediate;

或者

[root@dm1 ~]# systemctl stop  DmServiceDAMENG.service

5.2配置dmmal.ini

配置MAL系统,各主备库的dmmal.ini配置必须完全一致

MAL_CHECK_INTERVAL = 10     ##MAL链路检测时间间隔,单位秒(s)

MAL_CONN_FAIL_INTERVAL = 10    ##判定实例之间 MAL链路断开的时间

MAL_TEMP_PATH = /data/dmdata/DAMENG

MAL_BUF_SIZE= 512

MAL_SYS_BUF_SIZE= 2048

MAL_COMPRESS_LEVEL= 0

[MAL_INST1]

 MAL_INST_NAME = GRP1_DW_01   ##实例名,和dm.ini中的INSTANCE_NAME一致

 MAL_HOST = 192.168.23.129  ##MAL系统监听TCP连接的IP地址

 MAL_PORT = 65237           ## MAL监听端口,用于创建MAL链路

 MAL_INST_HOST = 192.168.23.129  ##数据库实例的对外服务IP地址

   MAL_INST_PORT = 5237   ##数据库实例对外服务端口,和dm.ini中PORT_NUM一致

 MAL_DW_PORT = 55237   ##守护进程监听端口

 MAL_INST_DW_PORT = 35237  ##实例监听守护进程的端口

[MAL_INST2]

 MAL_INST_NAME = GRP1_DW_02

 MAL_HOST = 192.168.23.130

 MAL_PORT = 65237

 MAL_INST_HOST = 192.168.23.130

 MAL_INST_PORT = 5237

 MAL_DW_PORT = 55237

 MAL_INST_DW_PORT = 35237

5.3配置dmarch.ini

ARCH_WAIT_APPLY = 1

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL      ##本地归档类型

ARCH_DEST = /data/dmarch         ##本地归档文件存放路径

ARCH_FILE_SIZE = 1024     ##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT =4096    ##单位Mb,0表示无限制,范围1024~2147483647M

[ARCHIVE_REALTIME1]

WAIT_APPLY=1

ARCH_TYPE = REALTIME                ##实时归档类型

ARCH_DEST = GRP1_DW_02              ##实时归档目标实例名

5.4配置 dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL      ##全局守护类型

DW_MODE = AUTO       ##自动切换模式

DW_ERROR_TIME = 60      ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60     ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 60     ##本地实例故障认定时间

INST_OGUID = 20250507    ##守护系统唯一OGUID值

INST_INI =/data/dmdata/DAMENG/dm.ini  ##dm.ini配置文件路径

INST_AUTO_RESTART = 1     ##打开实例的自动启动功能

INST_STARTUP_CMD =/opt/dmdbms/bin/DmServiceDAMENG start ##命令行方式启动

RLOG_SEND_THRESHOLD = 0    ##指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0    ##指定备库重演日志的时间阈值,默认关闭

5.5修改OGUIDPrimary模式

##以Mount方式启动主库

[dmdba@dm1 bin]$dmserver /data/dmdata/DAMENG/dm.ini mount

##启动命令行工具disql登录主库设置OGUID值、修改数据库为Primary模式

[dmdba@dm1 bin]$ ./disql  sysdba/HUN_admin2025@localhost:5237

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20250507);

ALTER DATABASE PRIMARY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

6在主机dm2(备库机)操作

6.1配置dm.ini

##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16

INSTANCE_NAME = GRP1_DW_02 

PORT_NUM = 5237           ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0     ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2     ##不允许备库OFFLINE表空间

MAL_INI = 1               ##打开MAL系统

ARCH_INI = 1              ##打开归档配置

RLOG_SEND_APPLY_MON = 64  ##统计最近64次的日志发送信息

6.2配置dmmal.ini

各主备库的dmmal.ini配置必须完全一致。

MAL_CHECK_INTERVAL = 10     ##MAL链路检测时间间隔,单位秒(s)

MAL_CONN_FAIL_INTERVAL = 10    ##判定实例之间 MAL链路断开的时间

MAL_TEMP_PATH = /data/dmdata/DAMENG

MAL_BUF_SIZE= 512

MAL_SYS_BUF_SIZE= 2048

MAL_COMPRESS_LEVEL= 0

[MAL_INST1]

 MAL_INST_NAME = GRP1_DW_01   ##实例名,和dm.ini中的INSTANCE_NAME一致

 MAL_HOST = 192.168.23.129  ##MAL系统监听TCP连接的IP地址

 MAL_PORT = 65237           ## MAL监听端口,用于创建MAL链路

 MAL_INST_HOST = 192.168.23.129  ##数据库实例的对外服务IP地址

   MAL_INST_PORT = 5237   ##数据库实例对外服务端口,和dm.ini中PORT_NUM一致

 MAL_DW_PORT = 55237   ##守护进程监听端口

 MAL_INST_DW_PORT = 35237  ##实例监听守护进程的端口

[MAL_INST2]

 MAL_INST_NAME = GRP1_DW_02

 MAL_HOST = 192.168.23.130

 MAL_PORT = 65237

 MAL_INST_HOST = 192.168.23.130

 MAL_INST_PORT = 5237

 MAL_DW_PORT = 55237

 MAL_INST_DW_PORT = 35237

6.3配置dmarch.ini

ARCH_WAIT_APPLY = 1

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL      ##本地归档类型

ARCH_DEST = /data/dmarch         ##本地归档文件存放路径

ARCH_FILE_SIZE = 1024     ##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT =4096    ##单位Mb,0表示无限制,范围1024~2147483647M

[ARCHIVE_REALTIME1]

WAIT_APPLY=1

ARCH_TYPE = REALTIME                ##实时归档类型

ARCH_DEST = GRP1_DW_01              ##实时归档目标实例名

6.4配置dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL      ##全局守护类型

DW_MODE = AUTO       ##自动切换模式

DW_ERROR_TIME = 60      ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60     ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 60     ##本地实例故障认定时间

INST_OGUID = 20250507    ##守护系统唯一OGUID值

INST_INI =/data/dmdata/DAMENG/dm.ini  ##dm.ini配置文件路径

INST_AUTO_RESTART = 1     ##打开实例的自动启动功能

INST_STARTUP_CMD =/opt/dmdbms/bin/DmServiceDAMENG start ##命令行方式启动

RLOG_SEND_THRESHOLD = 0    ##指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0    ##指定备库重演日志的时间阈值,默认关闭

6.5修改OGUIDstandby模式

以mount方式启动备库

[dmdba@dm2 bin]$dmserver /data/dmdata/DAMENG/dm.ini mount

备库修改oguid和数据库模式

[dmdba@dm2 bin]$ ./disql  sysdba/HUN_admin2025@localhost:5237

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20250507);

alter database standby;  

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

7在主机mon配置监视器

vi /opt/dmdbms/dmmonitorGRP1.ini

MON_DW_CONFIRM = 1         ##确认模式

MON_LOG_PATH =/opt/dmdbms/log    ##监视器日志文件存放路径

MON_LOG_INTERVAL = 60        ##每隔60s定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32        ##每个日志文件最大32M

MON_LOG_SPACE_LIMIT = 0       ##不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 20250507         ##组GRP1的唯一OGUID值

MON_DW_IP = 192.168.23.129:55237  ##IP和PORT信息和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项一致

MON_DW_IP = 192.168.23.130:55237  

8主机dm1和主机dm2上注册守护进程并启动

(1)dm1主库上注册守护进程服务并启动

[root@dm1 ~]# bash /opt/dmdbms/script/root/dm_service_installer.sh  -t dmwatcher -watcher_ini  /data/dmdata/DAMENG/dmwatcher.ini  -p GRP1

--如果需要卸载服务

bash /opt/dmdbms/script/root/dm_service_uninstaller.sh  -n DmWatcherServiceGRP1

[root@dm1 ~]# systemctl enable  DmWatcherServiceGRP1

[root@dm1 ~]# systemctl start  DmWatcherServiceGRP1

(2)dm2备库上注册数据库服务

[root@dm2 ~]# bash /opt/dmdbms/script/root/dm_service_installer.sh  -t dmserver -dm_ini  /data/dmdata/DAMENG/dm.ini  -p DAMENG

[root@dm2 ~]# systemctl enable  DmServiceDAMENG.service

(3)dm2备库上注册守护进程服务并启动

[root@dm2 bin]# bash /opt/dmdbms/script/root/dm_service_installer.sh  -t dmwatcher -watcher_ini  /data/dmdata/DAMENG/dm.ini  -p GRP1

[root@dm2 ~]# systemctl enable  DmWatcherServiceGRP1

[root@dm2 ~]# systemctl start   DmWatcherServiceGRP1

--如果需要调试时手动启动方式

./dmwatcher   /opt/dmdbms/data/DAMENG/dmwatcher.ini

9监视机上注册监视器服务并启动

[root@mon ~]# bash /opt/dmdbms/script/root/dm_service_installer.sh  -t dmmonitor -monitor_ini  /opt/dmdbms/dmmonitorGRP1.ini  -p GRP1

[root@mon ~]# systemctl enable  DmMonitorServiceGRP1

调试时手动启动

./dmmonitor  /opt/dmdbms/dmmonitorGRP1.ini

监视机上先非确认监视器命令查看

[dmdba@mon ~]#cp /opt/dmdbms/dmmonitor.ini /opt/dmdbms/dmmonitorGRP1s.ini

[dmdba@mon ~]#vi /opt/dmdbms/dmmonitors.ini

MON_DW_CONFIRM = 0

[dmdba@mon bin]$dmmonitor  /opt/dmdbms/dmmonitorGRP1s.ini

确认状态无误后,启动确认监视器

[root@mon ~]# systemctl start   DmMonitorServiceGRP1


网站公告

今日签到

点亮在社区的每一天
去签到