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修改OGUID和Primary模式
##以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修改OGUID和standby模式
以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