暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Halo数据库之流复制概述

原创 Halo Tech 2023-11-13
197

流复制基于WAL日志的实例级复制,其核心原理是复制Halo数据库到另外的一台机器上,主库将WAL日志流发送给备库,备库接收到WAL日志后进行重做,为了实现数据库的高可用,需要搭建主库备库,主库可读可写,备库只允许读,根据同步方式分为异步流复制和同步流复制。

流复制示例

 本示例中采用一主(node1)一从(node2)的方式来演示主要的实施物理复制的过程。

1、主要参数

物理复制涉及到的参数需要根据实际情况进行配置,主要参数有:

max_wal_senders(数值)
主库接受从库请求发送WAL日志的最大并发连接数。默认值10。

max_replication_slots(数值)
允许创建的复制槽的最大数量。默认值10。

synchronous_commit(枚举型)
主备同步的级别。默认值on。其它可选的值包括remote_applyremote_writelocaloffsynchronous_standby_names(字符串)
指定支持同步复制的从库的列表。允许一个或者多个同步从库。参数使用下面的语法
之一来指定一个后备服务器列表:
[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]
其中num_sync是事务需要等待其回复的同步从库的数量,standby_name是一个
后备服务器的名称。FIRST以及ANY指定从所列从库中选取同步从库的方法。

primary_conninfo(字符串)
从库用来连接主库的连接字符串。该参数只对从库有效,主库将忽略该参数。
     
primary_slot_name(字符串)
使用的复制槽名称。

 hot_standby(布尔型)
是否开启只读查询功能。该参数只对从库有效,主库将忽略该参数。

2、在主库中为备库创建用户

  1、需要为从库创建一个用户,该用户需要拥有replication的权限。

#CREATE USER replica PASSWORD '123456' REPLICATION;

 2、配置/etc/hosts 主机域名文件

10.16.16.155     node1
10.16.16.156     node2

3、修改主库postgresql.conf

listen_addresses='localhost' 修改为listen_addresses='*'

4、配置pg_hba_conf文件 备库权限

host    replication     replica         10.16.16.156/24       md5

5、备库通过pg_basebackup命令通过网络连接上主库,并从主库复制整个数据库群集,并根据给定的参数自动设置数据库参数

pg_basebackup -F p-X stream -v -P -h node1 -U replica -D $PGDATA -R -C --slot node2

6、从库启动数据库无需初始化启动

pg_ctl start -D /data/halo
报错需修改以下权限
chmod 0700 /data/halo

另外如果在执行pg_basebackup进行复制数据库群集时失败了,在主库配置防火墙权限

systemctl status firewalld
firewall-cmd --zone=public --add-port=1921/tcp–permanent
firewall-cmd--reload

7、查询从库复制状况

halo0root=# select * from pg_stat_replication where client_addr='10.16.16.156';
  pid  | usesysid | usename | application_name | client_addr  | client_hostname | client_port |         backend_start         | backend_xmin |   state   | sent_lsn  | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | repl
ay_lag | sync_priority | sync_state |          reply_time           
-------+----------+---------+------------------+--------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----
-------+---------------+------------+-------------------------------
 10832 |    16384 | replica | walreceiver      | 10.16.16.156 |                 |       44800 | 2022-04-02 11:56:45.823575+08 |              | streaming | 0/5F9E1E8 | 0/5F9E1E8 | 0/5F9E1E8 | 0/5F9E1E8  |           |           |     
       |             0 | async      | 2022-04-28 14:58:52.615012+08
(1 行记录)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论