達夢資料庫單例項轉實時同步叢集

Curry_0316發表於2022-05-06

環境說明:

主庫地址:192.168.0.224 資料庫名DAMENG,資料庫服務名DM1 服務埠=5236

備庫地址:192.168.0.226 資料庫名DAMENG,資料庫服務名DM2 服務埠=5236


主庫已使用,目前是normal狀態



1、初始化備庫

# 安裝軟體步驟省略

cd $DM_HOME/bin

./dminit path=/dm8/data DB_NAME=DAMENG INSTANCE_NAME=DM2


# 初始化完的資料庫例項需要進行一次正常的啟動後才算真正的完成初始化,否則無法直接進入mount模式,exit退出關閉資料庫

./dmserver /dm8/data/DAMENG/dm.ini



2、配置主備庫檔案,配置檔案路徑都在/dm8/data/DAMENG/下

2.1、配置主備庫 dm.ini

cd /dm8/data/DAMENG

vi dm.ini

# 修改下面引數


ALTER_MODE_STATUS = 0             #不允許手工方式修改例項模式/狀態/OGUID,預設為1

ENABLE_OFFLINE_TS = 2             #不允許備庫 OFFLINE 表空間,預設為1

MAL_INI = 1                       #開啟 MAL 系統,預設為0

ARCH_INI = 1                      #開啟歸檔配置



2.2、配置 dmmal.ini(主備一致)

# 配置 MAL 系統,各主備庫的 dmmal.ini 配置必須完全一致,MAL_HOST 使用內部網路 IP,MAL_PORT 與 dm.ini 中 PORT_NUM 使用不同的埠值,MAL_DW_PORT 是各例項對應的守護程式之間,以及守護程式和監視器之間的通訊埠,配置如下:


cd /dm8/data/DAMENG

cat << EOF >> /dm8/data/DAMENG/dmmal.ini

MAL_CHECK_INTERVAL = 5                  #MAL 鏈路檢測時間間隔

MAL_CONN_FAIL_INTERVAL = 5              #判定 MAL 鏈路斷開的時間


[MAL_INST1]

 MAL_INST_NAME = DM1                    #例項名,和 dm.ini 中的 INSTANCE_NAME 一致

 MAL_HOST = 192.168.0.224               #MAL 系統監聽 TCP 連線的 IP 地址

 MAL_PORT = 61141                       #MAL 系統監聽 TCP 連線的埠

MAL_INST_HOST = 192.168.0.224           #例項的對外服務 IP 地址

 MAL_INST_PORT = 5236                   #例項的對外服務埠,和 dm.ini 中的 PORT_NUM 一致

 MAL_DW_PORT = 52141                    #例項本地的守護程式監聽 TCP 連線的埠

MAL_INST_DW_PORT = 33141                #例項監聽守護程式 TCP 連線的埠


[MAL_INST2]

 MAL_INST_NAME = DM2

MAL_HOST = 172.20.90.236

 MAL_PORT = 61142

 MAL_INST_HOST = 172.20.90.236

 MAL_INST_PORT = 5236

 MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

EOF


cat dmmal.ini



2.3、配置 dmarch.ini

# 修改 dmarch.ini,配置本地歸檔和實時歸檔。

# 除了本地歸檔外,其他歸檔配置項中的 ARCH_DEST 表示例項是 Primary 模式時,需要同步歸檔資料的目標例項名。


2.3.1 主庫

cat << EOF >> /dm8/data/DAMENG/dmarch.ini

[ARCHIVE_REALTIME] 

ARCH_TYPE = REALTIME                      #實時歸檔型別

ARCH_DEST = DM2                           #實時歸檔目標例項名


[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                         #本地歸檔型別

ARCH_DEST = /dm8/arch                     #本地歸檔檔案存放路徑

ARCH_FILE_SIZE = 1024                     #單位 Mb,本地單個歸檔檔案最大值

ARCH_SPACE_LIMIT = 0                      #單位 Mb,0 表示無限制,範圍 1024~2147483647M

EOF


cat dmarch.ini


2.3.2 備庫

cat << EOF >> /dm8/data/DAMENG/dmarch.ini

[ARCHIVE_REALTIME] 

ARCH_TYPE = REALTIME                      #實時歸檔型別

ARCH_DEST = DM1                           #實時歸檔目標例項名


[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                         #本地歸檔型別

ARCH_DEST = /dm8/arch                     #本地歸檔檔案存放路徑

ARCH_FILE_SIZE = 1024                     #單位 Mb,本地單個歸檔檔案最大值

ARCH_SPACE_LIMIT = 0                      #單位 Mb,0 表示無限制,範圍 1024~2147483647M

EOF


cat dmarch.ini



2.4、配置 dmwatcher.ini(主備一致)

# 修改 dmwatcher.ini 配置守護程式,配置為全域性守護型別,使用自動切換模式。

cat << EOF >> /dm8/data/DAMENG/dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL                               #全域性守護型別

DW_MODE = AUTO                                 #自動切換模式

DW_ERROR_TIME = 10                             #遠端守護程式故障認定時間

INST_RECOVER_TIME = 60                         #主庫守護程式啟動恢復的間隔時間

INST_ERROR_TIME = 10                           #本地例項故障認定時間

INST_OGUID = 20220421                          #守護系統唯一 OGUID 值

INST_INI = /dm8/data/DAMENG/dm.ini             #dm.ini 配置檔案路徑

INST_AUTO_RESTART = 1                          #開啟例項的自動啟動功能

INST_STARTUP_CMD = /dm8/bin/dmserver           #命令列方式啟動

RLOG_SEND_THRESHOLD = 0                        #指定主庫傳送日誌到備庫的時間閾值,預設關閉

RLOG_APPLY_THRESHOLD = 0                       #指定備庫重演日誌的時間閾值,預設關閉

EOF


cat dmwatcher.ini



3、啟動主備庫,設定引數

5.1 主庫

5.1.1 啟動主庫到mount模式

cd $DM_HOME/bin

./DmServiceDM1 stop

./dmserver /dm8/data/DAMENG/dm.ini

./dmserver /dm8/data/DAMENG/dm.ini mount


5.1.2 設定主庫OGUID及修改資料庫模式

-- 另外開啟視窗,啟動命令列工具 DIsql,登入主庫設定 OGUID 值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20220421);

--OGUID 的查詢方式:

SELECT OGUID FROM V$INSTANCE;

ALTER DATABASE PRIMARY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


5.1.3 在5.1.1的介面關閉主備資料庫



4、主庫進行離線備份(之前的備份沒有用,需要修改為primary狀態後的備份)

#mkdir -p /dm8/arch

mkdir -p /dm8/dm_bak


cd $DM_HOME/bin

./dmrman

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/dm_bak';



5、登入備庫,拷貝備份檔案

mkdir -p /dm8/arch

mkdir -p /dm8/dm_bak

scp -r 192.168.0.224:/dm8/dm_bak/* /dm8/dm_bak



6、執行離線資料庫還原與恢復

cd $DM_HOME/bin

./dmrman

RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;



7、備庫修改資料庫模式

7.1、啟動主備庫到mount模式

cd $DM_HOME/bin

./dmserver /dm8/data/DAMENG/dm.ini mount


7.2、設定備庫OGUID及修改資料庫模式

-- 另外開啟視窗,啟動命令列工具 DIsql,登入主庫設定 OGUID 值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20220421);

--OGUID 的查詢方式:

SELECT OGUID FROM V$INSTANCE;

ALTER DATABASE STANDBY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


OGUID:資料守護唯一標識碼,配置資料守護時,需要由使用者指定 OGUID 值。其中資料庫的OGUID 在 MOUNT 狀態下由系統函式 SP_SET_OGUID 設定,守護程式和監視器的 OGUID 值在配置檔案中設定。

同一守護程式組中的所有資料庫、守護程式和監視器,都必須配置相同的 OGUID 值,取值範圍為 0~2147483647。



8、配置dmmonitor.ini監視器

# 測試環境在備機上配置監視器 !!!

# MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置項保持一致

cd /dm8/data/DAMENG

cat << EOF >> /dm8/data/DAMENG/dmmonitor.ini

MON_DW_CONFIRM = 1                     #確認監視器模式

MON_LOG_PATH = /dm8/data/dmmonitorlog  #監視器日誌檔案存放路徑

MON_LOG_INTERVAL = 60                  #每隔 60s 定時記錄系統資訊到日誌檔案

MON_LOG_FILE_SIZE = 32                 #每個日誌檔案最大 32M

MON_LOG_SPACE_LIMIT = 0                #不限定日誌檔案總佔用空間

[GRP1]

MON_INST_OGUID = 20220421              #組 GRP1 的唯一 OGUID 值 #以下配置為監視器到組 GRP1 的守護程式的連線資訊,以 "IP:PORT" 的形式配置,IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 192.168.0.224:52141

MON_DW_IP = 172.20.90.236:52142

EOF


cat /dm8/data/DAMENG/dmmonitor.ini



9、啟動主備庫上的守護程式

cd $DM_HOME/bin

./dmwatcher /dm8/data/DAMENG/dmwatcher.ini



10、備機上啟動監視器(注意檢視此時資料庫的狀態是否open)

cd $DM_HOME/bin

./dmmonitor /dm8/data/DAMENG/dmmonitor.ini



11、用root使用者建立服務

# 分別在主備庫上註冊服務

# 主庫

su -

cd /dm8/script/root

# 主庫資料庫服務之前已經存在,忽略

#./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM1

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM1


# 備庫

su -

cd /dm8/script/root

#./dm_service_installer.sh -t dmserver -m mount -dm_ini /dm8/data/DAMENG/dm.ini -p DM2

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM2

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM2


# 備庫註冊監視器服務

./dm_service_installer.sh -t dmmonitor -p DMMONITOR -monitor_ini /dm8/data/DAMENG/dmmonitor.ini



12、註冊服務後各種符合後臺重啟方式

# 主庫資料庫服務

cd $DM_HOME/bin

./DmServiceDM1 start/stop/restart


# 備庫資料庫服務

cd $DM_HOME/bin

./DmServiceDM2 start/stop/restart


# 主庫守護程式

cd $DM_HOME/bin

./DmWatcherServiceDM1 start/stop/restart


# 備庫守護程式

cd $DM_HOME/bin

./DmWatcherServiceDM2 start/stop/restart


# 監視器

cd $DM_HOME/bin

./DmMonitorServiceDMMONITOR start/stop/restart



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29953799/viewspace-2892472/,如需轉載,請註明出處,否則將追究法律責任。

相關文章