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修改**** ****OGUI**** ****D**** ****和**** ****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