返回顶部
首页 > 资讯 > 数据库 >PostgreSQL12-主从复制
  • 952
分享到

PostgreSQL12-主从复制

PostgreSQL12-主从复制 2019-09-10 23:09:55 952人浏览 才女
摘要

注意:postgresql 12对主从复制实现和配置做了重大改进,如废弃了recovery.conf,并将参数转换为普通的Postgresql配置参数,使得配置群集和复制更加简单。 PostgreSQL数据库支持多种复制解决方

PostgreSQL12-主从复制

注意postgresql 12对主从复制实现和配置做了重大改进,如废弃了recovery.conf,并将参数转换为普通的Postgresql配置参数,使得配置群集和复制更加简单。

PostgreSQL数据库支持多种复制解决方案,以构建高可用性,可伸缩,容错的应用程序,其中之一是预写日志(WAL)传送。该解决方案允许使用基于文件的日志传送或流复制,或者在可能的情况下,将两种方法结合使用来实现备用服务器

使用流复制时,备用(复制从属)数据库服务器被配置为连接到主服务器/主服务器,主服务器/主服务器在生成WAL记录时将其流传输到备用服务器,而无需等待WAL文件被填充。

默认情况下,流复制是异步的,其中在将事务提交到主服务器后将数据写入备用服务器。这意味着在主服务器中提交事务与更改在备用服务器中变得可见之间存在很小的延迟。这种方法的一个缺点是,如果主服务器崩溃,则可能无法复制任何未提交的事务,这可能导致数据丢失。

示例环境:

Postgresql master  database server:     10.20.20.1
Postgresql standby database server:     10.20.20.2

一. 配置主服务器

1. 修改监听端口

su - postgres
psql -c "ALTER SYSTEM SET listen_addresses TO "*";"/
ls -l /var/lib/pgsql/12/data/  # 会生成一个postgresql.auto.conf文件

ALTER SYSTEM SET会将配置保存在一个postgresql.conf.auto中,与postgresql.conf并存,系统会优先使用.auto配置。

2. 创建复制角色

# su – postgres
createuser --replication -P -e replicator # -P:设置密码,-e:回显
exit

3. 角色授权
vim /var/lib/pgsql/12/data/pg_hba.conf

host    replication     replicator      10.20.20.2/24     md5

4. 重启服务

systemctl restart postgresql-12.service

5. 设置防火墙(非必选)

firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload

二. 配置从服务器

1. 将主机基础数据备份到从机

# 先停掉服务,备份下本地数据,并清除本地数据
systemctl stop postgresql-12.service
su - postgres
tar -zcvf /var/lib/pgsql/12/data.tar.gz /var/lib/pgsql/12/data #备份一下
rm -rf /var/lib/pgsql/12/data/*
# 使用pg_basebackup工具备份
pg_basebackup -h 10.20.20.1 -D /var/lib/pgsql/12/data -U replicator -P -v  -R -X stream -C -S pgstandby1
exit
  • -h –指定作为主服务器的主机。
  • -D –指定数据目录。
  • -U –指定连接用户。
  • -P –启用进度报告。
  • -v –启用详细模式。
  • -R–启用恢复配置的创建:创建一个standby.signal文件,并将连接设置附加到数据目录下的postgresql.auto.conf
  • -X–用于在备份中包括所需的预写日志文件(WAL文件)。流的值表示在创建备份时流式传输WAL。
  • -C –在开始备份之前,允许创建由-S选项命名的复制插槽。
  • -S –指定复制插槽名称。

备份过程完成后,会在data目录下创建了一个standby.signal,并将primary_conninfo写入postgresql.auto.conf

ls -l /var/lib/pgsql/12/data/
cat /var/lib/pgsql/12/data/postgresql.auto.conf

如果postgresql.conf中的hot_standby参数设置为on(默认值),并且数据目录中存在Standby.signal文件,则replication slave将在“热备”模式下运行。

2. 验证主机(master)复制插槽信息

# su - postgres
$ psql -c "SELECT * FROM pg_replication_slots;"
$ exit

pg_replication_slots视图会看到名为pgstandby1的复制插槽信息。

3. 启动从服务(standby)

#systemctl start postgresql-12

三. 测试主从服务

1. 查看从服务(WAL接收器进程)状态:

psql -c "x" -c "SELECT * FROM pg_stat_wal_receiver;"
扩展显示已打开.
-[ RECORD 1 ]---------+----------------------------
pid                   | 3240
status                | streaming
receive_start_lsn     | 0/3000000
receive_start_tli     | 1
received_lsn          | 0/3013BF8
received_tli          | 1
last_msg_send_time    | 2020-06-22 18:12:29.985512+08
last_msg_receipt_time | 2020-06-22 18:12:29.761575+08
latest_end_lsn        | 0/3013BF8
latest_end_time       | 2020-06-22 17:02:51.977569+08
slot_name             | pgstandby1
sender_host           | 10.20.20.1
sender_port           | 5432
conninfo              | user=replicator passWord=******** dbname=replication host=10.20.20.1 port=5432 fallback_application_name=walreceiver sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any

查看进程信息,会有walsender的相关信息。

$ ps aux | grep postgres
postgres   ... postgres: walsender replicator 10.20.20.2(38418) streaming 0/3013BF8
...

2. 查看主服务(WAL发送器进程)状态:

psql -c "x" -c "SELECT * FROM pg_stat_replication;"
-[ RECORD 1 ]----+------------------------------
pid              | 4647
usesysid         | 16384
usename          | replicator
application_name | walreceiver
client_addr      | 10.20.20.2
client_hostname  |
client_port      | 38418
backend_start    | 2020-06-22 16:54:54.391772+08
backend_xmin     |
state            | streaming                    # ☆☆☆服务状态☆☆☆
sent_lsn         | 0/3013BF8
write_lsn        | 0/3013BF8
flush_lsn        | 0/3013BF8
replay_lsn       | 0/3013BF8
write_lag        |
flush_lag        |
replay_lag       |
sync_priority    | 0
sync_state       | async                       # ☆☆☆同步状态☆☆☆
reply_time       | 2020-06-22 18:18:20.293569+08

查看进程信息,会有walreceiver的相关信息。

$ ps aux | grep postgres
postgres   ...postgres:  walreceiver   streaming 0/3013BF8
...

3. 数据测试

master创建replica_demo数据库,在standby上可以看到同步效果

[master] #CREATE DATABASE replica_demo;
[standby]#l

参考链接

https://www.tecmint.com/configure-postgresql-streaming-replication-in-Centos-8/

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL12-主从复制

本文链接: https://lsjlt.com/news/6823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL12-主从复制
    注意:PostgreSQL 12对主从复制实现和配置做了重大改进,如废弃了recovery.conf,并将参数转换为普通的PostgreSQL配置参数,使得配置群集和复制更加简单。 PostgreSQL数据库支持多种复制解决方...
    99+
    2019-09-10
    PostgreSQL12-主从复制
  • postgresql12 主从复制
    前言 PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用 ; 参见:https://www.postgresql.or...
    99+
    2021-02-24
    postgresql12 主从复制
  • mysql主从复制--一主一从
    1、启动实例3306和33072、检查主库配置[root@client 3306]# egrep  "log-bin|server|sock"  my.cnfsocket &n...
    99+
    2024-04-02
  • mysql主从复制
    一.主从复制简介 2015年5月28日11时,12小时后恢复,损失:平均每小时106.48W$ 1)高可用 2)辅助备份 3)分担负载 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例。 1)主服务器将所有数据和...
    99+
    2019-04-07
    mysql主从复制
  • Redis主从复制
    Redis支持简单易用的主从复制(master-slave replication)功能,该功能可以让从服务器成为主服务器的即使备份服务器。 作用: 主从备份,防止服务器宕机; 读写分离,分担主服务器的任务; 任务分离,从服务器分别担任备...
    99+
    2017-12-16
    Redis主从复制
  • 【MySQL】主从复制
    纸上得来终觉浅,绝知此事要躬行。 概述 复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多...
    99+
    2015-07-01
    【MySQL】主从复制
  • redis 主从复制
    redis 主从复制 master 节点提供数据,也就是写。slave 节点负责读。 不是说master 分支不能读数据,也能只是我们希望将读写进行分离。 slave 是不能写数据的,只能处理读请求 主从实现 客户端 127.0...
    99+
    2017-04-16
    redis 主从复制
  • mysql主从复制
    两台mysql版本号为5.7以上   主库配置文件设置(注意设置在[mysqld]项中) 主库的ip地址为:192.168.1.1 server-id=1 #唯一id,主库设置1 log-bin=mysql-bin #日志记录...
    99+
    2018-10-04
    mysql主从复制 数据库入门 数据库基础教程 数据库 mysql
  • mysql 主从复制
    1, 准备二台机器或者服务器 ,保持mysq 版本一样或者版本相差不大; 主机:114.215.198.39 从机:116.62.234.228 2    新建一个数据库 我的数据库是hlqzxm; 进入主机的mysql 配置文件中修改配置...
    99+
    2021-10-15
    mysql 主从复制 数据库入门 数据库基础教程 数据库 mysql
  • mysql5.7 主从复制
    注意事项:主库全库备份完查看该文件binlog pos标记位文件名为:binlog_pos_innodb 记录当时mysql备份时主库的标记为 环境说明:两台安装在CentOS7.4的MySQL5.7.2...
    99+
    2024-04-02
  • mongodb主从复制
    服务器架构: 角色 ip地址 端口 主服务器 192.168.8.81 27017 从服务器 192.1...
    99+
    2024-04-02
  • PostgreSQL12同步流复制搭建及主备切换方式
    目录说明主库配置备库配置主备切换总结说明 pg12流复制搭建主要方式和之前没有太大区别,改变的地方在于pg12将recovery.conf文件合并到了PostgreSQL.conf中,相关的配置需要进行修改。 主库配置 ...
    99+
    2023-03-20
    PostgreSQL12 PostgreSQL流复制搭建 PostgreSQL主备切换
  • 浅谈Redis主从复制以及主从复制原理
    目录面临问题解决办法主从复制主从复制的作用主从复制启用面临问题 1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的。...
    99+
    2024-04-02
  • Mysql/Mariadb主从复制
    概念 什么是·Mysql/Mariadb主从复制?     Mysql/Mariadb主从复制:当Master(主)数据库发生变化的时候,变化实时会同步到slave(从)数据库中; 类似于:Samba共享文件(C/S)、NFS网络文件...
    99+
    2021-03-22
    Mysql/Mariadb主从复制
  • MySQL-5.5.33主从复制
    搭建主从同步需要在两个电脑上分别安装 MySQL ,我这里安装的是 CentOS6.7 64位,MySQL-5.5.33。MySQL 是二进制包安装的:http://aby028.blog.51cto.co...
    99+
    2024-04-02
  • mysql+ssl主从复制
    主从复制原理 作为主服务器Master, 会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器I/O thread会负责来读取master binary log, 然后写入自身r...
    99+
    2024-04-02
  • MySQL主从复制(二)
    主从架构中:从node是不接受w操作的,否则可能会导致数据不一致。一、复制架构中应该注意的问题: 1.限制slave为只读模式 可以设置在启动参数中。 > show global variable...
    99+
    2024-04-02
  • zabbix做主从复制
    1、在zabbix主库导出除历史数据表之外表mysqldump  -uroot -p  --single-transaction -R  --default-character...
    99+
    2024-04-02
  • Mysql 主从复制GTID
    --------------------------------------------安装准备配置/etc/my.cnf主master grant 分配复制帐号从slave ...
    99+
    2024-04-02
  • MariaDB 10.3 主从复制
    基本信息服务器1:     MariaDB01   192.168.10.178服务器2:     MariaDB02&nbs...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作