一纠脾、主備介紹
在搭建實時主備系統(tǒng)前玛瘸,應(yīng)注意實時主備系統(tǒng)中各實例使用的DM服務(wù)器版本應(yīng)一致,同時還應(yīng)注意各實例所在主機的操作系統(tǒng)位數(shù)苟蹈、大小端模式糊渊、時區(qū)及時間設(shè)置都應(yīng)一致,以及使用同一個用戶啟動DM服務(wù)器和守護進程dmwatcher慧脱,以免系統(tǒng)在運行時出現(xiàn)意想不到的錯誤渺绒。
二、數(shù)據(jù)準備
配置實時主備之前菱鸥,必須先同步實例數(shù)據(jù)宗兼,確保兩者保持完全一致;主庫可以是新初始化的數(shù)據(jù)氮采,也可以是正在生產(chǎn)殷绍、使用中的數(shù)據(jù)。DM提供了兩種方式初始化同步實例數(shù)據(jù)鹊漠,數(shù)據(jù)文件拷貝以及備份還原方式主到。
不能使用分別初始化庫的方法,原因如下:
1.每個庫都有一個永久魔數(shù)(permenant_magic)躯概,主庫傳送日志時會判斷這個值是否一樣登钥,確保來自同一個庫,不同的庫傳送不了日志娶靡。
2.由于dminit初始化數(shù)據(jù)庫時怔鳖,會生成隨機密鑰用于加密,每次生成的密鑰都不相同固蛾,備庫無法解析采用主庫密鑰加密的數(shù)據(jù)。
三度陆、實時主備搭建
主庫搭建步驟
1.單機數(shù)據(jù)庫的搭建這里不做介紹艾凯,喜歡的胖友可以搜索一些文檔
2.關(guān)閉兩端防火墻禁止開機自啟
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
3.主庫初始化實例
4.配置相關(guān)的配置文件
配置dm.ini
#實例名,建議使用“組名_守護環(huán)境_序號”的命名方式懂傀,總長度不能超過 16
INSTANCE_NAME = GRP1_DM1
PORT_NUM = 5236 #數(shù)據(jù)庫實例監(jiān)聽端口
DW_PORT = 5336 #守護環(huán)境下趾诗,監(jiān)聽守護進程連接端口
DW_ERROR_TIME = 60 #接收守護進程消息超時時間
ALTER_MODE_STATUS = 0 #不允許手工方式修改實例模式/狀態(tài)
ENABLE_OFFLINE_TS = 2 #不允許備庫 OFFLINE 表空間
MAL_INI = 1 #打開 MAL 系統(tǒng)
ARCH_INI = 1 #打開歸檔配置
HA_INST_CHECK_FLAG = 1 #檢測是否多個實例進程同時啟動
RLOG_SEND_APPLY_MON = 64 #統(tǒng)計最近 64 次的日志發(fā)送信息
配置 dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 鏈路斷開的時間
[MAL_INST1]
MAL_INST_NAME = GRP1_DM1 #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.13.142 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的 IP 地址
MAL_PORT = 5237 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的端口
MAL_INST_HOST = 192.168.13.142 #實例的對外服務(wù) IP 地址
MAL_INST_PORT = 5236 #實例的對外服務(wù)端口蹬蚁,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5239 #實例對應(yīng)的守護進程監(jiān)聽 TCP 連接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_DM2
MAL_HOST = 192.168.13.155
MAL_PORT = 5237
MAL_INST_HOST = 192.168.13.155
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
配置 dmarch.ini
當前實例 GRP1_DM1 是主庫恃泪,需要向 GRP1_DM2(實時備庫)同步數(shù)據(jù),因此實時歸檔的 ARCH_DEST 配置為 GRP1_DM2犀斋。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #實時歸檔類型
ARCH_DEST = GRP1_DM2 #實時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地歸檔類型
ARCH_DEST = /dm7/data/DAMENG/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE = 128 #單位 Mb贝乎,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb,0 表示無限制叽粹,范圍 1024~4294967294M
配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守護類型
DW_MODE = AUTO #自動切換模式
DW_ERROR_TIME = 10 #遠程守護進程故障認定時間
INST_RECOVER_TIME = 60 #主庫守護進程啟動恢復(fù)的間隔時間
INST_ERROR_TIME = 10 #本地實例故障認定時間
INST_OGUID = 453331 #守護系統(tǒng)唯一 OGUID 值
INST_INI = /dm7/data/DAMENG/dm.ini #dm.ini 配置文件路徑
INST_AUTO_RESTART = 1 #打開實例的自動啟動功能
INST_STARTUP_CMD = /dm7/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD = 0 #指定主庫發(fā)送日志到備庫的時間閥值览效,默認關(guān)閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時間閥值却舀,默認關(guān)閉
5.啟動數(shù)據(jù)庫確認單實例配置是否成功
./dmserverd start ,查看日志是否有SYSTEM IS READY 锤灿,有打印改信息證明數(shù)據(jù)庫配置成功挽拔,正常停止單實例 ./dmserverd stop
6.配置 dmwatcher.ctl
在配置完成 dmwatcher.ini 后,使用 dmctlcvt 工具生成 dmwatcher.ctl:./dmctlcvt TYPE=3 SRC=/dm7/data/DAMENG/dmwatcher.ini DEST=/dm7/data拷貝生成的 dmwatcher.ctl(生成的是一個目錄但校,文件在目錄里面/dm7/data/GRP1/dmwatcher.ctl)文件到數(shù)據(jù)文件目錄/dm7/data/DAMENG螃诅。
./dmctlcvt TYPE=3 SRC=/dm7/data/DAMENG/dmwatcher.ini DEST=/dm7/data
7.拷貝數(shù)據(jù)文件文件夾至備機相同路徑下
8.Mount啟動數(shù)據(jù)庫,配置主庫狀態(tài)
./dmserver /dbdata/dm7/DAMENG/dm.ini mount
./disql sysdba/SYSDBA
SQL> sp_set_oguid(453331);
DMSQL 過程已成功完成
已用時間: 3.152(毫秒). 執(zhí)行號:5.
SQL> alter database primary;
操作已執(zhí)行
已用時間: 3.624(毫秒). 執(zhí)行號:0
備庫搭建步驟
1.解壓主庫拷貝過來的數(shù)據(jù)文件至相同路徑下状囱,并修改相關(guān)配置文件
2.修改配置文件术裸,只需修改dm.ini中的INSTANCE_NAME與dmarch.ini中的ARCH_DEST即可,修改處已標"!!!"浪箭。
配置dm.ini
#實例名穗椅,建議使用“組名_守護環(huán)境_序號”的命名方式,總長度不能超過 16
D唐堋Fケ怼!INSTANCE_NAME = GRP1_DM2P伞E鄱啤!
PORT_NUM = 5236 #數(shù)據(jù)庫實例監(jiān)聽端口
DW_PORT = 5336 #守護環(huán)境下冻晤,監(jiān)聽守護進程連接端口
DW_ERROR_TIME = 60 #接收守護進程消息超時時間
ALTER_MODE_STATUS = 0 #不允許手工方式修改實例模式/狀態(tài)
ENABLE_OFFLINE_TS = 2 #不允許備庫 OFFLINE 表空間
MAL_INI = 1 #打開 MAL 系統(tǒng)
ARCH_INI = 1 #打開歸檔配置
HA_INST_CHECK_FLAG = 1 #檢測是否多個實例進程同時啟動
RLOG_SEND_APPLY_MON = 64 #統(tǒng)計最近 64 次的日志發(fā)送信息
Dmmal.ini 配置文件為全局唯一苇羡,兩個節(jié)點用同一個文件,無需修改
配置 dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 鏈路斷開的時間
[MAL_INST1]
MAL_INST_NAME = GRP1_DM1 #實例名鼻弧,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.13.142 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的 IP 地址
MAL_PORT = 5237 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的端口
MAL_INST_HOST = 192.168.13.142 #實例的對外服務(wù) IP 地址
MAL_INST_PORT = 5236 #實例的對外服務(wù)端口设江,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5239 #實例對應(yīng)的守護進程監(jiān)聽 TCP 連接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_DM2
MAL_HOST = 192.168.13.155
MAL_PORT = 5237
MAL_INST_HOST = 192.168.13.155
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
配置 dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #實時歸檔類型
!!!ARCH_DEST = GRP1_DM1!!! #實時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地歸檔類型
ARCH_DEST = /dm7/data/DAMENG/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE = 128 #單位 Mb,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb攘轩,0 表示無限制叉存,范圍 1024~4294967294M
Dmwatcher.ini 配置文件為全局唯一,兩個節(jié)點用同一個文件度帮,無需修改
配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守護類型
DW_MODE = AUTO #自動切換模式
DW_ERROR_TIME = 10 #遠程守護進程故障認定時間
INST_RECOVER_TIME = 60 #主庫守護進程啟動恢復(fù)的間隔時間
INST_ERROR_TIME = 10 #本地實例故障認定時間
INST_OGUID = 453331 #守護系統(tǒng)唯一 OGUID 值
INST_INI = /dm7/data/DAMENG/dm.ini #dm.ini 配置文件路徑
INST_AUTO_RESTART = 1 #打開實例的自動啟動功能
INST_STARTUP_CMD = /dm7/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD = 0 #指定主庫發(fā)送日志到備庫的時間閥值歼捏,默認關(guān)閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時間閥值,默認關(guān)閉
3.Mount 啟動數(shù)據(jù)庫笨篷,配置備庫狀態(tài)
./dmserver /dbdata/dm7/DAMENG/dm.ini mount
./disql sysdba/SYSDBA
SQL> sp_set_oguid(453331);
DMSQL 過程已成功完成
已用時間: 7.799(毫秒). 執(zhí)行號:1.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 過程已成功完成
已用時間: 6.622(毫秒). 執(zhí)行號:2.
SQL> alter database standby;
操作已執(zhí)行
已用時間: 3.450(毫秒). 執(zhí)行號:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 過程已成功完成
已用時間: 6.664(毫秒). 執(zhí)行號:3.
4.監(jiān)視器配置文件
修改 dmmonitor.ini 配置確認監(jiān)視器瞳秽,其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置項保持一致。
MON_DW_CONFIRM = 1 #確認監(jiān)視器模式
MON_LOG_PATH = /dmarch/log #監(jiān)視器日志文件存放路徑
MON_LOG_INTERVAL = 60 #每隔 60s 定時記錄系統(tǒng)信息到日志文件
MON_LOG_FILE_SIZE = 32 #每個日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件總占用空間
[GRP1]
MON_INST_OGUID = 453331 #組 GRP1 的唯一 OGUID 值
#以下配置為監(jiān)視器到組 GRP1 的守護進程的連接信息率翅,以“IP:PORT”的形式配置
#IP 對應(yīng) dmmal.ini 中的 MAL_HOST练俐,PORT 對應(yīng) dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.0.141:5239
MON_DW_IP = 192.168.0.142:5239
5.兩節(jié)點啟動dmwatcher
./dmwatcherd start
6.啟動監(jiān)視器進程(該進程只起觀察作用,對主備運行無影響)
./dmmonitor /dbdata/dmdata/DAMENG/dmmonitor.ini
敲入show并回車冕臭,查看集群狀態(tài)
WSTATUS->OPEN INST_OK->OK INSTATUS->OPEN 兩節(jié)點LSN號(FLSN痰洒、CLSN瓢棒、SSLSN、SLSN)在同一數(shù)據(jù)級 即為正常狀態(tài)
四丘喻、驗證
1.主庫創(chuàng)建表并插入數(shù)據(jù)脯宿,查看備庫是否可以接收到
主庫創(chuàng)建表
插入數(shù)據(jù),并提交
查看備機是否有此表存在
以上為搭建兩節(jié)點實時主備的全部操作步驟,請享用O_O