CentOS7 自动化安装PG12.3

#! /bin/sh

# 准备工作
	# 预先创建 /tools 目录规划
	mkdir -p /tools
	# 将 postgresql-12.3.tar.gz 上传到 /tools 下


# 卸载残留的 rpm 包
for rpm_file in `rpm -qa | grep postgresql`
do
	rpm -e $rpm_file
done

# 安装 rpm 包
yum -y install coreutils glib2 lrzsz mpstat dstat sysstat e4fsprogs xfsprogs ntp readline-devel zlib-devel openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl-devel perl-ExtUtils* openldap-devel jadetex  openjade bzip2 

# 目录规划
#/postgresql/
#	​ |–> pgsql-12
#	​ |–> pgsql 软连接到 pgsql12


# 创建用户
userdel -r pgsql
useradd pgsql

# 创建目录
mkdir -p /postgresql/pgsql-12
ln -s /postgresql/pgsql-12 /postgresql/pgsql



# 解压安装包
tar zxvf /tools/postgresql-12.3.tar.gz -C /postgresql
chmod -R 755 /postgresql/postgresql-12.3

# 编译安装
cd /postgresql/postgresql-12.3
./configure --prefix=/postgresql/pgsql --with-python && make world -j 8  && make install-world
chown -R pgsql.pgsql /postgresql

su - pgsql
cd /postgresql/pgsql
mkdir -p {
     data,pg_log,archive_log}

# vim ~/.bash_profile 追加
cat >> ~/.bash_profile <<EOF
export PS1="[\u@\h \w]\$"
export PGDATA=/postgresql/pgsql/data
export LANG=en_US.utf8  
export PGHOME=/postgresql/pgsql 
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH  
export PATH=$PGHOME/bin:$PATH:.  
export DATE=`date +"%Y%m%d%H%M"`  
export MANPATH=$PGHOME/share/man:$MANPATH  
export PGUSER=postgres  
export PGDATABASE=postgres  
EOF

source ~/.bash_profile
initdb -D $PGDATA -E UTF8 --locale=C -U postgres  

# 配置文件 $PGDATA/postgresql.conf 中追加
cat >> $PGDATA/postgresql.conf <<EOF
listen_addresses = '*'  
port = 5432
max_connections = 200  
tcp_keepalives_idle = 60  
tcp_keepalives_interval = 10  
tcp_keepalives_count = 10  
shared_buffers = 512MB  
dynamic_shared_memory_type = posix  
vacuum_cost_delay = 0  
bgwriter_delay = 10ms  
bgwriter_lru_maxpages = 1000  
bgwriter_lru_multiplier = 10.0  
bgwriter_flush_after = 0   
old_snapshot_threshold = -1  
backend_flush_after = 0   
wal_level = replica  
synchronous_commit = off  
full_page_writes = on  
wal_buffers = 16MB  
wal_writer_delay = 10ms  
wal_writer_flush_after = 0   
checkpoint_timeout = 30min   
max_wal_size = 2GB  
min_wal_size = 128MB  
checkpoint_completion_target = 0.05    
checkpoint_flush_after = 0    
random_page_cost = 1.3   
log_destination = 'syslog'  
logging_collector = on  
log_truncate_on_rotation = on  
log_checkpoints = on  
log_connections = on  
log_disconnections = on  
log_error_verbosity = verbose  
autovacuum = on  
log_autovacuum_min_duration = 0  
autovacuum_naptime = 20s  
autovacuum_vacuum_scale_factor = 0.05  
autovacuum_freeze_max_age = 1500000000  
autovacuum_multixact_freeze_max_age = 1600000000  
autovacuum_vacuum_cost_delay = 0  
vacuum_freeze_table_age = 1400000000  
vacuum_multixact_freeze_table_age = 1500000000  
datestyle = 'iso, mdy'  
timezone = 'PRC'  
lc_messages = 'C'  
lc_monetary = 'C'  
lc_numeric = 'C'  
lc_time = 'C'  
default_text_search_config = 'pg_catalog.english'  
shared_preload_libraries='pg_stat_statements' 
EOF

sed -i '/log_directory/d'  $PGDATA/postgresql.conf
echo "log_directory = '/postgresql/pgsql/pg_log'" >> $PGDATA/postgresql.conf


#  pg_hba.conf修改
echo "host all all 0.0.0.0/0 md5 " >>  $PGDATA/pg_hba.conf

# 启动数据库
pg_ctl start 

# 修改密码
psql -c "alter user postgres with ENCRYPTED  password 'passwd'"

你可能感兴趣的:(PostgreSQL,Centos7)