PostgreSQL12.3部署初體驗


軟件版本:postgresql12.3

二進制安裝:postgresql-12.3.tar.gz.tar.gz

postgresql-12.3.tar.gz.md5:4aeff45d4180d8d8cdb907a0e4690da2 postgresql-12.3.tar.gz

postgresql-12.3.tar.gz.sha256:708fd5b32a97577679d3c13824c633936f886a733fc55ab5a9240b615a105f50 postgresql-12.3.tar.gz

操作系統信息:

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

# free -m
total used free shared buff/cache available
Mem: 7983 295 7013 16 674 7403
Swap: 8191 0 8191

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 4
NUMA node(s): 1

 

一、安裝依賴包
yum -y install readline readline-devel zlib-devel
cd /usr/local

mv postgresql-12.3 pgsql

二、編譯安裝PostgreSQL

cd /usr/local/pgsql
./configure
make && make install
添加用戶組
groupadd -g 5432 postgres
useradd -u 5432 -g postgres postgres
passwd postgres
#
PostgreSQL默認安裝目錄為 /usr/local/pgsql/

默認端口:5432
三、創建用戶及相關目錄

chown -R postgres.postgres /usr/local/pgsql/
系統數據目錄、日志目錄、表空間目錄、wal日志目錄
mkdir -p /data/pgsql_5432/{pgdata,pg_log,tbsdata,pg_arch}
chown -R postgres.postgres /data/pgsql_5432/

chmod 700 /data/pgsql_5432/pgdata

四、初始化數據庫
su - postgres
/usr/local/pgsql/bin/initdb -D /data/pgsql_5432/pgdata/
$ /usr/local/pgsql/bin/initdb -D /data/pgsql_5432/pgdata/

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /data/pgsql_5432/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... PRC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

/usr/local/pgsql/bin/pg_ctl -D /data/pgsql_5432/pgdata/ -l logfile start
View Code

五、啟動數據庫

/usr/local/pgsql/bin/pg_ctl -D /data/pgsql_5432/pgdata/ -l /data/pgsql_5432/pg_log/postgres.log start


ln -s /usr/local/pgsql/bin/psql /usr/bin/psql
ln -s /usr/local/pgsql/bin/pg_ctl /usr/bin/pg_ctl

配置postgresql環境變量

su - postgres

export PGHOME=/usr/local/pgsql/
export PGDATA=/data/pgsql_5432/pgdata/
export LD_LIBRARY_PATH=/usr/local/pgsql/lib


#for pg_rman
export BACKUP_PATH=/pgshare/rman
export ARCLOG_PATH=/data/pgsql_5432/pg_arch
export SRVLOG_PATH=/data/pgsql_5432/pg_log/


export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin

 

數據庫啟停命令
pg_ctl -D /data/pgsql_5432/pgdata status
pg_ctl -D /data/pgsql_5432/pgdata stop -m fast
pg_ctl -D /data/pgsql_5432/pgdata start

六、修改postgres用戶登錄密碼
ALTER user postgres with password 'xxxxxx';

 編輯postgresql.conf

listen_addresses = '*'
port = 5432
max_connections = 2000

logging_collector = on
log_directory = '/data/pgsql_5432/logs/'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S'

shared_buffers = 4096MB
temp_buffers = 16MB
work_mem = 32MB
effective_cache_size = 10GB
maintenance_work_mem = 128MB
#max_stack_depth = 2MB
dynamic_shared_memory_type = posix
View Code

編輯pg_hba.conf

local   all             all                                      md5
host    pgdb            srv_pgdb        0.0.0.0/0                md5
host    all             all             ::1/128                  ident
View Code

 

創建用戶srv_pgtest
create user srv_pgtest with ENCRYPTED password 'srv_pgtest';
創建schema,並賦予所有者為用戶srv_pgtest
CREATE SCHEMA pgtest;
ALTER SCHEMA pgtest OWNER to srv_pgtest;
創建所有者是srv_qhms的數據庫,owner是role,不是schema
CREATE DATABASE pgtest WITH OWNER srv_pgtest ENCODING UTF8 TEMPLATE template0;

 

多實例部署:   

部署1921端口實例

一、創建系統數據目錄、日志目錄、表空間目錄、wal日志目錄
mkdir -p /data/pgsql_1921/{pgdata,pg_log,tbsdata,pg_arch}
chown -R postgres.postgres /data/pgsql_1921/

chmod 700 /data/pgsql_1921/pgdata

初始化數據庫
su - postgres
/usr/local/pgsql/bin/initdb -D /data/pgsql_1921/pgdata/

$ /usr/local/pgsql/bin/initdb -D /data/pgsql_1921/pgdata/
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /data/pgsql_1921/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... PRC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/local/pgsql/bin/pg_ctl -D /data/pgsql_1921/pgdata/ -l logfile start

配置postgresql.conf

listen_addresses = '*'
port = 1921
max_connections = 2000
superuser_reserved_connections = 10
full_page_writes = on
wal_level = replica
wal_log_hints = off
max_wal_senders = 50
max_wal_size = 1GB
min_wal_size = 80MB

hot_standby = on
log_destination = 'csvlog'
logging_collector = on
log_directory = '/data/pgsql_1921/pg_log/'

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_filename = 'postgresql-%w.log'
log_file_mode = 0640
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB

log_statement = 'mod'
log_timezone = 'Asia/Shanghai'
timezone = 'Asia/Shanghai'
datestyle = 'iso, mdy'

unix_socket_directories = '/data/pgsql_1921'
temp_tablespaces = 'ts_temp_customer'
shared_buffers = 4096MB
temp_buffers = 16MB
work_mem = 128MB
effective_cache_size = 1GB
maintenance_work_mem = 512MB
max_stack_depth = 2MB
dynamic_shared_memory_type = posix

checkpoint_timeout = 30min
checkpoint_completion_target = 0.9

wal_buffers = 16MB
wal_writer_delay = 200ms
synchronous_commit = remote_write
commit_delay = 0
commit_siblings = 5

archive_mode = on
archive_command = 'cp %p /data/pgsql_1921/pg_arch/%f && echo %f >> /data/pgsql_1921/pg_arch/archive.list'
wal_keep_segments=1024


log_min_duration_statement = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
archive_timeout = 60s
deadlock_timeout = 3s
log_duration = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d'

 

啟動數據庫

/usr/local/pgsql/bin/pg_ctl -D /data/pgsql_1921/pgdata/ -l /data/pgsql_1921/pg_log/postgres.log start

 

連接1921端口PG實例:

$ psql -h localhost -p 1921
psql (12.3)
Type "help" for help.

postgres=#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM