文档章节

PostgreSQL 安装与读写分离配置

sushupro
 sushupro
发布于 2016/10/23 13:45
字数 2258
阅读 1062
收藏 2

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 前言

        本博客的内容主要是对PostgreSQL关系型数据库的安装与读写分离配置进行详细的介绍,并且介绍了安装过程与配置过程中遇到的问题。安装与配置采用的是Centos系统环境,采用rpm手动安装方式(解决yum不能用问题)。PostgreSQL9.0版本以后增加了Stream模式(流式)的主从复制,提供了在主从复制过程中可读的功能,本文配置过程中采用的PostgreSQL版本为9.5。

  • PostgreSQL安装

        本部分主要介绍 PostgreSQL数据库的基本安装方法,无论是否进行主从复制进行读写分离都可以采用此部分介绍的方法进行PostgreSQL数据库的搭建。

       1.  PostgreSQL数据库rpm依赖包下载

        1.1  rpm下载地址

        PostgreSQL关系型数据库的常用Rpm依赖包下载地址为“https://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/”,其中参数“9.5”代表PostgreSQL版本号,“redhat”代表系统,“rhel-6-x86_64”代表系统类型。具体下载地址需要根据机型进行更改。

        1.1.2  PostgresSQL-9.5基本rpm包下载命令

        根据具体的业务功能需要,选择安装不同的依赖rpm包。此次安装只安装四个基本依赖。具体安装的依赖包(如表1.1所示)。

        “wget https://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm”。

表1.1  PostgreSQL 依赖包

1 postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm
2 postgresql95-libs-9.5.4-2PGDG.rhel6.x86_64.rpm
3 postgresql95-contrib-9.5.4-2PGDG.rhel6.x86_64.rpm
4 postgresql95-9.5.4-2PGDG.rhel6.x86_64.rpm

 

        1.2  rpm包安装

        由于包之前存在其余依赖,所以需要忽略依赖的强制安装方式,安装命令为“rpm -i --force –nodeps [包名]”。四个依赖包之间存在先后安装顺序为:

                                1)postgresql95-libs-9.5.4-2PGDG.rhel6.x86_64.rpm

                                2)postgresql95-9.5.4-2PGDG.rhel6.x86_64.rpm

                                3)postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm

                                4)postgresql95-contrib-9.5.4-2PGDG.rhel6.x86_64.rpm

        1.3  初始化PostgreSQL数据库

        PostgreSQL数据库安装后不进行初始化是无法启动的,因为初始化会进行PostgreSQL数据库基本配置文件的生成,未初始化之前配置文件是不存在的。初始化命令为:“service postgresql-9.5 initdb”

        1.4  启动PostgreSQL数据库

        此时PoatgreSQL数据库已经基本安装完成,如果没有特殊配置需求的可以进行PostgreSQL的启动了,启动命令为:“service postgresql-9.5 start”。

        启动过程中还可能会遇到“localhost”域名无法解决解析问题,此问题没有进行针对性解决,因为后面配置了远程链接,不进行localhost域名的监听。再此提出一种出现此问题原因的可能性,就是本地host文件中未对localhost进行映射,所以无法进行解析,是否正确还需要读者进行亲自验证,期待您的反馈。

  • PostgreSQL配置远程连接

        2.1  配置postgresql.conf文件

        此文件为PostgreSQL数据库的基本配置文件,需要进行数据库初始化后才能出现。通过此文件配置PostgreSql数据库的监听端口配置。将/var/lib/pgsql/9.5/data/postgresql.conf文件中的listen_addresses 参数修改为“listen_addresses ='*'”,默认为监听localhost。

        2.2  配置pg_hba.conf文件

         通过此文件配置远程连接的用户验证方式,以及配置允许的远程ip。可以根据具体情况进行不同的添加,本文将/var/lib/pgsql/9.5/data/pg_hba.conf文件参数进行修改,添加“host    all    all    0.0.0.0/0    trust”。

  • PostgreSQL配置主从流复制

        配置主从复制服务器过程中需要注意,PostgreSQL数据库在主从服务器上都需要进行安装,采用上述安装方式就行。但是主服务器与从服务器的初始化过程不同,主服务器需要初始化,从服务器不需要初始化,从服务器的基本配置信息是通过从主服务器拉取得到的,否则无法正常启动。

        3.1  主从服务器基本信息

        本次配置中采用两台服务器进行主从配置,分别为:

                Master Server:***

                数据库版本:PostgreSQL9.5

                端口:5432

                数据库的数据目录: /var/lib/pgsql/9.5/data

 

                Standby Server:******

                数据库版本:PostgreSQL9.5

                端口:5433

                数据库的数据目录: /var/lib/pgsql/9.5/data/

        3.2  主服务器配置

        3.2.1  配置postgresql.conf文件

        wal_level = hot_standby

        max_wal_senders = 2

        wal_keep_segments = 32

        3.2.2  配置pg_hba.conf文件

        host replication postgres *****/32 md5

        3.2.3  重启主数据库

        service postgresql-9.5 restart

        3.3 从服务器配置

        3.3.1  复制备库

        通过pg_basebackup进行一步到位的主数据库配置同步。

        命令为:pg_basebackup -F p --progress -D /var/lib/pgsql/9.5/data -h "ip" -p 5432 -U replica –password

        3.3.2  文件授权

        文件复制过来文件用户与权限可能与主服务器不同,通过命令“chown -R [用户] [文件名]”进行所属用户的授权,授权命令样例:

        chown -R postgres.postgres data

        chmod -R 777 data

        3.3.3  配置postgresql.conf文件

        port=5432

        hot_standby = on

        并注释掉wal_level max_wal_senders和wal_keep_segments的设置

        3.3.4  拷贝并配置recovery.conf

        #cp /usr/pgsql-9.5/share/recovery.conf.sample /var/lib/pgsql/9.5/data/recovery.conf

        配置如下内容:

                standby_mode = on

                primary_conninfo = ‘host=*** port=5432 user=postgres password=psql’

                trigger_file = ‘/var/lib/pgsql/9.5/trigger_activestandby’

        3.3.5  删除从主数据库中过来的postmaster.pid文件,然后启动从数据库

        #rm /var/lib/pgsql/9.5/data/postmaster.pid

        #service postgresql-9.5 start

  •  PostgreSQL数据库常用命令

        4.1  PostgreSQL常用SQL命令

 

PostgreSQL常用SQL命令

命令 解释
psql -U user -d dbname 连接数据库, 默认的用户和数据库是postgres
\c dbname 切换数据库,相当于mysql的use dbname
 \l 列举数据库,相当于mysql的show databases
\dt 列举表,相当于mysql的show tables
\d tblname 查看表结构,相当于desc tblname,show columns from tbname
 \di 查看索引
create database [数据库名] 创建数据库
drop database [数据库名] 删除数据库
alter table [表名A] rename to [表名B] 重命名一个表
drop table [表名] 删除一个表
alter table [表名] add column [字段名] [类型] 在已有的表里添加字段
alter table [表名] drop column [字段名] 删除表中的字段
alter table [表名] rename column [字段名A] to [字段名B] 重命名一个字段
alter table [表名] alter column [字段名] set default [新的默认值] 给一个字段设置缺省值
alter table [表名] alter column [字段名] drop default 去除缺省值
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......) 在表中插入数据
update [表名] set [目标字段名]=[目标值] where [该行特征] 修改表中的某行某列的数据
delete from [表名] where [该行特征] 删除表中某行数据
delete from [表名] 删空整个表
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;) 创建表
\copyright 显示 PostgreSQL 的使用和发行条款
\encoding [字元编码名称] 显示或设定用户端字元编码
\h [名称] SQL 命令语法上的说明,用 * 显示全部命令
\prompt [文本] 名称  提示用户设定内部变数
\password [USERNAME] 修改密码
\q 退出 psql

        4.2  PostgreSQL其余常用命令

        4.2.1  tgreSQL启动与停止服务命令:

        启动服务:service postgresql start

        重启服务:service postgresql restart

        停止服务:service postgresql stop

        4.2.2  PstgreSQL连接命令:

        用户名:postgres

        密码:psql

        连接命令:sudo -s -u postgres

        4.2.2  PstgreSQL数据导入导出命令:

        导出命令:pg_dump -h ip -U postgres -w -t annual_hr_2016_temp3 test >/root/postgresql/data/*.sql

        导入命令:psql -h ip -U postgres -w -t test </root/postgresql/data/*.sql

  •  安装过程中用到的centos命令于rpm命令

命令 解释
cat /etc/redhat-release 系统版本查询
uname -m 系统位数查询
chown -R postgres.postgres data 文件授用户命令
ps -aux | grep java centos查看进程命令
du -h annual_hr_2016_temp3.sql 查看文件大小
service --status-all | grep postgres 查看安装服务
rpm -qa | grep postgresql 根据名字查看已安装的安装包
rpm -e --nodeps pgdg-centos96-9.6-3.noarch 卸载已安装包
rpm -i --force --nodeps postgresql95-9.5.4-2PGDG.rhel5.x86_64.rpm 强制安装,忽略依
  • 总结

        本文详细介绍了PostgerSQL数据库的安装与主从配置,并把常用的sql命令,rmp命令,centos命令进行了总结与归纳,如有不详细的地方期待您的反馈。

© 著作权归作者所有

sushupro
粉丝 0
博文 11
码字总数 5454
作品 0
石家庄
程序员
私信 提问
postgresql的hot standby(replication stream)

PG在9.*版本后热备提供了新的一个功能,那就是Stream Replication的读写分离,是PG高可用性的一个典型应用,也就是我们传统意义上说的Hot-Standby,比如Oracle的DG,mssql的mirror以及Mysql的...

kenyon_君羊
2012/04/24
5.9K
15
Linux CentOS 6.x 开发配置文档 5 - PostgreSQL

一,图形化的安装: 1,进入官网的下载页面:http://www.postgresql.org/download/linux/ 2,先修改文件权限:chmod 777 postgresql-9.2.4-1-linux-x64.run 3,安装:./postgresql-9.2.4-1-...

-蒋全忠-
2015/05/15
61
0
postgresql已经配置好主从,java中怎么进行读写分离?

公司从mysql cluster(上个项目)切换到postgresql(新项目)。 目前,已将搭建好了postgresql的主从环境,并做了如下相关设定: 当主机器出现问题时,自动将从节点更替为主节点。原先的主节...

sunnyailon
2012/07/13
2.4K
4
PostgreSQL 使用Keepalived实现主从自动切换的简单读写HA环境

PostgreSQL 使用Keepalived实现主从自动切换的简单读写HA环境 -- Alvin 2015.08.10 ----- 环境说明 ---- 1.PostgreSQL服务器IP地址(主库) 172.20.0.245 2.PostgreSQL服务器IP地址(备库) 172...

Ch`ing-hua
2015/12/24
3
0
给PostgreSQL爱好者的参考资料

出处 http://blog.163.com/digoal@126/blog/static/163877040201172183022203/ 给PostgreSQL爱好者的参考资料 2011-08-21 08:32:39| 分类: PostgreSQL|举报|字号 订阅 推荐书籍: 概念书籍:......

3444542
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
5分钟前
3
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
15分钟前
3
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
26分钟前
4
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
28分钟前
5
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部