华为GaussDB T数据库主备物理复制搭建过程

举报
社会主义的一块砖 发表于 2020/02/12 15:30:26 2020/02/12
【摘要】 本文主要介绍了华为GaussDB T数据库主备物理复制的搭建过程。



背景


华为公司与今年五月份发布了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 -q
connected.
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


转自墨天轮


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。