运维开发技术交流群欢迎大家加入一起学习(QQ:722381733)

开始部署postgres主从(如果没不会安装postgres的请去上一个博文中查看)

这里我使用了两台服务器部署

主:192.168.254.21

从:192.168.254.22

主配置(192.168.254.21)

  1、进入部署postgres服务的用户

[root@web1 ~]# su - postgres
Last login: Thu May :: CST on pts/
[postgres@web1 ~]$

  2、启动服务

[postgres@web1 ~]$ pg_ctl start -l /usr/local/pgsql-10.5/log/pg_server.log
waiting for server to start.... done
server started
[postgres@web1 ~]$

  3、进入postgres数据库,创建用户并授权

[postgres@web1 ~]$ psql
psql (10.5)
Type "help" for help. postgres=# CREATE ROLE replica login replication encrypted password 'replica';
CREATE ROLE
postgres=#

  4、检查所以库用户后退出

postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
replica | Replication | {}
test | Superuser | {} postgres=# \q
[postgres@web1 ~]$

  5、进入安装目录的库文件配置目录

[postgres@web1 ~]$ cd /usr/local/pgsql-10.5/data/
[postgres@web1 data]$ ls
base pg_hba.conf pg_multixact pg_snapshots pg_tblspc pg_xact postmaster.opts
global pg_hba.conf.-- pg_notify pg_stat pg_twophase postgresql.auto.conf postmaster.pid
pg_commit_ts pg_ident.conf pg_replslot pg_stat_tmp PG_VERSION postgresql.conf
pg_dynshmem pg_logical pg_serial pg_subtrans pg_wal postgresql.conf.--
[postgres@web1 data]$

  6、修改postgresql.conf配置文件,修改如下(修改时记得备份)

wal_level = hot_standby        #热备模式
max_wal_senders = #这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = #设置流复制保留的最多的xlog数目(重要配置)
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = #这个设置要注意下,从库的max_connections必须要大于主库的

  7、打开pg_hba.conf配置文件,设置如下(修改时记得备份)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
#host all all 127.0.0.1/ trust
host all all 0.0.0.0/ md5 #所有ip都可以通过密码连接
# IPv6 local connections:
host all all ::/ trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/ trust
host replication all ::/ trust
host replication replica 192.168.254.22/ md5

  8、保存退出后重启主服务器上的postgres库

[postgres@web1 data]$ pg_ctl restart -l /usr/local/pgsql-10.5/log/pg_server.log
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
[postgres@web1 data]$

***在此主就配置完了,现在配置从服务器***

从配置(192.168.254.22)

  1、进入部署postgres服务的用户

[root@web2 ~]# su - postgres
Last login: Thu May :: CST on pts/
[postgres@web2 ~]$

  2、这里为了方便我直接删除data目录用于备份主服务的数据,如果有特殊的要求建议新建个data1,然后用来做从存储目录(线上项目禁用rm,可通过mv移到垃圾箱)

[postgres@web2 ~]$ rm /usr/local/pgsql-10.5/data/* -r
[postgres@web2 ~]$

  3、拷贝主数据库中的数据,注意指定的目录,如果新建了目录就指定到新建的目录。

[postgres@web2 ~]$ pg_basebackup -F p --progress -D /usr/local/pgsql-10.5/data/ -h 192.168.254.21 -p  -U replica --password
Password:
/ kB (%), / tablespace
[postgres@web2 ~]$

***注这里要求输入密码,就是主数据库刚刚新建用户时建的密码(replica)***

  4、复制配置文件并改名,注意文件路径及文件名称

[postgres@web2 ~]$ cp /usr/local/pgsql-10.5/share/recovery.conf.sample /usr/local/pgsql-10.5/data/recovery.conf
[postgres@web2 ~]$ cd /usr/local/pgsql-10.5/data/
[postgres@web2 data]$ ls
backup_label pg_dynshmem pg_logical pg_serial pg_subtrans pg_wal postgresql.conf.--
base pg_hba.conf pg_multixact pg_snapshots pg_tblspc pg_xact recovery.conf
global pg_hba.conf.-- pg_notify pg_stat pg_twophase postgresql.auto.conf
pg_commit_ts pg_ident.conf pg_replslot pg_stat_tmp PG_VERSION postgresql.conf
[postgres@web2 data]$ ls /usr/local/pgsql-10.5/data/ |grep recovery.conf
recovery.conf
[postgres@web2 data]$

  5、编辑recovery.conf文件,配置如下(修改是记得备份)

standby_mode = on    #说明这台postgres,为从库
primary_conninfo = 'host=192.168.254.21 port=5432 user=replica password=replica' #配置要同步的ip及库用户还有密码
recovery_target_timeline = 'latest' #流复制同步到最新的数据

  6、编辑postgresql.conf文件,配置如下

listen_addresses = '*'    #这表示监听的ip,这里我设置监听所有ip,也可以设置成从本机ip
wal_level = hot_standby #注:这个名称要与主的一致
max_connections = #最大连接数要大于主的
hot_standby = on #说明这台机器不仅仅用于数据归档,也用于查询
max_standby_streaming_delay = 30s #数据流备份最大延迟
wal_receiver_status_interval = 1s #多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈

  7、配置完成后启动从数据库服务

[postgres@web2 data]$ pg_ctl start -l /usr/local/pgsql-10.5/log/pg_server.log
waiting for server to start.... done
server started
[postgres@web2 data]$

***这里主从就配置完成啦,接下来就是测试***

测试

  主:1、psql   #进入数据器

      2、\l   #查看所有库

      3、create database test;   #新建库

      4、\l   #检查是否创建

[postgres@web1 data]$ psql
psql (10.5)
Type "help" for help. postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
name | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
postgres | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
template0 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
( rows) postgres=# create database test;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
name | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
postgres | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
template0 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
( rows) postgres=#

    

  从:1、psql   #进入数据库
     2、\l   #查看库是否与主的一致

[postgres@web2 data]$ pg_ctl start -l /usr/local/pgsql-10.5/log/pg_server.log
waiting for server to start.... done
server started
[postgres@web2 data]$ psql
psql (10.5)
Type "help" for help. postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
name | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
postgres | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
template0 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF- | en_US.UTF- | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | en_US.UTF- | en_US.UTF- |
( rows) postgres=#

***测试没问题哈,这个也是意料中的事情!如果上述博文有什么问题,希望大神读客指出来,欢迎在线批评!!!***

postgres主从配置的更多相关文章

  1. Postgres 主从配置(四)

    Postgres 主从切换 数据库主从结构中由从库升级为主库较为容易些,但是主库恢复后重新加入到主从结构中就不那么容易了.以往的做法是当成一个全新的从库加入进来,数据需要重新从现有的主库中使用pg_b ...

  2. Postgres 主从配置(五)

    PostgreSQL 9.4 新增的一个特性, replication slot,  1. 可以被流复制的sender节点用于自动识别它xlog中的数据在下面的standby中是否还需要(例如, st ...

  3. postgresql pgsql最新版安装指南及数据存储路径更改及主从配置

    postgresql pgsql最新版安装指南及数据存储路径更改及主从配置 安装指南 首先在apt的list添加你当前系统版本对应的apt列表 目前官网有16.04,14.04,12.04 分别对应下 ...

  4. CentOS7 PostgreSQL 主从配置( 二)

    同步流复制配置PostgreSql的流复制是异步的,缺点是Standby上的数据落后于主库上的数据,如果使用Hot Standby做读写分离,就会存在数据一致性的问题.PostgreSql9.1版本后 ...

  5. postgresql主从配置

    master:10.0.1.114 slaver:10.0.1.116 一.yum安装https://blog.csdn.net/weixin_41048363/article/details/803 ...

  6. PostgreSQL9.6主从配置

    参考文档: 备机日志传送:https://www.postgresql.org/docs/9.6/static/warm-standby.html 英文文档:https://www.postgresq ...

  7. mysql主从配置

    引言: 双11,阿里云服务器打折,于是我忍不住又买了一台服务器,于是咱也是有两台服务器的爷们了,既然有了两台服务器,那么肯定要好好利用一下吧,那么就来玩玩mysql的主从配置吧. 准备 两台数据库服务 ...

  8. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  9. redis主从配置及主从切换

    环境描述: 主redis:192.168.10.1 6379从redis:192.168.10.2 6380 一.主从配置 1.将主从redis配置文件redis.conf中的aemonize no ...

随机推荐

  1. LeetCode 125. Valid Palindorme (验证回文字符串)

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  2. LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  3. Selenium在Jenkins中的配置

    //  Goals and options -Dmode="" -DuseGrid="true" -Dhub=${Hub} -DbrowserType=${Br ...

  4. 【模板】 倍增lca

    虽然很基础,但是还是复习了一下,毕竟比树剖好写... 代码: #include<iostream> #include<cstdio> #include<cmath> ...

  5. sql 语句NVL()用法

    一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(null)转换成一个实际的值.其表达式的 ...

  6. cookie封装函数(添加,获取,删除)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. TextMeshPro 图片字Sprite

      生成 需要一个资源  右键生成 调整位置  放在目录  使用 <sprite="NumDamage" index=1><sprite="NumDam ...

  8. Android Studio 常用快捷键(超实用!!!)

    快捷键又称为“热键”,多个按键的组合可以实现某些快速操作,例如Window中最常用的Ctrl+C和Ctrl+V,熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生.Android Studio ...

  9. BZOJ 3798 分块打表

    思路: 这题思路真是奇妙 先跑个暴力 每隔1e5打个表 块内暴力 打表程序: (开O3 15秒就跑完了) //By SiriusRen #include <bits/stdc++.h> u ...

  10. Intellij IDEA14配置

    一.下载 官网下载地址:http://www.jetbrains.com/idea/ 目前最新的版本是15,发现15注册比较麻烦,好像需要只能通过联网激活.而网上14的离线注册码一大堆,就下载了14, ...