PostgreSQL主从数据库搭建

准备对项目进行架构改造,首当其冲的当然是数据存储进行改变。以前是单一数据库,如果该库崩溃了,导致整个系统崩溃,其重要性不言而喻。
看到PostgreSQL在地理数据处理上的优越性,考虑再三,打算搭建主从数据库,实现主从同步、读写分离。因为电脑配置原因,新建两个虚拟机有点耗资源,因此准备用docker部署两个装有PostgreSQL的容器,向外提供数据服务,并参考公瑾大神的这篇文章PostgreSQL流复制热备实现主备流复制热备。(PS:有条件数据库还是不要放在容器内,操作自由度不高,也或许我对docker理解不够深入。)

1.在CentOS安装docker并配置阿里云加速,参考CentOS7 安装docker 配置阿里云加速
在此纠正一下该篇文章中出现的错误,桥接模式可以直接和宿主机、外网互通,其不需要设置虚拟网卡地址。

《PostgreSQL主从数据库搭建》 虚拟机网络设置.png

2.下载PostgreSQL镜像

service docker start          //启动docker
docker search postgres        //搜索仓库中postgres

《PostgreSQL主从数据库搭建》 searchresult.png

docker pull postgres:9.6         //拉取postgres,并指定标签号9.6
docker images                    //查看本地镜像

《PostgreSQL主从数据库搭建》 localimages.png

在参考多个文章后,配置无果,发现有这样一个镜像
docker-postgres-replication,能够快速实现主备流复制。

docker pull nebirhos/postgres-replication:lastest
docker images

《PostgreSQL主从数据库搭建》 localimages2.png

3.使用镜像,制作容器
首先,启动主数据库容器

docker run -p 5432:5432 --name postgres-master nebirhos/postgres-replication

《PostgreSQL主从数据库搭建》 postgres-master.png

其次,启动备数据库容器

docker run -p 5433:5432 --name=postgres-slave --link postgres-master \
           -e POSTGRES_MASTER_SERVICE_HOST=postgres-master \
           -e REPLICATION_ROLE=slave \
           -t nebirhos/postgres-replication

《PostgreSQL主从数据库搭建》 slave.png

4.测试
连接主库,创建数据库,新建表,插入一条数据记录

《PostgreSQL主从数据库搭建》 master.png
《PostgreSQL主从数据库搭建》 slave.png

如果想关闭或重启数据库,只能通过关闭容器。参考How to restart postgres server inside docker container
5.常用的docker命令

docker start CONTAINERNAME                                  //根据容器名启动容器
docker stop CONTAINERNAME                                   //根据容器名停止容器
docker rmi CONTAINERNAME                                    //根据容器名删除容器
docker volume rm $(docker volume ls -q -f dangling=true)    //删除所有volume卷
    原文作者:questionuncle
    原文地址: https://www.jianshu.com/p/bb7b8166ff38
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞