一、       達夢數據庫主備簡介... 2

二、       環境準備... 3

三、       主備庫數據同步... 5

四、       主從配置文件參數... 7

4.1      配置dm.ini 7

4.2      配置dmmal.ini 7

4.3      配置本地歸檔和即時歸檔dmarch.ini 8

4.4      配置守護進程dmwatcher.ini 9

五、       修改主備庫OGUID. 11

5.1      修改主庫... 11

5.2      修改備庫... 12

六、       配置監視器(一台即可)... 14

七、       啓動主備庫的實例、守護進程以及監視器... 15

八、       集羣啓動與關閉... 17

8.1      關閉... 17

8.2      啓動... 17

 

一、     達夢數據庫主備簡介

達夢主備集羣顧名思義就是一主一備(也可以一主多備)是一種集成化的高可靠性解決方案,同時滿足用户對數據安全性和高可用性的要求。解決由於硬件故障、自然災害等原因導致的數據庫服務長時間中斷問題,滿足用户不間斷提供數據庫服務的要求,即實現系統的雙機熱備功能。在使用的過程中,如果是實時同步模式的話,主機和備機的數據保持完全一致。主機產生一條新的記錄時,在記錄寫入數據庫文件之前,會把新產生的redo日誌文件發送到備機,由備機重新執行接收到的redo日誌,來保證主備集羣數據的一致性。

 

DM8 主備 docker_數據庫

 

 

 

二、     環境準備

數據庫安裝完成

主機名

端口默認號

節點

數據庫名

實例名

node1

5240

192.168.152.11

MASTER

MASTER

node2

5240

192.168.152.12

SLAVE

SLAVE

 

 

主節點node1:192.168.152.11  

實例名: MASTER  端口默認:5240

數據庫初始化

./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=MASTER INSTANCE_NAME=MASTER PORT_NUM=5240

創建實例

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

 

從節點node1: 192.168.152.11

實例名: SLAVE  端口默認:5240

數據庫初始化

./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=SLAVE INSTANCE_NAME=SLAVE PORT_NUM=5240

創建實例

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

 

 

DM8 主備 docker_IP_02

 

 

都先執行初始化

創建文件夾  mkdir backup

 

DM8 主備 docker_守護進程_03

 

 

然後只啓動主庫,啓動一次之後,然後用disql工具登陸,進行數據庫備份

DM8 主備 docker_數據庫_04

DM8 主備 docker_DM8 主備 docker_05

 

 

 

RMAN> backup database ‘/dm8/data/MASTER/dm.ini’ backupset '/dm8/data/backup';

  

三、     主備庫數據同步

將主庫的備份文件拷貝到備庫同級目錄下面:(可以用scp)

拷貝文件到從節點的back文件夾(可以利用xftp工具,手動拖包到從節點機器)

[dmdba@localhost~]$

scp -r  /dm8/data/backup/back.bak  dmdba@192.168.152.140:/dm8/data/backup

[dmdba@localhost ~]$

 scp  -r  /dm8/data/backup/back.meta  dmdba@192.168.152.140:/dm8/data/backup

DM8 主備 docker_DM8 主備 docker_06

 

 

 

 

然後從庫利用dmrman工具,冷還原剛才主庫所發送過來的備份文件

restore database'/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'

DM8 主備 docker_DM8 主備 docker_07

 

 

 

 

recover database'/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'

 

DM8 主備 docker_數據庫_08

 

 

 

recover database '/dm8/data/SLAVE/dm.ini'update db_magic

 


DM8 主備 docker_守護進程_09

 

 

 

四、     主從配置文件參數

4.1   配置dm.ini 文件在/dm8/data/MASTER下

修改dm.ini文件的4個參數

 

ALTER_MODE_STATUS = 0 #不允許手工方式修改實例模式/狀態/OGUID

ENABLE_OFFLINE_TS = 2 #不允許備庫 OFFLINE 表空間

MAL_INI = 1 #打開 MAL系統

ARCH_INI = 1 #打開歸檔配置

4.2   配置dmmal.ini

主備庫的配置必須完全一致(可以使用scp方式傳輸)

 

DM8 主備 docker_數據庫_10

 

 

 

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

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

[MAL_INST1]

  MAL_INST_NAME          = MASTER          #實例名,和 dm.ini 中的 INSTANCE_NAME 一致

  MAL_HOST               = 192.168.152.11 #MAL 系統監聽 TCP 連接的 IP 地址

  MAL_PORT               = 61141           #MAL 系統監聽 TCP 連接的端口

  MAL_INST_HOST          = 192.168.152.11 #實例的對外服務 IP 地址

  MAL_INST_PORT          = 5240            #實例的對外服務端口,和dm.ini 中的 PORT_NUM 一致

  MAL_DW_PORT            = 52141           #實例對應的守護進程監聽 TCP 連接的端口

  MAL_INST_DW_PORT       = 33141           #實例監聽守護進程 TCP 連接的端口

[MAL_INST2]

  MAL_INST_NAME          = SLAVE

  MAL_HOST               = 192.168.152.12

  MAL_PORT               = 61142

  MAL_INST_HOST          = 192.168.152.12

  MAL_INST_PORT          = 5240

  MAL_DW_PORT            = 52142

  MAL_INST_DW_PORT       = 33142

 

4.3   配置本地歸檔和即時歸檔dmarch.ini

 

DM8 主備 docker_守護進程_11

 

 

先配置主節點master

 

DM8 主備 docker_IP_12

 

 

[ARCHIVE_TIMELY1]
ARCH_TYPE        =  TIMELY #即時歸檔類型
ARCH_DEST        = SLAVE  #即時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL #本地歸檔類型
ARCH_DEST        = /dm8/data/MASTER/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE   = 128 #單位 Mb,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb,0 表示無限制,範圍 1024~4294967294M

 

 

再配置從節點slave

[ARCHIVE_TIMELY1]
ARCH_TYPE        =  TIMELY #即時歸檔類型
ARCH_DEST        = MASTER  #即時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL #本地歸檔類型
ARCH_DEST        = /dm8/data/SLAVE/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE   = 128 #單位 Mb,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb,0 表示無限制,範圍 1024~4294967294M

 

4.4  配置守護進程dmwatcher.ini

故障自動切換模式下,可以實時處理故障,但對網絡穩定性要求更高,需要確保主備庫之間,主備庫與守護進程、確認監視器之間的網絡穩定可靠,否則可能會誤判主庫故障,備庫自動接管後,出現多個 Open 狀態的主庫,引發腦裂。故障手動切換模式下,備庫不會自動接管,出現節點故障或者網絡故障時,由用户根據各種故障情況,進行人工干預。生產中推薦MANUAL

[dmdba@node1MASTER]$ pwd

/dm8/data/MASTER

[dmdba@node1MASTER]$ vim dmwatcher.ini

DM8 主備 docker_DM8 主備 docker_13

 

 

 

主庫配置文件

[GRP1]
DW_TYPE                =  GLOBAL #全局守護類型
DW_MODE                =  AUTO  #自動切換模式
DW_ERROR_TIME          =  10     #遠程守護進程故障認定時間
INST_RECOVER_TIME      =  60 #主庫守護進程啓動恢復的間隔時間
INST_ERROR_TIME        =  10 #本地實例故障認定時間
INST_OGUID             =  453332 #守護系統唯一 OGUID 值
INST_INI               =  /dm8/data/MASTER/dm.ini #dm.ini配置文件路徑
INST_AUTO_RESTART      =  1 #打開實例的自動啓動功能
INST_STARTUP_CMD       =  /dm8/bin/dmserver #命令行方式啓動
RLOG_SEND_THRESHOLD    =  0 #指定主庫發送日誌到備庫的時間閥值,默認關閉
RLOG_APPLY_THRESHOLD   =  0 #指定備庫重演日誌的時間閥值,默認關閉

 

從庫配置文件

[GRP1]
DW_TYPE                =  GLOBAL #全局守護類型
DW_MODE                =  AUTO  #自動切換模式
DW_ERROR_TIME          =  10     #遠程守護進程故障認定時間
INST_RECOVER_TIME      =  60 #主庫守護進程啓動恢復的間隔時間
INST_ERROR_TIME        =  10 #本地實例故障認定時間
INST_OGUID             =  453332 #守護系統唯一 OGUID 值
INST_INI               =  /dm8/data/SLAVE/dm.ini #dm.ini配置文件路徑
INST_AUTO_RESTART      =  1 #打開實例的自動啓動功能
INST_STARTUP_CMD       =  /dm8/bin/dmserver #命令行方式啓動
RLOG_SEND_THRESHOLD    =  0 #指定主庫發送日誌到備庫的時間閥值,默認關閉
RLOG_APPLY_THRESHOLD   =  0 #指定備庫重演日誌的時間閥值,默認關閉

 


五、    修改主備庫OGUID

5.1   修改主庫

以mount 方式啓動主庫

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

DM8 主備 docker_守護進程_14

 

 

 

以disql工具登陸,修改oguid值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

 

DM8 主備 docker_IP_15

 

 

5.2   修改備庫

以mount方式登陸備庫

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

 

DM8 主備 docker_守護進程_16

 

 

 

 

 

以disql工具登陸備庫修改oguid值

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS', 1);

sp_set_oguid(453332);

alter databasestandby;

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS', 0);

 

 

 

六、     配置監視器(一台即可)

故障自動切換模式的數據守護系統,必須部署一個確認監視器,否則在出現數據庫故障時,會導致數據庫服務中斷,在主備機器或者同網段第三台新機器上部署即可。

配置監視器,在哪台機器配置都可以,不做限制

[dmdba@node3 MASTER]$ pwd

/dm8/data/MASTER

[dmdba@node3 MASTER]$ vim dmmonitor.ini

 

DM8 主備 docker_守護進程_17

 

 

MON_DW_Confirm    = 1  #確認監視器模式

MON_LOG_PATH    = /dm8/data/log #監視器日誌文件存放路徑

MON_LOG_INTERVAL  = 60 #每隔 60s 定時記錄系統信息到日誌文件

MON_LOG_FILE_SIZE   = 32 #每個日誌文件最大 32M

MON_LOG_SPACE_LIMIT  = 0  #不限定日誌文件總佔用空間

[GRP1]

MON_INST_OGUID    = 453332 #組 GRP1 的唯一 OGUID 值

#以下配置為監視器到組 GRP1 的守護進程的連接信息,以—IP:PORT?的形式配置

#IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP     = 192.168.152.11:52141

MON_DW_IP     = 192.168.152.12:52142

 

 

七、     啓動主備庫的實例、守護進程以及監視器

啓動順序 :啓動主備庫的實例、守護進程

啓動備庫的實例、守護進程

最後啓動監視器

 

mount 方式啓動主備庫實例:

./dmserver /dm8/data/MASTER/dm.inimount

DM8 主備 docker_守護進程_18

 

 

./dmserver /dm8/data/SLAVE/dm.inimount

 

DM8 主備 docker_數據庫_19

 

 

 

 

在bin目錄下啓動主庫的守護進程

./dmwatcher /dm8/data/MASTER/dmwatcher.ini

 

DM8 主備 docker_DM8 主備 docker_20

 

 

 

然後再啓動備庫的守護進程

./dmwatcher /dm8/data/SLAVE/dmwatcher.ini

 

DM8 主備 docker_DM8 主備 docker_21

 

 

 

現在關閉node1和node2的防火牆,開啓node3上面的監視器,可輸入show命令查看狀態

./dmmonitor /dm8/data/MASTER/dmmonitor.ini

 

DM8 主備 docker_數據庫_22

 

 

 

DM8 主備 docker_DM8 主備 docker_23

 

 

到了這一步之後,便可以開始建表測試了

主庫進入/dm8/bin

./disql SYSDBA/SYSDBA@localhost:5240

SQL>create table test (id int);

 

SQL>insert into values (999999);

備庫查找

進入/dm8/bin

./disql SYSDBA/SYSDBA@localhost:5240

 

SQL>select * from test;

 

DM8 主備 docker_DM8 主備 docker_24

 

 

 

 

 

切換主備測試

在守護進程操作

Login

輸入用户名  密碼

如果需要把備庫切換為主庫   switchover GRP1.SLAVE

把主庫切換為備庫   switchover GRP1.MASTER

 

DM8 主備 docker_守護進程_25

 

 

在主庫正常的情況下,備庫無法操作數據,只能更新來自主庫的數據


八、        集羣啓動與關閉


8.1   關閉

如果啓動了確認監視器,先關閉確認監視器(防止自動接管),關閉備庫守護進程(防止重啓實例),關閉主庫守護進程(防止重啓實例),Shutdown 主庫,Shutdown 備庫。再關閉實例。

8.2   啓動

先啓動主庫實例,在啓動主庫守護進程、然後備庫也一樣,先實例再進程,最後啓動監視器。