postgresql 安装与部署
搭建环境步骤
该搭建整套环境如下:
PostgreSQL 9.6 SUSE 环境搭建(一)
PostgreSQL 主从异步流复制配置(二)
PostgreSQL 主从异步、同步流复制配置(三)
检查和配置postgres用户(是否该环境有当前用户)
clw-db1:~ # cat /etc/passwd | grep postgres
或
clw-db1:~ # id postgres
id: postgres: No such user
创建postgres的OS组和账户
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.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:~/pgsoft/postgresql-9.6.8 # ./configure --prefix=/opt/pgsql-9.6 --without-readline
查看机器CPU核数,process 表示CPU核数从0开始
cat /proc/cpuinfo |grep less
没有找到readline-devel包,暂时跳过;编译时使用-j 8
指定8核编译;
clw-db1:~/pgsoft/postgresql-9.6.8 # make world -j 8
看到“PostgreSQL, contrib, and documentation successfully made. Ready to install.”说明编译成功。
clw-db1:~/pgsoft/postgresql-9.6.8 # make install-world
-world 表示安装该目录下所有
看到“PostgreSQL, contrib, and documentation installation complete.”说明安装成功。
检查安装版本及路径
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 : 备份存放目录 非必需
配置目录所属主(“.”与“:”等同)
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
初始化数据目录
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,在此步骤之前手动配置也可以。
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
启动和停止
修改必须重启生效的参数并启动
postgres@clw-db1:~> vim /pgdata/9.6/poc/data/postgresql.conf
编辑配置文件并修改以下参数如下:
listen_addresses = '*'
port = 5432
max_connections = 100
max_connections = 200
superuser_reserved_connections = 10
shared_buffers = 32GB
maintenance_work_mem = 2GB
#replacement_sort_tuples = 150000
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
#cpu_tuple_cost = 0.01
effective_cache_size = 64GB
log_destination = 'csvlog'
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
启动PG Server
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",,,,,,,,,""
创建必要的数据库
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
创建 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
验证用户:
pocdb=# \du+
List of roles
Role name | Attributes | Member of | Description
-----------+------------------------------------------------------------+-----------+-------------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} |
repl | Replication | {} |
退出连接
pocdb=# \q
postgres@clw-db1:~>
完成安装
本教程主要便于后期多环境部署,没有配置环境变量,故每次启动、停止等命令需要指定具体目录,详细配置环境
变量可参考安装PostgreSQL 10.x的安装教程。