参考文章:PostgreSQL 9.6 SUSE 环境搭建(一)_将臣三代的博客-CSDN博客_suse安装postgresql
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
创建 postgres 的 linux
操作系统组和账户:
clw-db1:~ # groupadd -g 10000 postgres
clw-db1:~ # useradd -g 10000 -u 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
服务 :
#-D 表示指定初始化的数据库目录
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
看到以下行说明启动成功:
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
目录下的任意文件,防止发生不可恢复的错误