zoukankan      html  css  js  c++  java
  • PG数据库异步流复制

    PG数据库异步流复制


    背景说明

    • 最近想进行一个数据库高可用课题的研究.
    • 因为之前某种原因,这次选择的是PG数据库.
    • 为了简单起见, 暂时采用PG异步流复制的场景.
    • 这次仅是为了测试, 不考虑高可用绿色切换的场景.

    设置过程

    • 本次学习自如下网站:
    http://blog.itpub.net/26442936/viewspace-2771065/
    
    • 原作者对数据非常有研究, 这里仅是进行一次简单学习与整理.

    设置过程

    • 安装PG数据库.
    yum localinstall *.rpm 
    
    • 需要主要主从库都能够准确安装上数据库.
    • 第一个数据库需要执行创建操作
    # 本次是 PG13为例进行说明
    systemct status postgresql-13
    # 查看数据库的信息
    #一般启动脚本为 /usr/pgsql-13/bin/ 数据目录为: /var/lib/pgsql/13/data
    su - postgres
    # 切换用户后进行数据库初始化的操作
    cd /usr/pgsql-13/bin
    ./initdb -D /var/lib/pgsql/13/data
    

    设置过程

    • 数据库安装完成之后需要进行流复制的初始化设置.
    • 设置的事项应该不需要太多.
    #修改 postgresql.conf的设置
    #主要有两处
    listen_addresses ='*'
    wal_level = replica
    #修改pg_hba.conf的配置文件
    host replication repl the_Slave_server_ip/32 md5
    host replication repl the_master_server_ip/32 md5
    # 注意 repl 是需要创建一个数据库的用户
    # 需要使用pgsql 命令执行下来.
    create role repl login replication encrypted password 'yourpassword';
    

    设置过程

    • 需要设置.pgpass 的默认配置
    vim /postgres/can/rw/.pgpass
    #添加内容为:
    The_ip_of_master:5432:replication:repl:$yourpassword
    # 注意这个文件需要让备份库可以读写.
    
    • 设置完成后需要执行一下重启操作
    # 注意是在主库
    systemctl restart postgresql-13
    

    设置过程

    • 主库备份
    pg_basebackup -h The_ip_of_master -U repl -D /var/lib/pgsql/13/databackup -Xs -P -R
    # 注意需要使用非127.0.0.1的ip不然容易出问题.
    # 这里会复制一下别人的专门说法.
    
    • 参数说明
    # /var/lib/pgsql/13/databackup是从库创建一个新目录,用来恢复主库的cluster databases
    # -h 主库ip地址
    # -U 指定连接主库的用户
    # -D 从库复制数据的目录
    # -Xs 主库备份时,以流式传输WAL日志内容
    # -P 进度报告
    # -R 创建一个standby.signal空文件,用于在集群中激活standby server,有这个standby.signal文件即为备库;
    另外也可以把主库一些连接信息primary_conninfo写入备库postgresql.auto.conf
    

    设置过程

    • 从库的处理
    注意需要将上一步 -D 产生的目录 复制到从数据库的特定目录上面
    scp -r /var/lib/pgsql/13/databackup postgres@10.110.82.185:/var/lib/pgsql/13
    注意文件目录的权限和属主必须保持准确.
    注意需要修改启动脚本. 修改 systemd 的service 文件里面的 数据目录
    处理步骤与前面相同
    systemctl status postgresql-13
    vi /usr/lib/systemd/system/postgresql-13.service
    修改文件.
    添加核心配置文件.
    

    设置过程

    • 注意 pg_basebackup 会产生一个文件: standby.signal
    注意包含这个文件的数据目录 在PG数据库启动之后
    会提示没有写入权限
    如果需要改为主库, 需要移除这个文件
    注意这个文件一般是空的, 需要从 postgresql.auto.conf 
    复制配置文件到此目录才可以实现.
    注意需要注意文件的权限,避免文件丢失权限导致无法启动.
    

    设置过程

    • 启动从库
    systemctl restart postgresql-13
    
    • 验证流复制是否准确
    # 主库查询
    select * from pg_stat_replication;
    # 从库查询
    select * from pg_stat_wal_receiver;
    

    简单验证

    • 主库插入从库验证
    #主库设置:
    create table zhaobsh (master varchar(200))
    insert into zhaobsh values ('主库自主插入')
    #从库查询:
    select * from zhaobsh
    # 验证能够查询出结果来
    
  • 相关阅读:
    6 开发工具IDE-pycharm
    5 循环控制
    react native 遇到的坑
    代码缩略图插件
    JEECMS-自定义标签[list]
    Jeecms自定义标签用法[单个内容]
    ReactNative环境搭建
    修改浏览器accept使支持@ResponseBody
    [转]MyEclipse for Spring2014破解
    js正则验证手机号
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15805648.html
Copyright © 2011-2022 走看看