日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

db2 v10.5 HADR 搭建过程

發(fā)布時(shí)間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 db2 v10.5 HADR 搭建过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

organization: China Poka
Author: Duan Yu
mail:chinazzbcn@gmail.com or cn-duanyu@foxmail.com

1 、HADR 介紹

直接上db2官方鏈接(中文)就不多說了,挑重點(diǎn)講。

同步基于日志,日志模式?jīng)Q定業(yè)務(wù)屬性。

同步模式(SYNC)

在同步模式下,當(dāng)用戶在主數(shù)據(jù)庫上提交一個(gè)事務(wù)時(shí),首先該事務(wù)的相關(guān)數(shù)據(jù)庫日志會(huì)被寫到主數(shù)據(jù)庫的本地磁盤上,然后主數(shù)據(jù)庫會(huì)將日志發(fā)送給備機(jī)數(shù)據(jù)庫,并且等待備機(jī)數(shù)據(jù)庫的回復(fù);備機(jī)數(shù)據(jù)庫在接收到日志,并將其寫到自己的磁盤上后,才回復(fù)給主數(shù)據(jù)庫。主數(shù)據(jù)庫在接到備機(jī)數(shù)據(jù)庫的回復(fù)之后,才返回給用戶該事務(wù)提交成功。由此可見,在該同步模式下,凡是提交成功的事務(wù),日志不僅在主數(shù)據(jù)庫的磁盤上,也在備機(jī)數(shù)據(jù)庫的磁盤上,此時(shí)如果主數(shù)據(jù)庫發(fā)生故障,已提交的數(shù)據(jù)不會(huì)丟失。因此,在同步模式下,HADR 能夠提供無數(shù)據(jù)丟失保證(No data loss guarantee)。但是,在該同步模式下,HADR 對(duì)主數(shù)據(jù)庫業(yè)務(wù)的影響也是顯而易見的。

近同步模式(NEARSYNC)

與同步模式相比,近同步模式下的備機(jī)數(shù)據(jù)庫接收到主數(shù)據(jù)庫發(fā)來的日志時(shí),并不等待將其寫到本地磁盤之后才回復(fù)給主數(shù)據(jù)庫,而是立即回復(fù)給主數(shù)據(jù)庫。主數(shù)據(jù)庫在接收到備機(jī)數(shù)據(jù)庫的回復(fù)之后就返回給用戶事務(wù)提交成功,而此時(shí),該事務(wù)的日志可能還在備機(jī)數(shù)據(jù)庫的內(nèi)存中,并未寫到本地盤上。如果此時(shí)主機(jī)發(fā)生故障,并不能保證在原主數(shù)據(jù)庫上已提交的數(shù)據(jù)在備機(jī)上必然能找回。雖然該同步模式不能保證零數(shù)據(jù)丟失,但是相比同步模式,近同步模式下的 HADR 對(duì)于主數(shù)據(jù)庫業(yè)務(wù)的影響較小。

異步模式(ASYNC)

在異步模式下,主數(shù)據(jù)庫發(fā)送日志成功后就返回給用戶,事務(wù)提交成功,而此時(shí),備機(jī)數(shù)據(jù)庫有可能還沒有收到這些日志。如果此時(shí)主數(shù)據(jù)庫發(fā)生故障,該已提交事務(wù)的數(shù)據(jù)更改就會(huì)丟失。同樣的,由于異步模式下的主數(shù)據(jù)庫在返回給用戶事務(wù)提交成功之前不等待備機(jī)數(shù)據(jù)庫的回復(fù),HADR 對(duì)主數(shù)據(jù)庫上業(yè)務(wù)的影響比近同步模式更小。

超級(jí)異步模式(SUPERASYNC)

從 DB2 LUW V9.7.5 和 V9.5.8 開始,HADR 引入了一種新的同步模式,即超同步模式。在該同步模式下,主數(shù)據(jù)庫上數(shù)據(jù)庫日志的產(chǎn)生與發(fā)送完全分離,二者沒有任何依賴,這樣 HADR 對(duì)于主數(shù)據(jù)庫業(yè)務(wù)的影響降到了最低;同時(shí),由于日志的產(chǎn)生與發(fā)送分離,可能導(dǎo)致主數(shù)據(jù)庫和備機(jī)數(shù)據(jù)庫之間的差距較大,此時(shí)如果主機(jī)發(fā)生故障,會(huì)有較多的數(shù)據(jù)丟失;并且非強(qiáng)制接管(non-force TAKEOVER)可能需要更多時(shí)間。

模式有無數(shù)據(jù)丟失風(fēng)險(xiǎn)影響主數(shù)據(jù)庫性能級(jí)別
SYNC
NEARSYNC(default)有(不保證零數(shù)據(jù)丟失)
ASYNC較小
SUPERASYNC極小

2、搭建過程

SUSE 11 sp3

2.1創(chuàng)建數(shù)據(jù)庫管理用戶及實(shí)例用戶

zypper install -y gcc gcc-c++ kernel-source pam-32bit glibc-locale-32bit libstdc-32bit groupadd -g 901 db2iadm1 groupadd -g 902 db2fadm1 groupadd -g 903 dasadm1 useradd -g db2iadm1 -u 801 -d /home/db2inst1 -m db2inst1 useradd -g db2fadm1 -u 802 -d /home/db2fenc1 -m db2fenc1 useradd -g dasadm1 -u 803 -d /home/dasadm1 -m dasusr1

2.2安裝數(shù)據(jù)庫

主機(jī):2臺(tái)

172.18.94.110? ? db2_node1?4C 16G? ?

172.18.94.111 ? db2_node2? 4C 16G

v10.5fp10_linuxx64_server_t.tar.gz 安裝包(百度云連接)百度網(wǎng)盤 請(qǐng)輸入提取碼?提取碼(16進(jìn)制自行轉(zhuǎn)換):36777173

先檢查/etc/hosts 有無設(shè)置本地ip映射/etc/hostname

172.18.94.110? ? db2_node1?

172.18.94.111 ? db2_node2?

寫入服務(wù)名替代端口號(hào)

echo "db2_hadr1? ? 55110/tcp

db2_hadr2? ? 55111/tcp " >> /etc/services

tar zxvf v10.5fp10_linuxx64_server_t.tar.gz -C /opt/ /opt/server_t/db2_install/ yes SERVER no ###安裝完成 /opt/ibm/db2/V10.5/instance/dascrt -u dasusr1 /opt/ibm/db2/V10.5/instance/db2icrt -a server -u db2fenc1 db2inst1 su - db2inst1 -c "db2set DB2COMM=TCPIP" su - db2inst1 -c "db2 update dbm cfg using SVCENAME 50000" su - db2inst1 -c "db2start /opt/ibm/db2/V10.5/instance/db2iauto -on db2inst1

3 HADR搭建及優(yōu)化

3.1linux 內(nèi)核優(yōu)化

ipcs -l ------ Shared Memory Limits -------- max number of segments = 4096 // SHMMNI 缺省系統(tǒng)頁 max seg size (kbytes) = 32768 // SHMMAX max total shared memory (kbytes) = 8388608 // SHMALL min seg size (bytes) = 1 ------ Semaphore Limits -------- max number of arrays = 1024 // SEMMNI max semaphores per array = 250 // SEMMSL max semaphores system wide = 256000 // SEMMNS max ops per semop call = 32 // SEMOPM semaphore max value = 32767 ------ Messages: Limits -------- max queues system wide = 1024 // MSGMNI max size of message (bytes) = 65536 // MSGMAX default max size of queue (bytes) = 65536 // MSGMNB
參數(shù)名公式

模板以

16G內(nèi)存

kernel.shmmni?40964096
kernel.shmmaxRAM(GB)*1024*1024*102417179869184
kernel.shmall2*缺省系統(tǒng)頁*1024*10248388608
kernel.sem250 1024000 32 4096同左邊
kernel.msgmni1024 * RAM(GB)16384
kernel.msgmax6553665536
kernel.msgmnb6553665536
vim /etc/sysctl.conf or /etc/boot.sysctlkernel.shmmni=4096 kernel.shmmax=17179869184 kernel.shmall=8388608 #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI> kernel.sem=250 1024000 32 4096 kernel.msgmni=16384 kernel.msgmax=65536 kernel.msgmnb=65536

3.2數(shù)據(jù)庫本身優(yōu)化(需要根據(jù)業(yè)務(wù)來修改,推薦自動(dòng))

主數(shù)據(jù)庫db2_node1: db2 create db HADRDB using codeset utf8 territory CN collate using identity? 創(chuàng)建緩沖池,包括表緩沖池、索引緩沖池(主數(shù)據(jù)庫服務(wù)器)。 db2 "create bufferpool TB_BP_8k size 2000 pagesize 8k" db2 "create bufferpool IDX_BP_8k size 2000 pagesize 8k"創(chuàng)建表表空間、索引表空間.測試時(shí)不要?jiǎng)?chuàng)建表空間!!!!! db2 "create regular tablespace TB_TS pagesize 8k managed by database using(file '/db2/db2inst1/HADRDB/tablespaces/HADRDB' 10g) bufferpool TB_BP_8k" ?db2 "create regular tablespace IDX_TS pagesize 8k managed by database using(file '/db2/db2inst1/HADRDB/tablespaces/HADRDB_IDX' 4g) bufferpool IDX_BP_8k" ?創(chuàng)建表 db2 connect to hadrdb db2 "create table test_1(name varchar(20),age integer,gender varchar(10)) IN 'TB_TS' INDEX IN 'IDX_TS'" db2 "insert into test_1 values(sdasd,22,msdasd)"#開啟在線日志(開啟后允許在線備份) db2 update db cfg for hadrdb using LOGARCHMETH1 LOGRETAINdb2 backup db hadrdbdb2 update db cfg for hadrdb using HADR_LOCAL_HOST db2_node1 db2 update db cfg for hadrdb using HADR_LOCAL_SVC db2_hadr1 db2 update db cfg for hadrdb using HADR_REMOTE_HOST db2_node2 db2 update db cfg for hadrdb using HADR_REMOTE_SVC db2_hadr2 db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1 db2 update db cfg for hadrdb using LOGINDEXBUILD ON

將備份文件傳輸至db2_node2并恢復(fù)

備數(shù)據(jù)庫db2_node2:db2 "restore database hadrdb" 注意這條命令只允許備份文件在當(dāng)前目錄下 db2 update db cfg for hadrdb using HADR_LOCAL_HOST db2_node2 db2 update db cfg for hadrdb using HADR_LOCAL_SVC db2_hadr2 db2 update db cfg for hadrdb using HADR_REMOTE_HOST db2_node1 db2 update db cfg for hadrdb using HADR_REMOTE_SVC db2_hadr1 db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1啟動(dòng)hadr備 db2 start hadr on database hadr as standby查看hadr狀態(tài) db2pd -db hadrdb -hadr 主數(shù)據(jù)庫db2_node1:啟動(dòng)hadr主 db2 start hadr on database hadrdb as primary db2pd -db hadrdb -hadr


4測試主備數(shù)據(jù)是否同步

主數(shù)據(jù)庫db2_node1: db2 connect to hadrdb db2 "create table tab1 (col1 int)" db2 "insert into tab1 values (1)" db2 "insert into tab1 values (2)" db2 "insert into tab1 values (3)"停止數(shù)據(jù)庫 db2stop force備數(shù)據(jù)庫db2_node2: 接管主數(shù)據(jù)庫 db2 takeover hadr on database hadrdb by force查看是否成為主數(shù)據(jù)庫 db2pd -db hadrdb -hadr | grep PRIMARY查看db2_node1插入的數(shù)據(jù)是否同步了 db2 connect to hadrdb db2 "select * from tab1"創(chuàng)建表并檢查數(shù)據(jù)是否同步 db2 "create table tab2 (col1 int)" db2 "insert into tab2 values (4)" db2 "insert into tab2 values (5)" db2 "insert into tab2 values (6)"db2_node1:將db2_node1設(shè)置為主節(jié)點(diǎn) db2 start hadr on database hadrdb as standby db2pd -db hadrdb -hadr | grep STANDBY db2 takeover hadr on database hadrdb db2pd -db hadrdb -hadr | grep PRIMARY檢查數(shù)據(jù)是否同步 db2 "select * from tab2"db2_node2: db2pd -db hadrdb -hadr | grep STANDBY

至此已成功完成,但無法做到客戶端自動(dòng)切換,下篇文章講解如何實(shí)現(xiàn)客戶端無縫切換

參考鏈接:

IBM Developer

DB2 HADR 單一備庫搭建過程_Hwh1231的博客-CSDN博客_db2 備庫只讀

總結(jié)

以上是生活随笔為你收集整理的db2 v10.5 HADR 搭建过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。