3.3.?流复制

3.3.1. 初始化集群
3.3.2. 流复制配置
3.3.3. 创建备库
3.3.4. 配置recovery.conf
3.3.5. 配置.uxpass
3.3.6. 配置备节点
3.3.7. 流复制数据同步测试

主备模式不能使用uxpool自身的复制功能进行配置,因此配置主备模式时,可以采用UXDB的流复制功能,流复制的配置如下,先建一个简单的示例环境,此环境如下表所示:

表?3.1.?uxpool复制和负载均衡示例环境

主机名称IP地址uxpoolUXDBSever实例名称数据库名称
ux57.com192.168.0.157已安装主库masteruxdb
ux58.com192.168.0.158已安装备库slave_1uxdb

这个数据库实例是在操作系统用户“UXDB”下,uxpool安装在/home/uxdb/uxpool目录下,uxdbsever是安装在/home/uxdb/uxdbinstall/dbsql/bin目录下,具体操作步骤如下:

3.3.1.?初始化集群

在192.168.0.157主机下初始化名为master的集群目录。进入/home/uxdb/uxdbinstall/bin目录下执行:

./initdb -W -D master

3.3.2.?流复制配置

  1. 创建流复制用户:

    进入/home/uxdb/uxdbinstall/dbsql/bin目录下,执行./uxsql,进入控制台执行下面操作:

    uxdb-# create user repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '123456';
  2. 配置ux_hba.conf:

    在master的ux_hba.conf最后一行增加如下:

  3. 配置uxsinodb.conf:

    在master端的uxsinodb.conf配置如下:

    listen_addresses = '*' 
    port = 5432 
    wal_level = replica 
    archive_mode = on 
    archive_command = 'cd ./' 
    hot_standby = on
    max_wal_senders = 3
    wal_keep_segments = 64 
    full_page_writes = on 
    wal_log_hints = on

    如果需要配置同步流复制模式,还需配置如下的参数,不配置时默认为同步流复制模式。

    synchronous_commit = on
    synchronous_standby_names=”ux58”  #此处为application_name(此处的应用名称不是机器名,可以为劝拿庞蜗菲教ㄗ⒉嵬锯名称)
  4. 重启master数据库:

    ux_ctl -D master restart

3.3.3.?创建备库

  • master主机上创建主库后,根据上面配置就可以在slave_1主机上创建备库了,创建方法为进入/home/uxdb/uxdbinstall/dbsql/bin目录下,执行以下命令:

    ./ux_basebackup -D slave_1/ -Fp -Xs -v -P -h ux57.com -p 5432 -U repuser -W -R

    参数含义:

    • -h:表示主机地址

    • -W:表示需要密码

    • -Fp:表示普通文件格式输出

    • -Xs:表示通过流复制抓取备份日志

    • -R:表示在输出目录默认创建一个standby.signal文件(uxdb-2.1.1.0之后将recovery.conf文件合并到了uxsino.conf中,这里将不再生成recovery.conf文件)

    • -u:表示用户

    • -D:指定数据库存放的目录

  • 备库创建后,同样需要修改slave_1中ux_hba.conf,进入/uxdb/uxdbinstall/dbsql/bin目录下,在slave_1的ux_hba.conf最后一行增加如下:

注意

如果是uxdb-2.1.1.0之前的版本请按照配置recovery.conf配置.uxpass继续做后续的配置。

如果是uxdb-2.1.1.0及其之后的版本,请按照配置备节点继续做后续的配置。

3.3.4.?配置recovery.conf

  • master端需要配置如下:

    1. 进入/home/uxdb/uxdbinstall/dbsql/share目录下,复制recovery.conf.sample文件并存放于master数据目录下,重命名为recovery.done,如图所示:

    2. 配置recovery.done文件:

      recovery_target_timeline = 'latest' 
      standby_mode = on 
      primary_conninfo = 'application_name=ux57 host=ux58.com port=5432 user=repuser password=123456' 
      trigger_file = '/home/uxdb/uxdbinstall/dbsql/bin/master/trigger_file'
  • Salve_1端配置如下:

    1. 进入/home/uxdb/uxdbinstall/dbsql/share目录下,复制recovery.conf.sample文件并存放于slave_1数据目录下,重命名为recovery.conf,如图所示:

    2. 配置recovery.done文件:

      recovery_target_timeline = 'latest'
      standby_mode := on 
      primary_conninfo = 'application_name=ux58 host=ux57.com port=5432 user=repuser password=123456' 
      trigger_file = '/home/uxdb/uxdbinstall/dbsql/bin/slave_1/trigger_file'

3.3.5.?配置.uxpass

  1. 在master上配置访问slave_1参数,在 ~目录下创建并配置 .uxpass文件:

    ux58.com:5432:uxdb:repuser:123456

  2. 在slave_1上配置访问master参数:

    ux57.com:5432:uxdb:repuser:123456

3.3.6.?配置备节点

  1. 进入/home/uxdb/uxdbinstall/dbsql/slave_1目录下,修改standby.signal文件,添加备节点标识。

    vi standby.signal
    # 添加
    standby_mode = 'on'
  2. 配置uxsinodb.conf文件。

    recovery_target_timeline = 'latest'
    primary_conninfo = 'application_name=ux67 host=ux68.com port=5432 user=repuser password=123456 ' 
    promote_trigger_file = '/home/uxdb/uxdbinstall/dbsql/bin/slave_1/promote_trigger_file'
  3. 配置uxsinodb.auto.conf文件。

    在uxsinodb.auto.conf中有自动生成的primary_conninfo配置,里面没有application_name配置, 在里面添加节点名称:

  4. 启动备库。

    ./ux_ctl -D slave_1/ start

3.3.7.?流复制数据同步测试

  1. 分别启动master,slave_1数据库,在master上创建一个数据库和临时表;

  2. 在Salve_1上查询刚才创建的表和数据,判定是否有数据同步;

  3. 另外可以在主机上通过 select * from ux_stat_replication; 查询主备复制的状态;

  4. 到此可见,从库已经同步了主库的数据,到此可以说UXDB流复制热备已经创建完成。

XML 地图 | Sitemap 地图