postgresql安装部署文档

postgresql安装部署文档

1.工具准备

1.1软件版本

postgresql 13.6

1.2下载地址

postgresql-13.6_x86.tar.gz

1.3机器配置

最低要求2核4G,50G硬盘。
硬件配置随数据规模和用户数扩充

2.系统安装

2.1 【超级用户】必备软件安装

rpm -ivh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
yum -y install unixODBC

2.2. 【超级用户】删除postgres用户与用户组

ps -ef|grep postgres|grep -v grep|awk '{print $2}'|xargs kill -9
id postgres
userdel -r postgres
groupdel postgres

2.3. 【超级用户】删除postgres应用程序目录与数据目录,并重建

rm -rf /app/postgresapp
rm -rf /data/postgres
mkdir -p /app/postgresapp
mkdir -p /data/postgres

2.4 【超级用户】创建新用户和用户组

groupadd -g 1351 postgres
useradd -g 1351 -u 1351 -m -d /home/postgres -s /bin/bash postgres

chown -R postgres:postgres /app/postgresapp
chown -R postgres:postgres /data/postgres

2.5 【超级用户】app程序建立

-- 上传postgresql二进制文件包: postgresql-13.6.tar.gz 上传至
cd /home/postgres
tar xzvf postgresql-13.6.tar.gz
mv /home/postgres/postgresql-13.6 /app/postgresapp/
cd  /app/postgresapp/
ln -s postgresql-13.6 postgresql 
chown -R postgres:postgres /app/postgresapp/postgresql
chown -R postgres:postgres /app/postgresapp/postgresql-13.6
ll |grep postgres

2.6 【超级用户】启动脚本拷贝到对应位置

/bin/cp -f /app/postgresapp/postgresql-13.6/start-scripts/linux  /etc/init.d/postgresql   
chown -R postgres:postgres /etc/init.d/postgresql
chmod 740 /etc/init.d/postgresql  
ll  /etc/init.d/postgresql  

2.7 【postgres用户】配置postgres的参数

su - postgres
cd ~
echo '
export PGHOME=/app/postgresapp/postgresql
export PGDATA=/data/postgres/13.6/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5432
export MANPATH=$PGHOME/share/man:$MANPATH
export LD_LIBRARY_PATH=$PGHOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export PATH=$PGHOME/bin:$PATH
' >> ~/.bash_profile

cat .bash_profile

2.8 【postgres用户】初始化数据库

2.8.1 产生一个存储初始化密码的文件
touch ~/initpasswd
echo "123456" >~/initpasswd
#sed -i '1a 123456'  ~/initpasswd
cat ~/initpasswd
2.8.2 初始化数据库实例(密码 123456)
source /home/postgres/.bash_profile
initdb -D /data/postgres/13.6/data --pwfile=/home/postgres/initpasswd

2.9 【postgres用户】调整初始化参数

2.9.1 调整 pg_hba.conf
cat  /data/postgres/13.6/data/pg_hba.conf
sed -i '$a host    all             all             0.0.0.0/0               md5' /data/postgres/13.6/data/pg_hba.conf
cat /data/postgres/13.6/data/pg_hba.conf
2.9.2 调整 监听 postgresql.conf
cat /data/postgres/13.6/data/postgresql.conf|grep listen_addresses
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /data/postgres/13.6/data/postgresql.conf
cat /data/postgres/13.6/data/postgresql.conf|grep listen_addresses

cat /data/postgres/13.6/data/postgresql.conf|grep logging_collector
sed -i "s/#logging_collector = off/logging_collector = on/" /data/postgres/13.6/data/postgresql.conf
cat /data/postgres/13.6/data/postgresql.conf|grep logging_collector

cat /data/postgres/13.6/data/postgresql.conf|grep shared_buffers
sed -i "s/shared_buffers = 128MB/shared_buffers = 2048MB/g" /data/postgres/13.6/data/postgresql.conf
cat /data/postgres/13.6/data/postgresql.conf|grep shared_buffers

2.10 【超级用户】配置root 服务启动

exit
cat /etc/init.d/postgresql | grep "prefix=" && cat /etc/init.d/postgresql | grep "PGDATA="

sed -i 's!prefix=/usr/local/pgsql!prefix=/app/postgresapp/postgresql!' /etc/init.d/postgresql
sed -i 's!PGDATA="/usr/local/pgsql/data"!PGDATA="/data/postgres/13.6/data"!' /etc/init.d/postgresql
sed -i 's!PGUSER=postgres!PGUSER=postgres!' /etc/init.d/postgresql
cat /etc/init.d/postgresql | grep "prefix=" && cat /etc/init.d/postgresql | grep "PGDATA=" && cat /etc/init.d/postgresql| grep "PGUSER="

-- 为了使用开机自动启动时系统加载postgres用户的环境变量,需在启动shell中增加调用 /home/postgres/.bash_profile
sed -i '1a source /home/postgres/.bash_profile' /etc/init.d/postgresql
head /etc/init.d/postgresql |grep home

2.11 【超级用户】测试service 方式启动

2.11.1 测试root账号下的服务启动
service postgresql start 
service postgresql stop 
service postgresql start 
service postgresql restart 
2.11.2 配置自动启动
--  配置后建议 reboot 测试进程是否启动 
chkconfig --list postgresql  
chkconfig --add postgresql  
chkconfig --list postgresql  
chkconfig --level 35 postgresql on
chkconfig --list postgresql  
2.11.3 【略】测试postgres账号下的服务启动(需要输入OS端 postgres用户的密码)
su - postgres
service postgresql start 
service postgresql stop 
service postgresql start 
service postgresql restart 
exit

3. 增加oracle_fdw扩展

3.1 将oracle11g的客户端包拷贝到/home/postgres目录

3.2 【root账号】解压并调整oracle client 属主

cd /home/postgres
unzip instantclient-basic-linux.x64-11.2.0.4.0.zip 
unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
unzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

mkdir -p /app/oracle
mv instantclient_11_2 /app/oracle
cd /app/oracle
ll

-- 必须加上这句,否者make时报错
ln -s /app/oracle/instantclient_11_2/libclntsh.so.11.1 /app/oracle/instantclient_11_2/libclntsh.so

chown -R postgres:postgres /app/oracle/instantclient_11_2/
ll /app/oracle/instantclient_11_2/

3.3 【postgres账号】修改postgres的配置

su - postgres
echo '
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_BASE=/app/oracle/instantclient_11_2; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$PATH; export PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
' >> ~/.bash_profile

cat .bash_profile

3.4 重启postgresql数据库

source ~/.bash_profile
cd $PGDATA
pg_ctl -D $PGDATA -l logfile restart

4. 调整备份方面参数增加归档并调整内存参数

4.1 调整内存参数

sed -n '/shared_buffers.*=.*/p' $PGDATA/postgresql.conf
#sed -i "s/^.*shared_buffers.*=.*$/shared_buffers = 16384MB/" $PGDATA/postgresql.conf
sed -n '/shared_buffers.*=.*/p' $PGDATA/postgresql.conf

4.2 调整备份与归档方面参数

4.2.1 参数文件调整,开启归档、复制(复制与复制sender数量>0)和写入归档命令
cat $PGDATA/postgresql.conf |grep wal_level && cat $PGDATA/postgresql.conf |grep archive_mode 
sed -i 's/#wal_level = minimal/wal_level = replica/g' $PGDATA/postgresql.conf 
sed -i 's/#archive_mode = off/archive_mode = on/g' $PGDATA/postgresql.conf 
cat $PGDATA/postgresql.conf |grep wal_level && cat $PGDATA/postgresql.conf |grep archive_mode 

cat $PGDATA/postgresql.conf |grep archive_command 
sed -i "s/#archive_command = ''/archive_command = /" $PGDATA/postgresql.conf 
sed -i "s#archive_command = #archive_command = '\`test ! -f ../archivelog-active || cp -i %p ../archive\`'#g" $PGDATA/postgresql.conf 
cat $PGDATA/postgresql.conf |grep archive_command 

cat $PGDATA/postgresql.conf |grep wal_level &&  \
cat $PGDATA/postgresql.conf |grep archive_mode && \
cat $PGDATA/postgresql.conf |grep archive_command 
4.2.2 允许复制的参数调整
cat $PGDATA/postgresql.conf |grep max_wal_senders 
sed -i 's/#max_wal_senders = 0/max_wal_senders = 5/g'  $PGDATA/postgresql.conf
cat $PGDATA/postgresql.conf |grep max_wal_senders 
4.2.3 允许网络复制的安全参数调整
tail -10 $PGDATA/pg_hba.conf
sed -i '$a\host    replication     postgres        0.0.0.0/0                 md5'  $PGDATA/pg_hba.conf
cat $PGDATA/pg_hba.conf  |grep replication
4.2.4 检查所有参数调整
cat $PGDATA/postgresql.conf |grep wal_level &&  \
cat $PGDATA/postgresql.conf |grep archive_mode && \
cat $PGDATA/postgresql.conf |grep archive_command && \
cat $PGDATA/postgresql.conf |grep max_wal_senders 

cat $PGDATA/pg_hba.conf  |grep replication

4.3 postgres用户建立归档触发文件并重启开启归档功能

cd $PGDATA
mkdir ../archive
touch ../archivelog-active
pg_ctl restart -D $PGDATA -l logfile 

4.4 重启测试归档是否正常

ll ../archive
pg_ctl restart -D $PGDATA -l logfile 
ll ../archive

4.5 之后禁止psql 本地无密码登录

sed -i "s/trust/md5/" $PGDATA/pg_hba.conf
cat  $PGDATA/pg_hba.conf
pg_ctl reload

5. 建立标准模板库(带postgis/oracle_fdw扩展)

5.1 建立标准库

export PGPASSWORD="123456"
psql 
create database gis_template;
\c gis_template
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION oracle_fdw;
CREATE EXTENSION "uuid-ossp";
create extension postgres_fdw;
\q

6. 其他补充

6.1 应修改超级用户密码为更安全的密码

export PGPASSWORD="123456"
export PGUSER=postgres
psql 
alter user postgres with password 'xxxxxxxxx';

6.2 配置pg_stat_statements 用于性能分析

6.2.1 修改参数文件
sed -n '/shared_preload_libraries/p'  $PGDATA/postgresql.conf
sed -i "s/#shared_preload_libraries = ''/#shared_preload_libraries = 'pg_stat_statements'/g"  $PGDATA/postgresql.conf
sed -n '/shared_preload_libraries/p'  $PGDATA/postgresql.conf

sed -n '/track_io_timing/p'  $PGDATA/postgresql.conf
sed -i "s/#track_io_timing = off/track_io_timing = on/g"  $PGDATA/postgresql.conf
sed -n '/track_io_timing/p'  $PGDATA/postgresql.conf

sed -n '/track_activity_query_size/p'  $PGDATA/postgresql.conf
sed -i "s/#track_activity_query_size = 1024/track_activity_query_size = 2048/g"  $PGDATA/postgresql.conf
sed -n '/track_activity_query_size/p'  $PGDATA/postgresql.conf

sed -n '/port = 5432/p'  $PGDATA/postgresql.conf
sed -i "s/#port = 5432/port = 5432/g"  $PGDATA/postgresql.conf
sed -n '/port = /p'  $PGDATA/postgresql.conf
6.2.2 重启数据库
6.2.3 创建扩展
CREATE EXTENSION pg_stat_statements;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值