達夢7讀寫分離搭建過程詳解

一、主備介紹

讀寫分離集群是基于即時歸檔實現(xiàn)的高性能數(shù)據(jù)庫集群累铅,不但提供數(shù)據(jù)保護、容災等數(shù)據(jù)守護基本功能站叼,還具有讀寫操作自動分離娃兽、負載均衡等特性。讀寫分離集群最多可以配置8個即時備庫尽楔,提供數(shù)據(jù)同步投储、備庫故障自動處理、故障恢復自動數(shù)據(jù)同步等功能阔馋,也支持自動故障切換和手動故障切換兩種守護模式玛荞。
一般情況下,應用系統(tǒng)中查詢等只讀操作的比例遠大于Insert/Delete/Update等DML操作呕寝,修改對象定義等DDL操作的比例則更低勋眯。但是,這些操作往往混雜在一起下梢,在高并發(fā)客蹋、高壓力情況下,會導致數(shù)據(jù)庫性能下降孽江,響應時間變長讶坯。借助讀寫分離集群,將只讀操作自動分發(fā)到備庫執(zhí)行岗屏,可以充分利用備庫的硬件資源辆琅,降低主庫的并發(fā)訪問壓力漱办,進而提升數(shù)據(jù)庫的吞吐量。
讀寫分離集群不依賴額外的中間件婉烟,而是通過數(shù)據(jù)庫接口與數(shù)據(jù)庫之間的密切配合娩井,實現(xiàn)讀、寫操作自動分離特性隅很。DM的JDBC撞牢、DPI、DCI叔营、ODBC屋彪、Provider等接口都可以用來部署讀寫分離集群。
根據(jù)是否滿足讀提交事務隔離級特性绒尊,讀寫分離集群可以配置為事務一致模式和高性能兩種模式畜挥。簡單的說,事務一致模式下婴谱,不論一個Select語句是在備庫執(zhí)行蟹但、還是在主庫執(zhí)行,其查詢結(jié)果集都是一樣的谭羔。高性能模式則不能保證查詢是一致的华糖,備庫的數(shù)據(jù)與主庫的數(shù)據(jù)同步存在一定的延遲,當Select語句發(fā)送到備庫執(zhí)行時瘟裸,返回的有可能是主庫上一個時間點的數(shù)據(jù)客叉。

二、數(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ù)庫的搭建請參照“dm7單機數(shù)據(jù)庫的搭建”
2.關閉兩端防火墻

Service firewalld stop

3.主庫初始化實例


image.png

4.配置相關的配置文件

配置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 #實例的對外服務 IP 地址
MAL_INST_PORT = 5236 #實例的對外服務端口笼才,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5239 #實例對應的守護進程監(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 #主庫守護進程啟動恢復的間隔時間
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ā)送日志到備庫的時間閥值,默認關閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時間閥值怨愤,默認關閉

5.啟動數(shù)據(jù)庫確認單實例配置是否成功

./dmserverd start 派敷,查看日志是否有SYSTEM IS READY ,有打印改信息證明數(shù)據(jù)庫配置成功
./dmserverd stop撰洗,正常停止單實例
image.png

image.png

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差导。


image.png

7.拷貝數(shù)據(jù)文件文件夾至備機相同路徑下
image.png

8.Mount啟動數(shù)據(jù)庫试躏,配置主庫狀態(tài)

./dmserver /dbdata/dm7/DAMENG/dm.ini mount 
image.png
./disql sysdba/SYSDBA
SQL> sp_set_oguid(453331);
DMSQL 過程已成功完成
已用時間: 3.152(毫秒). 執(zhí)行號:5.
SQL> alter database primary;
操作已執(zhí)行
已用時間: 3.624(毫秒). 執(zhí)行號:0
image.png

備庫搭建步驟

1.解壓主庫拷貝過來的數(shù)據(jù)文件至相同路徑下,并修改相關配置文件


image.png

2.修改配置文件设褐,只需修改dm.ini中的INSTANCE_NAME與dmarch.ini中的ARCH_DEST即可颠蕴,修改處已標紅。

配置dm.ini
#實例名络断,建議使用“組名_守護環(huán)境_序號”的命名方式裁替,總長度不能超過 16
INSTANCE_NAME = GRP1_DM2
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 #實例的對外服務 IP 地址
MAL_INST_PORT = 5236 #實例的對外服務端口锥惋,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5239 #實例對應的守護進程監(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 #主庫守護進程啟動恢復的間隔時間
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ā)送日志到備庫的時間閥值捅伤,默認關閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時間閥值,默認關閉

3.Mount 啟動數(shù)據(jù)庫巫玻,配置備庫狀態(tài)

./dmserver /dbdata/dm7/DAMENG/dm.ini mount
image.png
./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.
image.png

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 對應 dmmal.ini 中的 MAL_HOST熄诡,PORT 對應 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)
image.png

四袜茧、修改dm_svc.conf 配置文件中參數(shù)

參數(shù) 修改值 解釋
RW_SEPARATE 1 是否啟用讀寫分離菜拓。0:不啟用;1:啟用
RW_PERCENT 25 讀寫分離分發(fā)比例惫周,有效值范圍0~100

五尘惧、驗證

1.主庫創(chuàng)建表并插入數(shù)據(jù),查看備庫是否可以接收到
主庫創(chuàng)建表


image.png

插入數(shù)據(jù)递递,并提交


image.png

查看備機是否有此表存在
image.png

以上為搭建兩節(jié)點讀寫分離集群的全部操作步驟O_O
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喷橙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子登舞,更是在濱河造成了極大的恐慌贰逾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菠秒,死亡現(xiàn)場離奇詭異疙剑,居然都是意外死亡,警方通過查閱死者的電腦和手機践叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門言缤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人禁灼,你說我怎么就攤上這事管挟。” “怎么了弄捕?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵僻孝,是天一觀的道長。 經(jīng)常有香客問我守谓,道長穿铆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任斋荞,我火速辦了婚禮荞雏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己凤优,他們只是感情好羡疗,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著别洪,像睡著了一般叨恨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挖垛,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天痒钝,我揣著相機與錄音,去河邊找鬼痢毒。 笑死送矩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哪替。 我是一名探鬼主播栋荸,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凭舶!你這毒婦竟也來了晌块?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤帅霜,失蹤者是張志新(化名)和其女友劉穎匆背,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體身冀,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡钝尸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搂根。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珍促。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剩愧,靈堂內(nèi)的尸體忽然破棺而出猪叙,到底是詐尸還是另有隱情,我是刑警寧澤隙咸,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布沐悦,位于F島的核電站成洗,受9級特大地震影響五督,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓶殃,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一充包、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦基矮、人聲如沸淆储。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽本砰。三九已至,卻和暖如春钢悲,著一層夾襖步出監(jiān)牢的瞬間点额,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工莺琳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留还棱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓惭等,卻偏偏與公主長得像珍手,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辞做,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355