广告
返回顶部
首页 > 资讯 > 数据库 >postgresql12 主从复制
  • 718
分享到

postgresql12 主从复制

postgresql12主从复制 2021-02-24 08:02:05 718人浏览 无得
摘要

前言 postgresql 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用 ; 参见:https://www.postgresql.or

postgresql12 主从复制

前言

postgresql 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用 ;

参见:https://www.postgresql.org/docs/release/12.0/

Move recovery.conf settings into postgresql.conf (Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov)

recovery.conf is no longer used, and the server will not start if that file exists. 
recovery.signal and standby.signal files are now used to switch into non-primary mode. 
The trigger_file setting has been renamed to promote_trigger_file. The standby_mode setting has been removed.

recovery.conf 配置文件此文件中的参数合并到 postgresql.conf

  • recovery.conf 配置文件不再支持,若 recovery.conf 存在,数据库无法启动
  • 新增 recovery.signal 标识文件和standby.signal 标识文件用于切换主从模式; recovery.signal表示数据库处于 recovery 模式
  • trigger_file 参数更名为 promote_trigger_file
  • standby_mode 参数不再支持

一、主从配置

角色 主机名 IP
主节点 pg-master 192.168.1.10
从节点 pg-slave 192.168.1.11

1.安装数据库服务

安装repos库

pg-master|pg-slave # yum install Https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装postgresql-server

pg-master|pg-slave # yum install postgresql12-server

在主节点初始化数据库

pg-master # /usr/pgsql-12/bin/postgresql-12-setup initdb

注: 从节点不需要初始化数据库

2. 主数据库配置

修改主配置文件postgresql.conf

listen_addresses = "*"
port = 5432
shared_buffers = 4GB
wal_level = replica
fsync = on
max_wal_size = 1GB
min_wal_size = 80MB

arcHive_mode = on
archive_command = "cp %p /var/lib/pgsql/12/archive_log/%f"

max_wal_senders = 5
wal_keep_segments = 0
wal_sender_timeout = 60s
max_replication_slots = 10

wal_level 确定将多少信息写入WAL,默认值是replica。
          replica 将写入足够的数据以支持WAL归档和复制,包括在备用服务器上运行只读查询。
          minimal 会删除所有日志记录,但从崩溃或立即关闭中恢复所需的信息除外。
          logical 添加支持逻辑解码所需的信息。

在 minimal 级别上,可以安全地跳过一些批量操作的WAL日志记录,这可以使这些操作更快(请参见14.4.7节), 但是 minimal 的WAL没有包含足够的信息来从基本备份和WAL日志中重建数据,因此必须使用replica或更高级别来启用WAL归档(archive_mode)和流复制。

在logical级别,将记录与副本相同的信息,以及允许从WAL中提取逻辑更改集所需的信息。 使用logical级别将增加WAL量,尤其是如果为REPLICA IDENTITY FULL配置了许多表并且执行了许多UPDATE和DELETE语句时,尤其如此。

在9.6之前的版本中,此参数还允许值archive和hot_standby。 这些仍被接受,但映射到replica。

修改pg_hba.conf文件添加认证信息

host    all             all             0.0.0.0/0               md5

host    replication     all             192.168.1.11/32         md5

启动postgresql服务

pg-master # systemctl start portgresql-12

添加复制用户

pg-master # su - postgres
-bash $ psql

postgres=# CREATE USER repluser REPLICATION LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWord "replpass";

3. 从数据库配置

从节点执行pg_basebackup初始化数据库

pg-slave # pg_basebackup -R -D /var/lib/pgsql/12/data/ -Fp -Xs -v -P -h 192.168.1.10 -p 5432 -U repluser

$PGDATA 目录下产生了 standby.signa 标识文件,同时 postgresql.auto.conf 配置文件增加了 primary_conninfo 参数信息。

pg-slave # cat postgresql.auto.conf

# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = "user=repluser password=replpass host=192.168.1.10 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any"

修改主配置文件postgresql.conf

hot_standby = on
max_standby_archive_delay = 30s
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
wal_receiver_timeout = 60s
wal_retrieve_retry_interval = 5s

启动postgresql服务

pg-slave # systemctl start portgresql-12

二、主从验证

当从节点启动服务后,会有一个“postgres: walreceiver”进程

pg-slave # ps -ef 

postgres  7990  7983  0 13:35 ?        00:00:03 postgres: walreceiver   streaming 0/90020B0

主节点有一个“postgres: walsender”进程

pg-master # ps -ef

postgres  8951  8493  0 13:35 ?        00:00:00 postgres: walsender repluser 192.168.1.11(35822) streaming 0/90020B0

在主节点查询主从复制信息

postgres=# select * from pg_stat_replication;

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           
------+----------+----------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-----------+-----------+--------
----+---------------+------------+-------------------------------
 8951 |    16384 | repluser | walreceiver      | 192.168.1.11 |                 |       35822 | 2020-06-24 13:35:47.923873+08 |              | streaming | 0/90020B0 | 0/90020B0 | 0/90020B0 | 0/90020B0  |           |           |        
    |             0 | async      | 2020-06-24 14:55:17.912174+08

创建一个测试库test

主节点:

postgres=# create database test;

postgres=# l

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)

从节点上:

postgres=# l

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)

可以看到从节点已将test库的信息同步过来

您可能感兴趣的文档:

--结束END--

本文标题: postgresql12 主从复制

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • postgresql12 主从复制
    前言 PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用 ; 参见:https://www.postgresql.or...
    99+
    2021-02-24
    postgresql12 主从复制
  • PostgreSQL12-主从复制
    注意:PostgreSQL 12对主从复制实现和配置做了重大改进,如废弃了recovery.conf,并将参数转换为普通的PostgreSQL配置参数,使得配置群集和复制更加简单。 PostgreSQL数据库支持多种复制解决方...
    99+
    2019-09-10
    PostgreSQL12-主从复制
  • mysql主从复制--一主一从
    1、启动实例3306和33072、检查主库配置[root@client 3306]# egrep  "log-bin|server|sock"  my.cnfsocket &n...
    99+
    2022-10-18
  • 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 主从复制
  • mongodb主从复制
    服务器架构: 角色 ip地址 端口 主服务器 192.168.8.81 27017 从服务器 192.1...
    99+
    2022-10-18
  • 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+
    2022-10-18
  • 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
  • 浅谈Redis主从复制以及主从复制原理
    目录面临问题解决办法主从复制主从复制的作用主从复制启用面临问题 1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的。...
    99+
    2022-11-12
  • PostgreSQL12同步流复制搭建及主备切换方式
    目录说明主库配置备库配置主备切换总结说明 pg12流复制搭建主要方式和之前没有太大区别,改变的地方在于pg12将recovery.conf文件合并到了PostgreSQL.conf中,相关的配置需要进行修改。 主库配置 ...
    99+
    2023-03-20
    PostgreSQL12 PostgreSQL流复制搭建 PostgreSQL主备切换
  • mysql搭建主从复制(一主一从,双主双从)
    主从复制原理 Mysql 中有一个binlog 二进制日志,这个日志会记录下所有修改了的SQL 语句,从服务器把主服务器上的binlog二进制日志在指定的位置开始复制主服务器所进行修改的语句到从服务器上执行一遍。 流程图 搭建一...
    99+
    2016-07-17
    mysql搭建主从复制(一主一从,双主双从)
  • centos8 mysql 主从复制
    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 Linu...
    99+
    2023-08-31
    数据库 mysql 服务器
  • Mysql之主从复制
    文章目录 一.Mysql主从复制介绍 1.Mysql主从复制原理2.Mysql的复制类型3.Mysql主从复制的工作过程 二.搭建 Mysql主从复制1.首先关闭防火墙2.Mysql主从服...
    99+
    2023-09-04
    mysql java 数据库
  • mysql+ssl主从复制
    主从复制原理 作为主服务器Master, 会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器I/O thread会负责来读取master binary log, 然后写入自身r...
    99+
    2022-10-18
  • MySQL-5.5.33主从复制
    搭建主从同步需要在两个电脑上分别安装 MySQL ,我这里安装的是 CentOS6.7 64位,MySQL-5.5.33。MySQL 是二进制包安装的:http://aby028.blog.51cto.co...
    99+
    2022-10-18
  • Mysql/Mariadb主从复制
    概念 什么是·Mysql/Mariadb主从复制?     Mysql/Mariadb主从复制:当Master(主)数据库发生变化的时候,变化实时会同步到slave(从)数据库中; 类似于:Samba共享文件(C/S)、NFS网络文件...
    99+
    2021-03-22
    Mysql/Mariadb主从复制
  • MariaDB 10.3 主从复制
    基本信息服务器1:     MariaDB01   192.168.10.178服务器2:     MariaDB02&nbs...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作