一、准备
1、创建系统用户postgres
useradd postgres
2、创建目录
mkdir -p /data/postgres/pgdata
mkdir /data/arch
chown -R postgres:postgres /data/
chmod -R 700 /data/postgres/pgdata
二、步骤
1、安装PG11
# Install the repository RPM:
--目前这种安装的yum源是没有11版本的 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
需要配置新的yum源:
cat << EOF > /etc/yum.repos.d/pgdg-11.repo
[pgdg11-archive]
name=PostgreSQL 11.22 RPMs for RHEL/CentOS 7
baseurl=https://yum-archive.postgresql.org/11/redhat/rhel-7-x86_64
enabled=1
gpgcheck=0
gpgkey=https://yum.postgresql.org/keys/RPM-GPG-KEY-PGDG
EOF
# Install PostgreSQL:
安装数据库服务
yum install -y postgresql11-server
安装扩展组件(选装)
yum install -y postgresql11-contrib.x86_64
2、修改/etc/sysctl.conf
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
fs.aio-max-nr = 1048576
net.ipv4.tcp_timestamps = 0
vm.overcommit_memory = 0
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_keepalive_time = 72
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 7
vm.zone_reclaim_mode=1
vm.dirty_background_bytes=102400000
vm.dirty_bytes=102400000
vm.dirty_expire_centisecs=10
vm.dirty_writeback_centisecs=10
vm.swappiness=0
3、使参数生效
sysctl -p
4、修改/etc/security/limits.conf
vim /etc/security/limits.conf
* soft nofile 1024000 * hard nofile 1024001 * soft nproc unlimited * hard nproc unlimited * soft core unlimited * hard core unlimited * soft memlock unlimited * hard memlock unlimited
5、修改/etc/security/limits.d/20-nproc.conf
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 40960
root soft nproc unlimited
三、必要配置文件
1、postgres用户环境变量
vim /home/postgres/.bash_profile
# 设置环境变量
export PGPORT=1921 # 端口不变
export PGHOME=/usr/pgsql-11
# 定义数据路径
export PGDATA=/data/postgres/pgdata
export PATH=$PGHOME/bin:$PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.UTF-8
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
2、修改PG启动文件
cp /usr/lib/systemd/system/postgresql-11.service /usr/lib/systemd/system/postgresql-11.service.bak
vim /usr/lib/systemd/system/postgresql-11.service
# 添加内容:
[Unit]
Description=PostgreSQL 11 database server
Documentation=https://www.postgresql.org/docs/11/static/
After=syslog.target
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
# 自己定义的数据路径
Environment=PGDATA=/data/postgres/pgdata
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
ExecStart=/usr/pgsql-11/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
3、开机自启
systemctl daemon-reload
systemctl enable postgresql-11
四、关闭透明大页
关闭透明页(OEL 6.x/7.x) (开了大内存页要关闭)
1.cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
2.cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
3.
vi /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
4.chmod +x /etc/rc.d/rc.local
5.重启服务器
reboot
6.cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
7.cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
五、同步从库
1、同步数据
nohup pg_basebackup -h 172.21.13.102 -p 1921 -U replica -D /data/postgres/pgdata -P -Xs 1>1.log 2>2.log &
screen -S prime_91 #创建prime_91后台
screen -ls #查看screen任务
pg_basebackup -h 172.21.13.102 -p 1921 -U replica -D /data/postgres/pgdata -P -Xs 1>1.log 2>2.log
screen -r prime_91 #进入prime_91后台
2、修改recovery.conf 文件
vi /data/postgres/pgdata/recovery.conf
standby_mode = 'on'
recovery_target_timeline = 'latest'
primary_conninfo = 'application_name=172.21.13.91 host=172.21.13.101 port=1921 user=replica password=PostGRESQL.replica keepalives_idle=60'
说明:
· application_name 本机IP
· host 上一级库的IP
3、验证主备同步
select * from pg_stat_replication;
六、开启大页(以下方式针对PG11)
1.确保
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
[root@xfzconpys0310 boot]# cat config-3.10.0-1160.el7.x86_64 |grep CONFIG_HUGETLB_PAGE
CONFIG_HUGETLB_PAGE=y
[root@xfzconpys0310 boot]# cat config-3.10.0-1160.el7.x86_64 |grep CONFIG_HUGETLBFS
CONFIG_HUGETLBFS=y
2.启动数据库进程(postgres用户下执行)
3.查询pg服务的pid
head -1 $PGDATA/postmaster.pid
128942
4.查询pg占用的内存大小
pmap 128942 | awk '/rw-s/ && /zero/ {print $2}'
207904072K
5.查看默认大页单位大小
grep ^Hugepagesize /proc/meminfo
6.Hugepagesize: 2048 kB
207904072 /2048 大约是101515.66,因此在这个示例中你至少需要 101516个大页面
7.设置/etc/sysctl.conf,增加如下配置
vm.nr_hugepages=101516
8.修改pg confg文件中的参数
添加 huge_pages=on
9.启动数据库
su - postgres
pg_ctl start -D $PGDATA #数据库能正常启动,大页生效
show huge_pages;
10.检查大页是否生效
grep HugePages /proc/meminfo
七、对接监控
1.等清洗到CMDB 完成后,对接监控 略
八、对接clup平台
已完成