postgresql 安装
1.下载软件包
下载安装包网址
https://www.postgresql.org/
使用rpm方式安装
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装PostgreSQL 12客户端
yum install -y postgresql12
安装PostgreSQL 12服务端
yum install postgresql12-server
离线安装,在外网环境的同系统机器上执行
yum install postgresql12 --downloadonly --downloaddir=.
yum install postgresql12-server --downloadonly --downloaddir=.
初始化实例及服务管理
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12
systemctl stop postgresql-12
/usr/pgsql-12/bin/pg_ctl start
/usr/pgsql-12/bin/pg_ctl stop -m smart/fast/immediate
配置修改及客户端连接
vim /var/lib/pgsql/12/data/postgresql.conf
监听IPV4的所有IP
listen_addresses='0.0.0.0'
vim pg_hba.conf
host all all 0.0.0.0/0 md5
停止防火墙
systemctl stop firewalld
第2个实例的创建
拷贝并修改service文件中PGDATA路径,如/var/lib/pgsql/12/data1/
cp /usr/lib/systemd/system/postgresql-12.service /usr/lib/systemd/system/db02.service
初始化数据库,并修改数据库端口,如5433
/usr/pgsql-12/bin/postgresql-12-setup initdb db02
systemctl enable db02
systemctl start db02
生产环境数据库安装
选择硬件、存储及文件系统
调整系统内核参数
设置系统资源限制
设置SELINUX和防火墙
源码编译安装数据库
设置用户环境变量
手工初始化实例(initdb)
设置数据库参数
配置数据库定时备份
硬件、存储及文件系统选择
磁盘推荐SSD > 机械磁盘
cpu关闭numa
存储阵列级别推荐: raid10 > raid5
使用逻辑卷LVM
文件系统选择: xfs > ext4
多网卡绑定,分别连接到不同的交换机上
系统内核参数调整
推荐设置,支持系统 CentOS 6, 7
vim /etc/sysctl.conf
参数 | 说明 |
---|---|
kernel.sem = 250 162500 250 650 | |
kernel.shmall = 107374182 | # 共享内存页数,linux默认共享内存页是4K,所以需要大于等于shmmax/4KB |
kernel.shmmax = 274877906944 | # 共享内存最大值,单位字节 |
Kernel.shmmni = 819200 | # 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段 |
vm.nr_hugepages= | # 多少个2M的内存页,若设置需要大于数据库分配的共享内存 |
vm.swappiness=0 | # 不回收计算内存,回收非计算内存 |
vm.overcommit_memory=2 | # 默认0,申请内存可以超过物理内存总数。oom-killer 杀进程。2不要超分配的策略。 |
vm.overcommit_ratio=50 | # 分配内存不能超过,物理内存*百分比+swap 128G 16G 85%左右比较合适 最多分配124GB |
vm.dirty_background_ratio=1 | # 超过1% 在后台刷 |
vm.dirty_ratio=2 | # 超过2%开始刷 |
net.ipv4.tcp_tw_reuse=1 | # 开启tcp连接复用功能,允许time_wait sockets重新用于新的TCP连接 |
net.ipv4.tcp_tw_recycle=1 | # 开启tcp连接中time_wait sockets的快速回收 |
net.ipv4.tcp_timestamps=0 | # 时间戳用于避免序列号的饶卷,但如果客户端和服务器端均开启可能导致不能建立tcp连接 |
系统资源限制设置
vim /etc/security/limits.conf
* soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
-- vim /etc/security/limits.d/20-nproc.conf
SELINUX和防火墙设置
selinux建议禁用
vi /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
OS防火墙
建议按业务场景设置,不需要就先删除所有策略,并关闭服务
/sbin/iptables -P INPUT ACCEPT # 设置默认接受所有请求
/sbin/iptables -F # 清除防火墙规则
或直接关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
源码编译安装数据库
- 下载软件
- 方式一
postgresql下载地址
- 方式二
wget https://www.postgresql.org/ftp/source/v10.7/postgresql-10.7.tar.gz
-
安装系统依赖包
#yum groupinstall -y "Development tools" #yum install -y bison flex readline-devel zlib-devel gcc
-
编译安装和设置软链
#tar -zxf /opt/postgresql-10.7.tar.gz #cd postgresql-10.7 #./configure --prefix=/opt/pg10/ #gmake world #gmake install-world #ln -s /opt/pg10 /usr/local/pgsql
-
创建操作系统用户和数据目录
groupadd -g 1000 postgres useradd -g 1000 -u 1000 postgres echo "postgres" |passwd --stdin postgres mkdir -p /database/pg10/{pg_root,pg_tbs} chown -R postgres.postgres /database/pgl0 /usr/local/pgsql
-
配置环境变量
#su - postgres #vi /home/postgres/.bash_profile export PGPORT=5432 export PGUSER=postgres export PGDATA=/database/pgl0/pg_root export LANG=en_US.utf8 export PGHOME=/usr/local/pgsql export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib export PATH=$PGHOME/bin:$PATH export MANPATH=$PGHOME/share/man:$MANPATH alias rm='rm -i' alias ll='ls -lh' #source /home/postgres/.bash_profile
-
初始化数据目录
/usr/local/pgsql/bin/initdb -D /database/pgl0/pg_root -E UTF8 --locale=C -U postgres -W
-
配置pg_hba.conf
#在文件下面添加下面两行 host all all 0.0.0.0/0 md5 host replication repuser 0.0.0.0/0 md5
-
日常命令
- 启停数据库
##启动 #su – postgres #/usr/local/pgsql/bin/pg_ctl -D /database/pgl0/pg_root start 或者 #pg_ctl start ##停止 #su – postgres #pg_ctl stop
- 登录数据库
##本地登录 #su – postgres #psql psql (10.7) Type "help" for help. postgres=# ##远程登录 #su – postgres #psql -Upostgres -h10.204.23.83 -p5234
- 启停数据库