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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

db2 v10.5 HADR 搭建过程

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

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

1 、HADR 介紹

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

同步基于日志,日志模式決定業務屬性。

同步模式(SYNC)

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

近同步模式(NEARSYNC)

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

異步模式(ASYNC)

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

超級異步模式(SUPERASYNC)

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

模式有無數據丟失風險影響主數據庫性能級別
SYNC
NEARSYNC(default)有(不保證零數據丟失)
ASYNC較小
SUPERASYNC極小

2、搭建過程

SUSE 11 sp3

2.1創建數據庫管理用戶及實例用戶

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安裝數據庫

主機:2臺

172.18.94.110? ? db2_node1?4C 16G? ?

172.18.94.111 ? db2_node2? 4C 16G

v10.5fp10_linuxx64_server_t.tar.gz 安裝包(百度云連接)百度網盤 請輸入提取碼?提取碼(16進制自行轉換):36777173

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

172.18.94.110? ? db2_node1?

172.18.94.111 ? db2_node2?

寫入服務名替代端口號

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搭建及優化

3.1linux 內核優化

ipcs -l ------ Shared Memory Limits -------- max number of segments = 4096 // SHMMNI 缺省系統頁 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
參數名公式

模板以

16G內存

kernel.shmmni?40964096
kernel.shmmaxRAM(GB)*1024*1024*102417179869184
kernel.shmall2*缺省系統頁*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數據庫本身優化(需要根據業務來修改,推薦自動)

主數據庫db2_node1: db2 create db HADRDB using codeset utf8 territory CN collate using identity? 創建緩沖池,包括表緩沖池、索引緩沖池(主數據庫服務器)。 db2 "create bufferpool TB_BP_8k size 2000 pagesize 8k" db2 "create bufferpool IDX_BP_8k size 2000 pagesize 8k"創建表表空間、索引表空間.測試時不要創建表空間!!!!! 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" ?創建表 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并恢復

備數據庫db2_node2:db2 "restore database hadrdb" 注意這條命令只允許備份文件在當前目錄下 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啟動hadr備 db2 start hadr on database hadr as standby查看hadr狀態 db2pd -db hadrdb -hadr 主數據庫db2_node1:啟動hadr主 db2 start hadr on database hadrdb as primary db2pd -db hadrdb -hadr


4測試主備數據是否同步

主數據庫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)"停止數據庫 db2stop force備數據庫db2_node2: 接管主數據庫 db2 takeover hadr on database hadrdb by force查看是否成為主數據庫 db2pd -db hadrdb -hadr | grep PRIMARY查看db2_node1插入的數據是否同步了 db2 connect to hadrdb db2 "select * from tab1"創建表并檢查數據是否同步 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設置為主節點 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檢查數據是否同步 db2 "select * from tab2"db2_node2: db2pd -db hadrdb -hadr | grep STANDBY

至此已成功完成,但無法做到客戶端自動切換,下篇文章講解如何實現客戶端無縫切換

參考鏈接:

IBM Developer

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。