版权声明:本文为博主原创文章,未经博主允许不得转载。
-
前言
本博客的内容主要是对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命令进行了总结与归纳,如有不详细的地方期待您的反馈。