首页 > 数据库 > 数据库开发技术 > Halo数据库之流复制概述
流复制基于WAL日志的实例级复制,其核心原理是复制Halo数据库到另外的一台机器上,主库将WAL日志流发送给备库,备库接收到WAL日志后进行重做,为了实现数据库的高可用,需要搭建主库备库,主库可读可写,备库只允许读,根据同步方式分为异步流复制和同步流复制。
流复制示例
本示例中采用一主(node1)一从(node2)的方式来演示主要的实施物理复制的过程。
1、主要参数
物理复制涉及到的参数需要根据实际情况进行配置,主要参数有:
max_wal_senders(数值)主库接受从库请求发送WAL日志的最大并发连接数。默认值10。max_replication_slots(数值)允许创建的复制槽的最大数量。默认值10。synchronous_commit(枚举型)主备同步的级别。默认值on。其它可选的值包括remote_apply、remote_write、local和off。synchronous_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 node110.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 firewalldfirewall-cmd --zone=public --add-port=1921/tcp–permanentfirewall-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 | replay_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 行记录)
原文作者:Halo Tech;如有侵权,请联系管理员删除。