美文网首页
PostgreSQL主从数据库搭建

PostgreSQL主从数据库搭建

作者: questionuncle | 来源:发表于2017-09-21 16:49 被阅读0次

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

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

    虚拟机网络设置.png
    2.下载PostgreSQL镜像
    service docker start          //启动docker
    docker search postgres        //搜索仓库中postgres
    
    searchresult.png
    docker pull postgres:9.6         //拉取postgres,并指定标签号9.6
    docker images                    //查看本地镜像
    
    localimages.png
    在参考多个文章后,配置无果,发现有这样一个镜像docker-postgres-replication,能够快速实现主备流复制。
    docker pull nebirhos/postgres-replication:lastest
    docker images
    
    localimages2.png

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

    docker run -p 5432:5432 --name postgres-master nebirhos/postgres-replication
    
    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
    
    slave.png

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


    master.png 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卷
    

    相关文章

      网友评论

          本文标题:PostgreSQL主从数据库搭建

          本文链接:https://www.haomeiwen.com/subject/xovosxtx.html