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