DB2-HADR搭建
在新鄉(xiāng)等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設計制作按需求定制開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,營銷型網(wǎng)站建設,成都外貿(mào)網(wǎng)站制作,新鄉(xiāng)網(wǎng)站建設費用合理。
1、系統(tǒng)環(huán)境搭建
系統(tǒng)版本:CentOS-6.7-x86_64-bin-DVD1
1、選擇 minimal
2、安裝完成配置IP、主機名 (/etc/hosts /etc/sysconfig/network 改為相同主機名)
數(shù)據(jù)庫版本:v9.7fp7_linuxx64_server.tar
3、在centos-6.7系統(tǒng)下安裝好主庫 erpdb、和從庫實例
4、同步時間 ntpdate asia.pool.ntp.org (可不做,看具體時間而定)
5、安裝scp yum install -y openssh-clients (可不做,為了傳備份集而做)
以下實驗以數(shù)據(jù)庫devdb47為主庫,devdb49為備庫:
1、備份主庫
db2 backup db devdb47
2、將備份集傳于從庫
scp xxx(備份集) 172.16.0.49:/home/db2inst1
3、從庫還原備份集
db2 restore db devdb47
4、配置通訊端口
主從都修改
vi /etc/service
添加 db2h_erpinst1 70000/tcp
5、主從參數(shù)配置 參數(shù)具體含義看最下解釋
主庫:
db2 update db cfg for devdb47 using hadr_local_host PrimaryNode-1
db2 update db cfg for devdb47 using hadr_local_svc db2h_erpinst1
db2 update db cfg for devdb47 using hadr_remote_host PrimaryNode-2
db2 update db cfg for devdb47 using hadr_remote_svc db2h_erpinst1
db2 update db cfg for devdb47 using hadr_remote_inst db2inst1
db2 update db cfg for devdb47 using logindexbuild on
db2 update db cfg for devdb47 using indexrec restart
db2 update db cfg for devdb47 using hadr_syncmode SUPERASYNC
從庫:
db2 update db cfg for devdb47 using hadr_local_host PrimaryNode-2
db2 update db cfg fordevdb47 using hadr_local_svc db2h_erpinst1
db2 update db cfg for devdb47 using hadr_remote_host PrimaryNode-1
db2 update db cfg for devdb47 using hadr_remote_svc db2h_erpinst1
db2 update db cfg for devdb47 using hadr_remote_inst db2inst1
db2 update db cfg for devdb47 using logindexbuild on
db2 update db cfg for devdb47 using indexrec restart
db2 update db cfg for devdb47 using hadr_syncmode SUPERASYNC
6、注冊變量配置:
主庫:
db2set db2_HADR_ROS=ON
db2set db2_STANDBY_ISO=UR
#開啟備庫只讀
從庫:
db2set db2_HADR_ROS=ON
db2set db2_STANDBY_ISO=UR
7、啟動主從數(shù)據(jù)庫(第一次啟動,切記以后啟動不在使用):
從庫:
db2start
db2 start HADR on db devdb47 as standby
主庫:
db2start
db2 start HADR on db devdb47 as primary
查看hadr:
db2 get db cfg for devdb47| grep HADR
10、最后主查看表空間,在用工具查看數(shù)據(jù)
db2 list tablespaces show detail
第一次啟動以后的啟動:(附關閉過程)
主(關閉過程):
取消激活主數(shù)據(jù)庫以及停止數(shù)據(jù)庫devdb47
db2 list applications all #斷開所有連接
db2 terminate
db2 deactivate db erpdb
db2stop force
備(關閉過程):
取消激活備用數(shù)據(jù)庫及停止數(shù)據(jù)庫devdb47
db2 list applications all #斷開所有連接
db2 terminate
db2 deactivate db erpdb
db2stop force
以上關閉完成
開始啟動過程(第一次啟動后的啟動):
備:
1、db2start
2、db2 activate db devdb47 # 激活數(shù)據(jù)庫
3、在主服務器上,運行以下命令以驗證此服務器的 HADR 角色
db2 get snapshot for db on devdb47| grep Role
4、在各服務器上,運行以下命令以驗證數(shù)據(jù)庫是否已同步
db2 get snapshot for database on devdb47| grep State
5、查看HADR狀態(tài) (此時查看的數(shù)據(jù)不同步,插入數(shù)據(jù)后查看數(shù)據(jù)同步)
db2pd -db erpdb -hadr
主:
1、db2start
2、db2 activate db devdb47
3、在主服務器上,運行以下命令以驗證此服務器的 HADR 角色
db2 get snapshot for db on devdb47| grep Role
4、在各服務器上,運行以下命令以驗證數(shù)據(jù)庫是否已同步
db2 get snapshot for database on devdb47| grep State
5、查看HADR狀態(tài) (此時查看的數(shù)據(jù)不同步,插入數(shù)據(jù)后查看數(shù)據(jù)同步)
db2pd -db erpdb -hadr
HADR搭建完成后需要導入表結構及其數(shù)據(jù)
1、導入導出表結構(兩種方法)
目標表中導出表結構:
db2look -d devdb47 -e -a -x -i db2inst1 -w db21234 -o devdb47.sql
導入到使用表:
db2 -tvf devdb47.sql
由于導出的數(shù)據(jù)可能不會應用到相同的數(shù)據(jù)庫,所以必須先修改devdb47.sql文件中數(shù)據(jù)庫名稱
vi /home/db2inst1/devdb47 將devdb47修改為目前的數(shù)據(jù)庫名稱
2、使用工具導出表結構 SqlDbx 后再目前數(shù)據(jù)庫操作表結構
導出:
導入:
3、導出 導入表數(shù)據(jù)
導出(備份表內(nèi)容):
導出全部數(shù)據(jù):(只導出表數(shù)據(jù) 未導出表結構)
db2move devdb47 EXPORT
導出部分表:(含IP、dim、ods的所有表)
db2move devdb47 EXPORT -tn IP*,DIM*,ODS* -tc db2inst1 -l /home/db2inst1
導單表:
db2move devdb47 EXPORT -tn DIM_GAME_RESULT -tc db2inst1 -l /home/db2inst1/
導多表:
db2move devdb47 EXPORT -tn ODS_BAC_ROUND_RESULT_COMP,ODS_BAC_ROUND_RESULT_DETAIL -tc db2inst1 -l /home/db2inst1/game
導入(還原表內(nèi)容):
db2move devdb47 IMPORT (較慢)
db2move devdb47 LOAD -lo INSERT -l /home/db2inst1/ (較快)
此時就將未指定generated always選項的identity列 的數(shù)據(jù)導入了數(shù)據(jù)庫,但要所有數(shù)據(jù)相同還需導入指定了generated always選項的identity列。
3、恢復指定了generated always選項的identity列 需要結合identityoverride選項進行l(wèi)oad導入
導出:db2move devdb47 EXPORT -tn ODS_ACCOUNT_BOOK_HISTORY -tc db2inst1 -l /home/db2inst1
#可以單獨在導出,也可以直接使用已經(jīng)導出的數(shù)據(jù)
導入:db2 "LOAD FROM tab98.ixf OF ixf modified BY identityoverride INSERT INTO acct.ODS_ACCOUNT_BOOK_HISTORY"
# tab98.ixf 是導出的ixf備份文件
導入成功后需要手動更新目標表中的identity字段的值。以保障下次寫入數(shù)據(jù)的連續(xù)性
"alter table acct.ODS_ACCOUNT_BOOK_HISTORY alter column history_id restart with 352120"
其中tab1.ixf 為備份導出的ixf格式文件 identityoverride(將數(shù)據(jù)導入到目標表中,指定使用輸入文件中標識列的值) 如要生成新的標識列則何以使用identitygnore 如下:
db2 "LOAD FROM tab1.ixf OF ixf modified BYidentitygnore INSERT INTO acct.ODS_ACCOUNT_BOOK_HISTORY
4、在進行導入數(shù)據(jù)其中有序列的列需要修改序列初始值(每次導入數(shù)據(jù)之前必須查看)
db2 select prevval for SEQ.SEQ_IP_ID from sysibm.sysdummy1
#查看序列的當前值
db2 alter sequence SEQ.SEQ_AGENT_ID restart with 5000649
#修改序列的起始值
db2 values next value for SEQ.SEQ_AGENT_ID
#序列的下一個值(執(zhí)行就會到下一個值)
此時可以對主庫進行操作,查看從庫是否同步
SELECT max(OP_ID) FROM U_OPERATOR
查看最大值
select NEXT VALUE for MAMA.SEQ_U_OPERATOR_OP_ID from sysibm.sysdummy1
查看下一個值
alter sequence MAMA.SEQ_U_OPERATOR_OP_ID restart with 126
修改現(xiàn)在起始值
=====================================================================================================
=====================================================================================================
高可用性災難恢復 (HADR) 使用數(shù)據(jù)庫日志將數(shù)據(jù)從主數(shù)據(jù)庫復制到備用數(shù)據(jù)庫。在備用數(shù)據(jù)庫上重放日志時,某些活動可能會導致備用數(shù)據(jù)庫落后于主數(shù)據(jù)庫。某些活動要進行大量記錄,它們生成的大量日志文件可能會導致存儲問題。雖然使用日志將數(shù)據(jù)復制到備用數(shù)據(jù)庫是可用性策略的核心,但記錄本身可能會對解決方案的可用性產(chǎn)生負面影響。合理設計維護策略,配置系統(tǒng)以盡可能降低日志記錄的負面影響,并允許日志記錄保護您的事務數(shù)據(jù)。
數(shù)據(jù)定義語言(DDL) CREATE ALTER DROP TRUNCATE COMMENT RENAME 不需要commit
數(shù)據(jù)操作語言(DML) SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE 需要commit
緩沖池操作
表空間操作
聯(lián)機重組 詳細記錄所有操作
脫機重組 通常按幾百或幾千個受影響的行來記錄操作
存儲過程和用戶定義的函數(shù)(UDF)的元數(shù)據(jù)(但不是相關對象或庫文件)
聯(lián)機重組過程中,詳細記錄所有操作。結果,HADR 可以復制操作,而不會使備用數(shù)據(jù)庫比它在進行更多典型數(shù)據(jù)庫更新時更加遠遠地落在后面。但是,由于生成大量日志記錄,所以此行為可能對系統(tǒng)產(chǎn)生較大影響。
如果未如聯(lián)機重組那樣大量地記錄脫機重組,通常按幾百或幾千個受影響的行來記錄操作。這意味著備用數(shù)據(jù)庫將落后,因為它等待每個日志記錄,然后立刻重放許多更新。如果脫機重組是非集群的,那么在整個重組操作之后生成單一日志記錄。此方式在最大程度上影響備用數(shù)據(jù)庫與主數(shù)據(jù)庫保持同步的功能。備用數(shù)據(jù)庫從主數(shù)據(jù)庫接收日志記錄之后,將執(zhí)行整個重組過程。
HADR 不復制存儲過程、UDF 對象和庫文件。必須在主數(shù)據(jù)庫和備用數(shù)據(jù)庫中相同路徑上創(chuàng)建文件。如果備用數(shù)據(jù)庫無法找到引用的對象或庫文件,那么備用數(shù)據(jù)庫上的存儲過程或 UDF 調(diào)用將失敗
高可用性災難恢復 (HADR) 使用數(shù)據(jù)庫日志將數(shù)據(jù)從主數(shù)據(jù)庫復制到備用數(shù)據(jù)庫。主數(shù)據(jù)庫允許不進行日志記錄的操作,但不會將此類操作復制到備用數(shù)據(jù)庫。如果要在備用數(shù)據(jù)庫中反映未日志記錄的操作(例如,對歷史記錄文件的更新),那么必須執(zhí)行額外的步驟來實現(xiàn)此目的。
以下是一些情況示例,在這些情況下,不會將主數(shù)據(jù)庫上的操作復制到備用數(shù)據(jù)庫:
在指定了 NOT LOGGED INITIALLY 選項的情況下創(chuàng)建的表不會被復制。在 HADR 備用數(shù)據(jù)庫接管主數(shù)據(jù)庫后嘗試訪問這樣的表將導致錯誤。
將復制所有已進行日志記錄的 LOB 列。將不會復制未進行日志記錄的 LOB 列。但是,在備用數(shù)據(jù)庫上將為它們分配空間,將二進制的零作為該列的值。
不復制使用 UPDATE DATABASE CONFIGURATION(更新數(shù)據(jù)庫配置) 和 UPDATE DATABASE MANAGER CONFIGURATION(更新數(shù)據(jù)庫管理配置) 命令對數(shù)據(jù)庫配置所作的更新。
不復制數(shù)據(jù)庫配置參數(shù)和數(shù)據(jù)庫管理器配置參數(shù)。
對于用戶定義的函數(shù)(UDF)來說,不復制對數(shù)據(jù)庫外部的對象(例如相關的對象和庫文件)所作的更改。您需要通過其他方法在備用數(shù)據(jù)庫上對它們進行設置。
不會自動地將恢復歷史記錄文件(db2rhist.asc)以及對其所作的更改從主數(shù)據(jù)庫復制到備用數(shù)據(jù)庫。
通過發(fā)出具有 REPLACE HISTORY FILE 選項的 RESTORE DATABASE 命令,可以將歷史記錄文件的原始副本(從主數(shù)據(jù)庫的備份映像中獲?。┓诺絺溆脭?shù)據(jù)庫上:
RESTORE DB KELLY REPLACE HISTORY FILE
初始化 HADR 并接著對主數(shù)據(jù)庫執(zhí)行備份活動后,備用數(shù)據(jù)庫上的歷史記錄文件就已過期。但是,每個備份映像中都存儲了歷史記錄文件的一個副本。通過使用以下命令從備份映像中抽取歷史記錄文件,可以更新備用數(shù)據(jù)庫上的歷史記錄文件:
RESTORE DB KELLY HISTORY FILE
請不要使用正規(guī)操作系統(tǒng)命令將數(shù)據(jù)庫目錄中的歷史記錄文件從主數(shù)據(jù)庫復制到備用數(shù)據(jù)庫。進行復制時,如果主數(shù)據(jù)庫正在更新歷史記錄文件,那些文件就會損壞。
如果執(zhí)行接管操作并且備用數(shù)據(jù)庫有最新的歷史記錄文件,那么對新的主數(shù)據(jù)庫執(zhí)行的備份和復原操作將在歷史記錄文件中生成新記錄,并且與原始主數(shù)據(jù)庫上生成的記錄完全混合。如果歷史記錄文件過期或者缺少條目,那么可能無法進行自動增量復原;而是,您將需要執(zhí)行手動增量復原操作。
=========================================================================================================
=========================================================================================================
HADR的同步方式:
目前使用的是: SUPERASYNC (超級異步)
#db2 update db cfg for devdb47 using hadr_syncmode SUPERASYNC
1、SYNC(同步) #當日志寫入到主數(shù)據(jù)庫,且主收到備庫應答,已經(jīng)寫入到備庫,則成功,確保主 備同時存儲
#此方式將最大可能地避免事務丟失,但使用此方式會導致事務響應時間最長,
2、NEARSYNC(接近同步)#當日志寫入到主數(shù)據(jù)庫,且主收到備庫應答,已經(jīng)寫入到備庫,則成功,確保主 備同時存儲僅當兩處同時發(fā)生故障,并且目標位置未將接收到的所有日志數(shù)據(jù)轉(zhuǎn)移至非易失性存儲器時,才會出現(xiàn)數(shù)據(jù)的丟失
此方式具有比同步方式更短的事務響應時間,但針對防止事務丟失的能力也相對較低
3、ASYNC(異步)#僅當日志記錄已寫入主數(shù)據(jù)庫上的日志文件,而且已將這些記錄傳遞給主系統(tǒng)主機的 TCP 層時,才認為日志寫操作是成功的,不用等待備庫的確認。
4、SUPERASYNC(超級異步)#HADR 對永遠不會處于對等狀態(tài)或斷開連接的對等狀態(tài),一旦數(shù)據(jù)寫入主 就認為是成功
具有最短的事務響應時間,但如果主系統(tǒng)發(fā)生故障,那么丟失事務的可能性也最大。如果您不希望事務因為網(wǎng)絡中斷或擁塞而導致阻塞或經(jīng)歷較長的響應時間,那么此方式很有用
HADR同步的幾中狀態(tài):
文章題目:DB2-HADR搭建
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article18/pgihdp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、企業(yè)網(wǎng)站制作、手機網(wǎng)站建設、搜索引擎優(yōu)化、ChatGPT、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)