Docker部署PostgreSQL主从
#准备
PostgreSQL12.3版本容器两台,部署参考https://www.cnblogs.com/zspwf/p/16113298.html
主库: 192.168.3.14:2200
从库: 192.168.3.14:2201
#主库
1.新建用于复制的用户
CREATE ROLE replicate WITH LOGIN PASSWORD 'xyz!345' REPLICATION ;

2.往主库的pg_hba.conf文件追加以下内容,其中192.168.3.14为从库IP,/data/nismes/bd-test/为映射容器目录,未映射请进入容器执行
METHOD参数解析
md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。
password是以明文密码传送给数据库,建议不要在生产环境中使用。
trust是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。
reject是拒绝认证。
#映射执行
echo "host replication replicate 192.168.3.14/32 trust" >> /data/nismes/bd-test/pg_hba.conf
#未映射执行
docker exec -it 容器id /bin/bash
echo "host replication replicate 192.168.3.14/32 trust" >> /var/lib/postgresql/data/pg_hba.conf


3.主库开启归档模式
方式1
ALTER SYSTEM SET archive_command = ON ;
ALTER SYSTEM SET archive_command ='cp -i %p /home/%f </dev/null';

方式二:打开postgresql.conf文件,修改参数
4.主库配置完成,重启数据库
#从库
1.进入容器 ,执行命令
//将文件备份至Home目录
pg_basebackup -h 192.168.3.14 -p 2200 -U replicate -w -Fp -Xs -Pv -R -D /home
//覆盖数据目录
cp -R /home/* /var/lib/postgresql/data/
//清空home目录
rm -rf /home/*


2.设置备用服务器连接字符串
primary_conninfo
指定备用服务器用来连接发送服务器的连接字符串。这个字符串的格式在libpq-connstring中描述。 如果在这个字符串中有任何选项未被指定,那么将检查相应的环境变量(见libpq-envars)。 如果环境变量也没有被设置,则使用默认值。
连接字符串应当指定发送服务器的主机名(或地址),以及端口号(如果它和备用服务器的默认端口不同)。 还要指定对应于发送服务器上合适权限角色的用户名(见streaming-replication-authentication)。 如果发送服务器要求口令认证,还需要提供一个口令。它可以在primary_conninfo字符串中提供,或者在后备服务器(使用replication作为数据库名)的一个单独~/.pgpass文件中提供。 不要在primary_conninfo字符串中指定一个数据库名。
这个参数只能在服务器启动时被设置。如果服务器没有处于备用模式,则此设置无效。
ALTER SYSTEM SET primary_conninfo = 'user=replicate passfile=''/root/.pgpass'' host=192.168.3.14 port=2200 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'; ALTER SYSTEM SET max_connections ='300';

3.重启从库
#测试
主库查看复制
select * from pg_stat_replication;

主库创建数据库测试
CREATE TABLE test2(fc1 varchar(50),fc2 int);

主库插入测试
INSERT INTO test2 SELECT '测试1',1
从库查看
SELECT * FROM test2

从库删除测试
DROP TABLE test2

Docker部署PostgreSQL主从的更多相关文章
- docker部署postgresql时,data目录不生效的问题探究
今天用docker部署postgresql,用的是官方的镜像.结果挂载完 /var/lib/postgresql/data目录后,和容器里的目录其实并没有挂载成功. 母机上的目录并没有成功挂载到容器里 ...
- docker部署redis主从和哨兵
docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...
- springboot多数据源配合docker部署mysql主从实现读写分离
本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...
- Docker:Docker部署postgresql数据库
环境 Centos-7 Postgresql-10 docker-19 yum加载Postgresql yum install https://download.postgresql.org/pub ...
- QuickStart系列:Docker部署PostgreSQL
docker镜像地址: https://hub.docker.com/_/postgres/ https://www.widuu.com/chinese_docker/examples/postgre ...
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: PostgreSQL. 虽然centos自带版本9.2也可以用,但是最近的几次 ...
- 通过 Docker 部署 Mysql 8.0 主从模式
文章转载自:http://www.mydlq.club/article/106/ 系统环境: Mysql 版本:8.0.23 Docker 版本:19.03.13 一.为什么需要 Mysql 主从复制 ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- 阿里云服务器上通过Docker部署redmine
背景:在日常工作的过程中会遇到各种各样的问题,每个问题来了之后需要花时间解决.这里就面临两个问题. 1:问题责任不明确,有时候会遇到数据库或者物理服务器的问题,这时候就需要把相应问题指派给相应的人,传 ...
随机推荐
- mycat的基本介绍 看这一篇就够了
1.前置知识 1.分布式系统 分布式系统是指其组件分布在网络上,组件之间通过传递消息进行通信和动作协调的系统.它的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数 ...
- 恢复训练(学不动了摸会鱼) Pt. 1
本来下午想把pre稿子写了,咕咕咕. 群论是啥也不会了,写个polya试试(手动doge)为什么博客媛没有emoji,以后万一自己搭博客一定要加上这个小东西 polya淼题:poj1286 先复吸一下 ...
- String 和StringBuffer、StringBuilder的区别?
Java提供了:String.StringBuffer和StringBuilder,它们都是CharSequence的实现类,都可以作为字符串使用. String代表了字符序列不可变的字符串:而Str ...
- ISR、OSR、AR 是什么?
ISR:In-Sync Replicas 副本同步队列 OSR:Out-of-Sync Replicas AR:Assigned Replicas 所有副本 ISR是由leader维护,followe ...
- Google Translate寻找之旅
须知 网站:https://translate.google.de/ TK对应入口函数:teanslate_m_zh_CN文件/vu函数 TKK对应文件:/index页面,直接搜索TKK值即可 Goo ...
- 转:怎样理解OOP?OOP又是什么?
本文转载至:https://blog.csdn.net/q34323201/article/details/80198271. OOP面向对象编程.OOP思想中很重要的有五点,类,对象,还有面向对象的 ...
- Spring Mvc 源代码之我见 一
spring mvc 是一个web框架,包括controller.model.view 三大块.其中,核心在于model这个模块,用于处理请求的request. 和之前的博客一样,关键的代码,我会标注 ...
- validator API文档
如何使用 引入 <script src="../node_modules/jquery/dist/jquery.js"></script> <scri ...
- ES6-11学习笔记--对象的扩展
属性简洁表示法 属性名表达式 Objec.is() 扩展运算符 与 Object.assign() in 对象的遍历方式 属性简洁表示法: 如果属性key跟变量名一样,可简写 let name = ...
- .NET程序设计实验一
实验一 语言基础 一.实验目的 1. 熟悉Visual Stido.NET 实验环境: 2. 掌握控制台程序的编写方法: 3. 掌握C#程序设计语言的语法基础: 4. 掌握控制语句和数组的使用. 二 ...