# https://blog.csdn.net/2401_82795112/article/details/135979975
-------------------------------------------------------------------------------------------------
1、创建安装目录、数据目录
mkdir -p /data/pg11 /data/pg11-data
-------------------------------------------------------------------------------------------------
2、安装二进制文件
cd /data/postgres11-install
tar -xzf postgres11-install/pg11.tgz -C /data
ll /data/pg11
# 解压后 /data/pg11 目录内容如下
drwxr-xr-x 2 root root 4096 Jan 24 11:01 bin
drwxr-xr-x 4 root root 4096 Jan 24 11:01 include
drwxr-xr-x 4 root root 4096 Jan 24 11:01 lib
drwxr-xr-x 4 root root 35 Jan 24 11:01 share
-------------------------------------------------------------------------------------------------
3、创建用户、用户组
groupadd postgres
useradd -g postgres postgres
# 为了安全考虑 PostgreSQL 不允许使用 root 用户操作数据库,因此需要创建 postgres 作为超级用户
# 可以为 postgres 设置密码
# passwd postgres 或 echo <new_password> | passwd --stdin postgres
-------------------------------------------------------------------------------------------------
4、修改目录属主、属组
chown -R postgres:postgres /data/pg11-data
ll /data
drwxr-xr-x 6 root root 56 Jan 24 12:40 pg11
drwxr-xr-x 2 postgres postgres 6 Jan 25 10:39 pg11-data
-------------------------------------------------------------------------------------------------
5、切换用户
su - postgres
-------------------------------------------------------------------------------------------------
6、修改环境变量
cat >> /home/postgres/.bash_profile <<EOF
export PATH=/data/pg11/bin:$PATH
export MANPATH=/data/pg11-data/share/man:$MANPATH
export LANG=en_US.utf8
export DATE="$(date +"%Y-%m-%d %H:%M:%S")"
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
EOF
############################################################################
tail /home/postgres/.bash_profile && source /home/postgres/.bash_profile
-------------------------------------------------------------------------------------------------
7、初始化数据库
initdb -D /data/pg11-data
-------------------------------------------------------------------------------------------------
8、启动服务、查看状态
pg_ctl -D /data/pg11-data -l /home/postgres/logfile_$(date +"%Y%m%d_%H%M") start
netstat -nltp | grep 5432
或
ss -nltp | grep 5432
-------------------------------------------------------------------------------------------------
9、设置开机启动
# 部分操作系统存在问题,可以考虑在 rc.local 中添加启动命令
# 需要切换至 root 用户,执行完成后切换回 postgres 用户执行后续步骤
cp postgres11-install/postgres /etc/init.d/postgres
sed -i 's#prefix=/usr/local/pgsql#prefix=/data/pg11#g' /etc/init.d/postgres
sed -i 's#PGDATA="/usr/local/pgsql/data"#PGDATA="/data/pg11-data"#g' /etc/init.d/postgres
chmod +x /etc/init.d/postgres
grep -E "^prefix|^PGDATA" /etc/init.d/postgres
chkconfig --add postgres
chkconfig postgres on
chkconfig --list 2>/dev/null | grep postgres
# 完成上述操作后,部分操作系统下服务启动、停止、查看状态也可以使用:
systemctl start postgres
systemctl stop postgres
systemctl status postgres
-------------------------------------------------------------------------------------------------
10、设置PostgreSQL默认用户postgres的密码
psql -c "ALTER USER postgres WITH PASSWORD 'new_password'"
psql -c "show password_encryption"
⚠️ 若使用二进制文件部署,在执行以上命令时可能报错:libreadline.so.6: cannot open shared object file: No such file or directory,需要临时切换至 root 用户执行以下命令
ll /lib64/ | grep libreadline
ln -s /lib64/libreadline.so.7.0 /lib64/libreadline.so.6
🔔 若选择主从模式,主库、从库所在服务器都需要执行以上步骤
-------------------------------------------------------------------------------------------------
11、配置主从模式 - 主库
- 编辑 /data/pg11-data/pg_hba.conf,在指定位置添加以下内容
vi /data/pg11-data/pg_hba.conf
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all <从节点IP>/32 trust
# 若需要启用密码认证,需要将所有 trust 改为 md5 后重启服务
- 编辑 /data/pg11-data/postgresql.conf,修改为以下内容
vi /data/pg11-data/postgresql.conf
listen_addresses = '*'
wal_level = replica
max_connections = 10000
archive_mode = on
archive_command = 'cp %p /data/pg11/archive/%f'
max_wal_senders = 10
wal_sender_timeout = 120s
hot_standby = on
#wal_keep_size = 1000 # 11.6 版本不支持
#max_slot_wal_keep_size = 10 # 11.6 版本不支持
- 重启主库服务
pg_ctl -D /data/pg11-data -l /home/postgres/logfile_$(date +"%Y%m%d_%H%M") restart
# 完成从库配置后,在主库查看集群状态
psql -x -d postgres -c "select * from pg_stat_replication"
-------------------------------------------------------------------------------------------------
12、配置主从模式 - 从库
# 切换至 root 用户
cd /data && mkdir tmp && mv pg11-data/* tmp
# 切换至 postgres 用户
pg_basebackup -h <主库IP> -p 5432 -U postgres -P -X stream -D /data/pg11-data -R
t
# 若直接执行 pg_basebackup 会报错:pg_basebackup: directory "/data/pg11-data" exists but is not empty
# 需要将pg11-data目录下文件全部移走再执行 pg_basebackup,然后将postmaster.pid和postmaster.opts两个文件再移回去,最后重启即可
-------------------------------------------------------------------------------------------------
13、测试主从数据同步
# 主库服务器执行
psql -c "create database test"
psql -c "\l"
############################################################################
# 从库服务器执行
psql -c "\l"
# 若执行 psql -c "create database test1" 会报错:
# ERROR: cannot execute CREATE DATABASE in a read-only transaction
-------------------------------------------------------------------------------------------------
14、测试主从切换
# 主库服务器执行,模拟故障
pg_ctl stop -m fast
# 从库服务器执行
psql -c "select pg_is_in_recovery()" # 查看是否处于恢复模式
pg_ctl -D /data/pg11-data promote # 停止恢复模式,切换为主库
psql -c "select pg_is_in_recovery()"
# pg_ctl promote:使从库停止恢复模式,并升级为主库
# 若需要恢复回去,需要重新执行 2.14 的步骤
-------------------------------------------------------------------------------------------------
15、设置备份任务
# 主库服务器执行,切换至 root 用户
mkdir /data/backup && touch /data/backup/backup.sh
cat > /data/backup/backup.sh <<EOF
#!/bin/bash
data_time=\$(date +%F_%H)
save_time=7
/data/pg11/bin/pg_dumpall -U postgres -c --if-exists -x > /data/backup/\${data_time}postgres.sql
find /data/backup -maxdepth 1 -name "*.sql" -mtime +\${save_time} | xargs rm -rf
EOF
############################################################################
echo "00 */6 * * * bash /data/backup/backup.sh" > /var/spool/cron/root
crontab -l
行者Sun1989
- 粉丝: 3682
- 资源: 3
最新资源
- 计算机二级考试全面备考指南与学习心得
- 树木的信息数据集(德国罗斯托克地区树木的信息)
- Python爬虫基础知识与实践指南
- 连接ESP32手表来做验证20241223-140953.pcapng
- 有源电力滤波器,APF,有源电力滤波器仿真,电力电子仿真,无差拿控制,谐波补偿 提供参考文献
- 某平台广告投入分析与销售预测
- 国际象棋桌子检测6-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- 永磁同步电机参数辨识模型,在线辨识,离线辨识,电参数机械参数均可辨识,基于最小二乘法,滑模观测,电压注入,模型参考自适应等 机械参数在线 离线 ,电气参数在线 (三种方法,最小二乘和mras以及卡尔
- dbeaver-ce-24.3.1-x86-64-setup.exe
- 基于粒子群的ieee30节点优化、配电网有功-无功优化 软件:Matlab+Matpowre 介绍:对配电网中有功-无功协调优化调度展开研究,通过对光伏电源、储能装置、无功电源和变压器分接头等设备协调
- 基于ssm的高校教务管理系统设计与实现
- VirtualGL-2.6.5.x86-64.rpm
- 艾利和iriver Astell&Kern SP3000 V1.30升级固件
- turbovnc-2.2.6.x86-64.rpm
- Labview Modbus-Tcp和西门子全糸列pLC通讯所有数据类型均能读写,速度快,使用在多个项目上,运行稳定,可以扩展到其它品牌PLc,上位机程序一样,只是PLC程序稍微变动一下,上下位机源
- 国际象棋检测10-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈