Centos 7.5安装postgresql

安装概要

环境centos 7.4/5/6 x86_64,源码安装,安装过程没啥好说的,主要是配置服务器的参数;既然是服务器,咱还是要严谨点,再说linux COPY 速度也很快,体力活;

1 软件包安装

yum install net-tools -y
yum install sysstat -y
yum install iotop libXp redhat-lsb gcc gdb –y
yum install xorg-x11-xauth -y
yum install -y vim lrzsz tree wget gcc gcc-c++ readline-devel hwloc smartmontools
--db
yum install -y readline readline-devel openssl openssl-devel zlib zlib-devel numactl


2 启用大页

启用大页:

DB:

/etc/default/grub
net.ifnames=0 biosdevname=0 default_hugepagesz=2M hugepagesz=2M hugepages=81920 transparent_hugepage=never

执行生效命令

grub2-mkconfig -o /boot/grub2/grub.cfg

修改大页数量,不用重启生效:

sysctl -w vm.nr_hugepages=81920

复查:

cat /proc/cmdline
cat /sys/kernel/mm/transparent_hugepage/enabled
[root@kbj-db-1 ~]# grep -i hugepage /proc/meminfo
AnonHugePages:         0 kB
HugePages_Total:   81920
HugePages_Free:    44703
HugePages_Rsvd:    43036
HugePages_Surp:        0
Hugepagesize:       2048 kB


 3 更改内核参数

net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.panic_on_oops=1
net.core.somaxconn = 8192
net.ipv4.tcp_keepalive_time = 600  #默认7200
net.ipv4.ip_local_port_range = 10000 65000 #默认32768到61000 
net.ipv4.tcp_max_syn_backlog = 8192 #默认1024
net.ipv4.tcp_max_tw_buckets = 5000 #默认65535
#vm.nr_hugepages = 81920  #Db 启用81920*2M的大页
kernel.sem = 4096 128000 64  512
vm.swapniess=10

4更改用户限制

vi /etc/security/limits.conf
postgres soft nproc 16384
postgres hard nproc 16384
postgres soft nofile 65536
postgres hard nofile 65536


5修改环境变量(HISTORY)

vi /etc/profile

export.UTF8

export HISTTIMEFORMAT="%F %T "

export HISTSIZE=12000

ulimit -SHn 65536

6更改数据库服务器磁盘IO算法

磁盘的IO调度算法,根据实际情况调整,推荐cfq/noop


echo noop>/sys/block/sdb/queue/scheduler
cat /sys/block/sdb/queue/scheduler
[noop] deadline cfq
[root@kbj-db-1 ssd]# time dd if=/dev/zero of=/ssd/test.dmp bs=8192 count=12800000
^C记录了4873412+0 的读入
记录了4873412+0 的写出
39922991104字节(40 GB)已复制,35.9298 秒,1.1 GB/秒


7配置用户及目录

groupadd -g 106 ssl-cert
groupadd -g 107 postgres
useradd -g postgres -G ssl-cert -u 104 postgres
chown postgres:postgres -R /ssd
su - postgres
[postgres@kbj-db-1 ssd]$ mkdir /ssd/database/
[postgres@kbj-db-1 ssd]$ mkdir /ssd/database/pg114data
[postgres@kbj-db-1 ssd]$ mkdir /ssd/database/114arch
[postgres@kbj-db-1 ssd]$ mkdir /ssd/database/pg114home

8设置postgresql环境变量

export PGDATA=/ssd/database/pg114data
export PGARCH=/ssd/database/114arch
export PGHOME=/ssd/database/pg114home
export LD_LIBRARY_PATH=/ssd/database/pg114home/lib
export PATH=$PGHOME/bin:$PATH PATH=$PATH:$HOME/.local/bin:$HOME/bin

9安装

./configure根据实际情况选择

tar -xzvf postgresql-11.4.tar.gz
cd postgresql-11.4/
./configure --prefix=/ssd/database/pg114home --with-python --with-ossp-uuid --with-libxml --with-openssl --enable-dtrace --enable-debug
cd /ssd/postgresql-11.4/contrib/
make make install /ssd/postgresql-11.4/contrib/file_fdw
cd $PGHOME/bin/
 ./initdb -D $PGDATA
#连接数据库 
psql -p5432 -Upostgres -d postgres
#安装插件
create extension pg_buffercache ;
create extension pg_stat_statements;
CREATE EXTENSION file_fdw;
create extension pgrowlocks;
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;
 select current_database(),* from pg_extension
 select * from pg_available_extensions where name like '%uuid%';
 --扩展插件检查 
select * from pg_available_extensions where name in ( 'fuzzystrmatch','pg_visibility','tablefunc','amcheck','intarray','tsm_system_time','pgrowlocks','tcn','dict_int','unaccent','btree_gin','dict_xsyn','intagg','insert_username','dblink','lo','uuid-ossp','adminpack','bloom','postgres_fdw','pageinspect','pg_freespacemap','pg_prewarm','pgcrypto','pg_buffercache','file_fdw','btree_gist','xml2','citext','pg_stat_statements','refint','pgstattuple','timetravel','hstore','moddatetime','isn','cube','autoinc','pg_trgm','ltree','plpgsql','seg','tsm_system_rows','earthdistance')

10 更改日志文件默认配置

1 #启用DDL记录

log_statement=ddl


2日志保留91,

log_line_prefix = '%m %p %u %d %r %a '
log_rotation_age = 91d
log_rotation_size = 20MB
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'


3 启用文件权限,EFK使用

log_file_mode=0604

4 启用长时SQL记录

auto_explain.log_min_duration=10000
archive_mode = on
archive_command = 'cp %p /home/postgres/arch/%f'
wal_level =replica


       

猜你喜欢

转载自blog.51cto.com/snowhill/2475908