華為GaussDB T資料庫主備物理複製搭建過程
本文來源於: 資料庫架構之美
作者:dbaer
摘要
這份資料庫年終總結你看過了嗎?去選出你期待學習的內容吧,還有限量版DBA專屬日曆等你拿哦~
華為在資料庫領域默默深耕多年,近兩年才真正進入大眾視野,GaussDB作為國產資料庫受到廣泛關注,其中GaussDB T主打交易型場景,與Oracle使用上十分相似,降低了oracle dba的學習成本。本文主要介紹了GaussDB主從物理複製部署過程,和oracle adg十分相似,供大家參考。
背景
華為公司與今年五月份釋出了GaussDB100、200、300三個產品線,但近期GaussDB產品組織架構有了調整,產品規劃發生了變化,以後將會有兩個產品線GaussDB T和GaussDB A,T產品將納入原來GaussDB100的產品及能力,主打交易型場景,A將納入GaussDB200及300的產品和能力,主打分析型場景。100對標oracle,號稱完全自研,在使用上和oracle非常像,主打單機版,也有分散式版,明年將會有叢集版對標oracle rac,200、300基於pg開發,對pg核心做了非常多的改動和最佳化,主打分散式版,當然也有單機版。最近高斯資料庫很火,蹭蹭熱度。
主備部署
本文主要介紹對標oracle的GaussDBT資料庫的主備高可用部署,比較簡單,適合入門,如果有oracle基礎的話會發現和oracle ADG非常類似,整個資料庫也很oracle高度相似。GaussDBT資料庫核心名為zengine,編譯完的二進位制包只有7M,非常小巧。下面具體看看部署過程。
主庫DB1:192.168.1.1
備庫DB2:192.168.1.2
備庫DB3:192.168.1.3
01 主備機安裝資料庫軟體
解壓安裝包,進入安裝路徑,使用root執行安裝命令:
[root@DB1 GaussDB_100_1.0.1-DATABASE-KYLINREDHAT-64bit]#./install.py -U omm:dbgrp -R /gaussdb/software -D /gaussdata/data -C LSNR_ADDR=127.0.0.1,192.168.1.3
Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Checking integrality of run file...
Decompressing run file.
Setting user env.
Checking data dir and config file
Initialize db instance.
Creating database.
Creating database succeed.
Changing file permission due to security audit.
Install successfully, for more detail information see /home/omm/zengineinstall.log.
02 引數調整
主備機修改相關引數,包括表空間調整,歸檔路徑調整,上線引數調整,當然不調整也不影響主備搭建:
ALTER SYSTEM SET CBO = on;ALTER SYSTEM SET data_buffer_size = 8G;
ALTER SYSTEM SET shared_pool_size=4G;
ALTER SYSTEM SET temp_buffer_size=2G;
ALTER SYSTEM SET buf_pool_num=8;
ALTER SYSTEM SET large_pool_size=256M;
ALTER SYSTEM SET cr_pool_size=1G;
ALTER SYSTEM SET cr_pool_count=8;
ALTER SYSTEM SET max_worker_threads=550;
ALTER SYSTEM SET optimized_worker_threads=500;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
alter tablespace temp drop datafile '/gaussdata/data/data/temp1_02';
alter database datafile '/gaussdata/data/data/temp1_01' resize 20G;
alter tablespace users drop datafile '/gaussdata/data/data/user5';
alter tablespace users drop datafile '/gaussdata/data/data/user4';
alter tablespace users drop datafile '/gaussdata/data/data/user3';
alter tablespace users drop datafile '/gaussdata/data/data/user2';
alter database datafile '/gaussdata/data/data/user1' resize 100M;
alter tablespace temp2 drop datafile '/gaussdata/data/data/temp2_02';
alter database datafile '/gaussdata/data/data/temp2_01' resize 1G;
alter database datafile '/gaussdata/data/data/temp2_undo' resize 1G;
alter database datafile '/gaussdata/data/data/sysaux' resize 5G;
alter database datafile '/gaussdata/data/data/system' resize 5G;
alter database datafile '/gaussdata/data/data/temp1_01' autoextend off;
alter database datafile '/gaussdata/data/data/user1' autoextend off;
alter database datafile '/gaussdata/data/data/temp2_01' autoextend off;
alter database datafile '/gaussdata/data/data/sysaux' autoextend off;
alter system set log_archive_dest_1='location=/gaussarch';
alter database delete archivelog all;
03 調整redo
也可以不調整
alter database drop logfile('/gaussdata/data/data/log6');
alter database drop logfile('/gaussdata/data/data/log5');
alter database drop logfile('/gaussdata/data/data/log4');
alter database add logfile('/gaussdata/data/data/log4' size 512M,'/gaussdata/data/data/log5' size 512M,'/gaussdata/data/data/log6' size 512M);
alter system switch logfile;
alter database drop logfile('/gaussdata/data/data/log3');
alter database drop logfile('/gaussdata/data/data/log2');
alter database drop logfile('/gaussdata/data/data/log1');
alter database add logfile('/gaussdata/data/data/log1' size 512M,'/gaussdata/data/data/log2' size 512M,'/gaussdata/data/data/log3' size 512M);
04 主庫設定遠端歸檔目錄
alter system set log_archive_dest_2='local_host=192.168.1.1 service=192.168.1.2:1898 sync affirm primary_role';
alter system set repl_port=1898;
05 備庫上設定遠端歸檔目錄
alter system set log_archive_dest_2='local_host=192.168.1.2 service=192.168.1.1:1898 sync affirm primary_role';
alter system set repl_port=1898;
06 重建備庫
重啟主機,停止備機,刪除資料目錄和歸檔目錄下的檔案,cfg目錄不刪,並在nomout模式下進行重建
zctl.py -t start -m nomount[omm@DB2 data]$ zsql / as sysdba -qconnected.SQL> build database;GS-00323, RFS is not ready, can not get peer role
檢查原因發現是備機沒有執行設定遠端歸檔目錄和複製埠。
修改後重新執行
SQL> build database;
Succeed.
07 測試同步
主庫建立表
SQL> create table test(id int);
Succeed.
備庫檢視
SQL> desc test;
Name Null? Type
----------------------------------- -------- ------------------------------------
ID BINARY_INTEGER
資料保護模式
資料保護模式,和oracle一樣,有三種保護模式,保護模式只在主機上有用,但是生產環境建議主備都進行設定,防止主備切換後保護模式變化,保護模式不會自動同步。
01 最大保護模式
最大保護模式下:
SQL> alter database set standby database to maximize protection;
Succeed.
①LOG歸檔的備機地址ARCHIVE_DEST_n(n不等於1),至少有一個備機的Redo日誌傳輸模式必須配置為同步模式SYNC,如果所有的備機都配置為非同步模式ASYNC,資料庫會啟動失敗。
②如果LOG歸檔的備機地址ARCHIVE_DEST_n(n不等於1)指定了SYNC和AFFIRM屬性,那麼事務日誌寫入所有指定AFFIRM的備庫日誌檔案後,才會在主庫上提交。
③如果LOG歸檔的備機地址ARCHIVE_DEST_n(n不等於1)指定了SYNC和NAFFIRM屬性,那麼無需等待備機寫入,事務日誌將直接寫入主庫。
02 最大可用模式
建議生產環境下使用該模式,最大可用模式下:
SQL> alter database set standby database to maximize availability;
Succeed.
①如果LOG歸檔的備機地址ARCHIVE_DEST_n(n不等於1)指定了SYNC和AFFIRM屬性,且指定了AFFIRM的備機和主機連線正常時,那麼事務日誌寫入所有指定AFFIRM的備庫日誌檔案後,才會在主庫上提交。
②如果LOG歸檔的備機地址ARCHIVE_DEST_n(n不等於1)指定了SYNC和NAFFIRM屬性,那麼無需等待備機寫入,事務日誌將直接寫入主庫。
03 最大效能模式
這是預設的模式,不建議生產環境使用,最大效能模式下:
SQL> alter database set standby database to maximize performance;
Succeed.
主庫可以使用LGWR SYNC/ASYNC複製到備庫,該保護模式設定沒有狀態要求
主備switchover
主備庫分別檢視切換狀態
SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;
DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS
------------------------------ ------------------ --------------------
PRIMARY NORMAL NOT ALLOWED
SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;
DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS
------------------------------ ------------------ --------------------
PHYSICAL_STANDBY NORMAL TO PRIMARY
備機執行switchover後檢視狀態已經變為主庫
SQL> alter database switchover;Succeed.SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS ------------------------------ ------------------ --------------------PRIMARY NORMAL NOT ALLOWED
一主兩備
如果是一主兩備的情況,需要在每臺機器上都建立兩條複製通道,每臺機器設定log_archive_dest_2和log_archive_dest_3,記得重啟資料庫,這樣在主備切換後備庫會自動連到新的主庫。
如果想修改log_archive_dest_2的值,需要先將log_archive_dest_state_2設為defer,然後進行修改,再改為enable
SQL> alter system set log_archive_dest_state_2=defer;
Succeed.
SQL> alter system set log_archive_dest_2='local_host=192.168.1.2 service=192.168.1.1:1898 sync affirm primary_role';
Succeed.
SQL> alter system set log_archive_dest_state_2=ENABLE;
Succeed.
主備failover
一主兩備,a主,bc備
停止a庫,在b機執行failover
SQL> alter database failover;Succeed.SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS ------------------------------ ------------------ --------------------PRIMARY NORMAL NOT ALLOWED
C機狀態,已經連上新主庫b
SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;
DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS
------------------------------ ------------------ --------------------
PHYSICAL_STANDBY NORMAL TO PRIMARY
啟動a庫到mount狀態,檢視狀態
SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;
DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS
------------------------------ ------------------ --------------------
PRIMARY NORMAL NOT ALLOWED
此時a機也是primary,切換a機為standby角色
SQL> alter database convert to physical standby;Succeed.SQL> select DATABASE_ROLE,DATABASE_CONDITION,SWITCHOVER_STATUS from dv_database;DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS ------------------------------ ------------------ --------------------PHYSICAL_STANDBY NORMAL TO PRIMARY
注意,a機一定要啟動到nomount狀態,如果啟動到open狀態會有雙主腦裂,而且必須重建備庫。另外如果a機異常當機,b執行failover後a機在mount狀態下轉換為standby也是不用執行重建的。
另外,在業務不斷執行的情況下,如果主庫a當機,在b執行failover,b上的業務也一直執行,然後此時c機檢視狀態可能有短暫的disconnect,追平後就會變為normal,同時原a庫啟動到mount再轉換為備庫後也可能會有短暫的disconnect,追平後會變為normal。
監控檢視
主機檢視相關狀態及位點資訊,其中的一些位點資訊可以用於切換的判斷介面。
SQL> select * from dv_ha_sync_info;
THREAD# STATUS LOCAL_HOST ROLE_VALID NET_MODE PEER_HOST PEER_PORT LOCAL_SEND_POINT PEER_FLUSH_POINT PEER_BUILDING LOCAL_LFN LOCAL_LSN PEER_LFN PEER_LSN FLUSH_LAG REPLAY_LAG
------------ -------------------- ---------------------------------------------------------------- ------------- -------- ---------------------------------------------------------------- ------------ ---------------------------------------------------------------- ---------------------------------------------------------------- ------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
1 SHIFTING 192.168.1.1 PRIMARY_ROLE SYNC 192.168.1.2 1898 0-22/85 0-22/86 FALSE 126144 2566593 126144 2566593 0 0
2 SHIFTING 192.168.1.1 PRIMARY_ROLE SYNC 192.168.1.3 1898 0-22/85 0-22/86 FALSE 126144 2566593 126144 2566593 0 0
SQL> select * from dv_archive_gaps;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
------------ -------------------------------- --------------------------------
0 rows fetched.
SQL> col FLUSH_POINT for a20;
SQL> col PRIMARY_CURR_POINT for a20;
SQL> col REPLAY_POINT for a20;
SQL> set line 200;
SQL> select * from dv_standbys;
PROCESS STATUS RESETLOG_ID THREAD# SEQUENCE# FLUSH_POINT PRIMARY_CURR_POINT REPLAY_POINT
-------------------- -------------------- ------------ -------------------- ------------ -------------------- -------------------- --------------------
RFS STREAMING 3 fffbb02f5f20 32 3-32/8137/146945 3-32/8136/146944
MRP OPEN 3 fffbb0345f20 32 3-32/8137/146945
ARCH OPEN 3 fffbbd1f5f20 31
FAL 0 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2671752/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物理備庫的搭建過程
- MySQL-主從複製之搭建主資料庫MySql資料庫
- RMAN遠端複製搭建物理DG過程小結
- Duplicate 複製資料庫實驗過程資料庫
- MySQL主主複製(雙主複製)配置過程介紹MySql
- MySQL-主從複製之搭建從資料庫MySql資料庫
- 資料庫主從複製資料庫
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- 華為GaussDB T(Gaussdb 100) 安裝系列一
- Docker 搭建KingbaseES主備流複製Docker
- redis建立主從複製的過程Redis
- 搭建物理備庫
- 使用 Docker Compose 搭建 MySQL 資料庫主從複製例項DockerMySql資料庫
- 利用percona-xtrabackup快速搭建MySQL資料庫主從複製MySql資料庫
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- mysql資料庫實現主從複製MySql資料庫
- Redis主備複製Redis
- MYSQL主主複製的搭建MySql
- MySQL Xtrabackup真實生產環境搭建主從複製全過程MySql
- 華為GaussDB資料庫之Yukon安裝與使用資料庫
- 物理備用資料庫(二)資料庫
- 物理備用資料庫(一)資料庫
- mysql主從複製搭建MySql
- MySQL 5.5 主主複製搭建流程MySql
- MySQL主從複製_複製過濾MySql
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- 資料庫複製資料庫
- 複製資料庫資料庫
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- ORACLE DATAGUARD 資料庫---建立物理備用資料庫Oracle資料庫
- 自建資料庫太麻煩?華為雲資料庫GaussDB既省心又省力資料庫
- 資料備份與複製
- MySQL主從複製的詳細過程介紹MySql
- Oracle備份與恢復系列(四)複製資料庫 續 手工複製資料庫的最簡操作Oracle資料庫
- mysql主從複製+主備切換MySql
- MYSQL主從複製的搭建MySql
- 邏輯複製主從搭建
- 分散式Redis主備複製分散式Redis