PostgreSQL 9.6 SUSE 环境搭建(一)

postgresql 安装与部署

搭建环境步骤

该搭建整套环境如下:
PostgreSQL 9.6 SUSE 环境搭建(一)
PostgreSQL 主从异步流复制配置(二)
PostgreSQL 主从异步、同步流复制配置(三)

环境配置要求
1、GNU make version 3.80 (可通过make  --version 查看)
2、c编译环境(要符合c89标准),GCC版本推荐最新
3、磁盘空间最少150MB,(Linux 可通过df 命令查看)
软件下载
1、  [ PostgreSQL下载地址 ](https://www.postgresql.org/ftp/source/)
2、  [ readline下载地址 ] (http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz)
3、  [ zlib下载地址 ] http://www.zlib.net/zlib-1.2.11.tar.gz
     本次下载 postgresql-9.6.3.tar.gz (9.x和10.x 安装方法相同)
  • 注意以下解压和安装软件都在 root 权限下进行的

检查和配置postgres用户(是否该环境有当前用户),用于数据库用户

clw-db1:~ # cat /etc/passwd | grep postgres

clw-db1:~ # id postgres
id: postgres: No such user

创建 postgreslinux 操作系统组和账户

clw-db1:~ # groupadd -g 10000 postgres
clw-db1:~ # useradd -g 10000 -u 10000 postgres

校验用户

clw-db1:~ # id postgres
uid=10000(postgres) gid=10000(postgres) groups=16(dialout),33(video),10000(postgres)

创建 postgres 用户 home 目录,存放 postgres 用户的记录(bash、profile、shell等)

clw-db1:~ # mkdir /home/postgres
clw-db1:~ # chown postgres.postgres /home/postgres/
clw-db1:~ # usermod -d /home/postgres postgres
安装PostgreSQL 9.6

上传源码和依赖包到指定目录略(postgresql-9.6.6.tar.gz、readline、zlib)

解压 PostgreSQL 9.6.8

clw-db1:~/pgsoft # tar -xf readline-7.0.tar.gz 
clw-db1:~/pgsoft # tar -xf zlib-1.2.11.tar.gz 
clw-db1:~/pgsoft # tar -xf postgresql-9.6.8.tar.gz

首先安装 readline 依赖

clw-db1:~/pgsoft/readline-7.0 # ./configure 
clw-db1:~/pgsoft/readline-7.0 # make && make install

其次安装 zlib 依赖

clw-db1:~/pgsoft/zlib-1.2.11 # make
clw-db1:~/pgsoft/zlib-1.2.11 # make install

最后安装PostgreSQL 9.6.8,本次安装忽略安装readline(记录历史sql命令查询)依赖

clw-db1: mkdir -p /opt/pgsql-9.6                  # 创建软件安装目录 /opt/pgsql-9.6
clw-db1: chown postgres.postgres -R /opt          # 为创建的目录分配所属用户和组为 postgres
clw-db1:~/pgsoft/postgresql-9.6.8 # cd /pgsoft/postgresql-9.6.8/   #进入解压后的postgresql 目录
clw-db1:~/pgsoft/postgresql-9.6.8 # ./configure --prefix=/opt/pgsql-9.6 --without-readline
  • 参数说明
./configure :为linux源码编译安装检查命令,检查软件安装所需环境是否正常
--prefix :为指定软件的编译安装的目录,
--wihtout-readline --without表示忽略检查,-readline 表示忽略安装的软件包,
  即忽略readline 依赖包的检查,该包用于 在psql命令行中记录命令,可进行上下翻滚
  查看历史命令,建议最好安装,不要进行忽略,即不要指定该参数 --without-readline 

查看机器CPU核数,process 表示CPU核数从0开始

 cat /proc/cpuinfo |grep less

编译时 world 为安装postgresql 安装包下所有软件, 使用 -j 8(该参数可忽略) 指定8核编译;

clw-db1:~/pgsoft/postgresql-9.6.8 # make world -j 8

make 后看到“PostgreSQL, contrib, and documentation successfully made. Ready to install.”说明编译成功。

开始安装,- world 表示安装所有安装包自带的软件和扩展

clw-db1:~/pgsoft/postgresql-9.6.8 # make install-world

执行命令后看到“PostgreSQL, contrib, and documentation installation complete.”说明安装成功。

  • 安装成功后可到指定的 /opt/pgsql-9.6 安装目录下检查是否包含以下目录
lib 、include 、share等

检查安装 postgreSQL 版本是否为 9.6

clw-db1:~/pgsoft/postgresql-9.6.8 # /opt/pgsql-9.6/bin/postgres --version

postgres (PostgreSQL) 9.6.8
初始化数据目录

创建数据库及相关目录

clw-db1:~ # mkdir -p /pgdata/9.6/poc/{data,archive,scripts,backup}

目录名称可自定义

data : 数据库存放目录, 必需
archieve : 日志归档存放目录,非必需
scripts : 脚本存放目录(故障转移、日志清理等)非必需
backup : 备份存放目录 非必需

配置上面创建的目录所属用户和组(postgres.postgres中的 .: 等同,看个人爱好)

clw-db1:~ # chown -R postgres.postgres /pgdata/9.6

表示把/pgdata/9.6 目录下所有文件都分配给 postgres用户和组,-R 表示递归

检查数据目录,“-“ 表示会自动切换到之前创建的用户的home目录下

clw-db1:~ # su - postgres
postgres@clw-db1:~> 
postgres@clw-db1:~> pwd
/home/postgres
postgres@clw-db1:/pgdata/9.6/poc> cd /pgdata/9.6/poc/
postgres@clw-db1:/pgdata/9.6/poc> 
postgres@clw-db1:/pgdata/9.6/poc> ll
total 16
drwxr-xr-x 2 postgres postgres 4096 May  3 15:44 archive
drwxr-xr-x 2 postgres postgres 4096 May  3 15:44 backup
drwxr-xr-x 2 postgres postgres 4096 May  3 15:44 data
drwxr-xr-x 2 postgres postgres 4096 May  3 15:44 scripts

执行 /opt/pgsql-9.6/bin/initdb 进行 初始化数据目录

postgres@clw-db1:/pgdata/9.6/poc> /opt/pgsql-9.6/bin/initdb -D /pgdata/9.6/poc/data/ -E UTF-8 --locale=zh_CN.UTF-8
-D 表示指定数据库存放目录
-E 表示 指定字符集编码 

data 目录权限会自动修改为0700权限,ll 检查目录权限是否为rwx (r=4,w=2,x=1)也可手动配置,r为读权限 w为写权限 x为执行权限。

postgres@clw-db1:/pgdata/9.6/poc> ll
total 16
drwxr-xr-x  2 postgres postgres 4096 May  3 15:44 archive
drwxr-xr-x  2 postgres postgres 4096 May  3 15:44 backup
drwx------ 19 postgres postgres 4096 May  3 15:54 data
drwxr-xr-x  2 postgres postgres 4096 May  3 15:44 scripts

手动配置

chmod 0700 /data
启动和停止

修改 postgresql.conf 配置文件,该文件在初始化时指定的数据库 data 目录下

postgres@clw-db1:~> vim /pgdata/9.6/poc/data/postgresql.conf 

编辑配置文件并修改以下参数如下:

  • 必须参数
listen_addresses = '*'        
port = 5432  
log_destination = 'csvlog'
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
  • 可选参数 (可跳过以下参数) 配置
max_connections = 100    
superuser_reserved_connections = 10    
shared_buffers = 32GB    
maintenance_work_mem = 2GB      
shared_preload_libraries = 'pg_stat_statements'
wal_level = logical    
archive_mode = on    
archive_command = '/bin/true'   
max_wal_senders = 10    
max_replication_slots = 10  
hot_standby = on    
random_page_cost = 1.1        
effective_cache_size = 64GB  

通过 /opt/pgsql-9.6/bin/pg_ctl 启动 PostgreSQL 服务

postgres@clw-db1:~> /opt/pgsql-9.6/bin/pg_ctl -D /pgdata/9.6/poc/data/ start
server starting
postgres@clw-db1:~> LOG:  redirecting log output to logging collector process

-D 表示指定初始化的数据库目录

看到以下行说明启动成功:

2018-05-03 16:19:00.067 CST,,,20626,,5aeac5f2.5092,2,,2018-05-03 16:18:58 CST,,0,LOG,00000,"database system is ready to accept connections",,,,,,,,,""

创建必要的数据库,/opt/pgsql-9.6/bin/psql 为postgresql 的命令行连接命令

postgres@clw-db1:~> /opt/pgsql-9.6/bin/psql -p 5432 -U postgres postgres
psql (9.6.8)
Type "help" for help.

postgres=# 
postgres=# CREATE DATABASE pocdb;
CREATE DATABASE
  • 参数说明
-p 表示PostgreSQL数据库的端口号,默认5432 -U 表示登录用户为 postgres 
第二个 postgres 表示为连接的数据库名称 

创建 user (非必须操作):

postgres=# \c pocdb
You are now connected to database "pocdb" as user "postgres".
pocdb=# 
pocdb=# 
pocdb=# CREATE USER repl ENCRYPTED PASSWORD '123456' REPLICATION;
CREATE ROLE
  • 参数
\c 表示切换数据库,pocdb 为数据库名称

验证用户:

pocdb=# \du+                   # \du 表示查询当前数据下所有用户和拥有的权限
                                          List of roles
 Role name |                         Attributes                         | Member of | Description 
-----------+------------------------------------------------------------+-----------+-------------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}        | 
 repl      | Replication                                                | {}        | 

退出连接

pocdb=# \q         #\q 表示退出当前postgreSQL命令行
postgres@clw-db1:~> 

完成安装

若需要从pgAdmin远程访问该数据库,则需要连接数据库为默认用户 postgres 修改密码,建议第一次记登陆后,执行该操作

postgres=# ALTER USER postgres WITH PASSWORD '123456';
ALTER ROLE
postgres=#

修改 pg_hba.conf 配置文件,指定 IP 为192.168.0.124 的所有用户通过密码认证进行连接该服务器上所有数据库

postgres@clw-db1:/pgdata/10/poc/data> vi pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.0.124/32         md5
"pg_hba.conf" 96L, 4652C                                                
  • 参数说明
host 表示当前主机 第一个all表示该主机所有的数据库,可具体指定数据库名称
第二个 all 表示所有用户 ,可指定具体用户 第四个IP地址,可设置为0.0.0.0./0
表示所有ip地址 ,最后一个md5 表示进行md5加密密码认证   

修改上述配置文件后需要 重启服务 ,然后IP地址为 192.168.0.124 就可以使用pgAdmin 通过
postgres 用户,密码为 123456 进行客户端连接。

  • 重启 服务命令
 /opt/pgsql-9.6/bin/pg_ctl -D /pgdata/9.6/poc/data restart
常见问题Q&A

1、编译检查时,提示没有依赖包 readline , zlib 导致编译检查失败?

  • 出现此问题,请到对应网站下载该包,也可以忽略安装,但是会导致一些后期数据库操作的不方便,建议最好下载安装

2、若在操作过程中遇到 Permission Dennied ,或者权限不足问题?

  • 安装软件首先需要用户为 root 或者拥有 root 权限,若提示提示 没有权限 操作文件时,请通过 ll 命令查看该文件,确认该文件所属主用户是否为当前用户,若不是则可通过
    chown postgres.postgres /home -R 分配所属主,无执行权限则可通过 chmod 700 test 提升权限,test 为文件名

3、postgreSQL默认端口为 5432 ,若端口被占用,可通过修改配置文件 pg_hba.conf 来修改端口号,修改配置文件需要重启服务.

注意
  • 请不要随意删除安装的数据库 data 目录下的任意文件,防止发生不可恢复的错误


    本教程主要便于后期多环境部署,没有配置环境变量,故每次启动、停止等命令需要指定具体目录,详细配置环境
    变量可参考安装PostgreSQL 10.x的安装教程。
    若有问题可联系 QQ:976124272 进行探讨,欢迎共同探讨技术。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值