很多情况下,都是权限原因导致的报错,为了避免这类问题,需要切换几次用户。
完全卸载PG数据库
sudo systemctl stop postgresql ### 关闭数据库服务
sudo systemctl status postgresql ### 确认数据库服务处于关闭状态
sudo apt-get purge 'postgresql-*' ### 卸载数据库
sudo apt-get autoremove 'postgresql-*' ### 卸载数据库依赖包
sudo rm -r /etc/postgresql/ ### 删除配置文件
sudo rm -r /etc/postgresql-common/ ### 删除配置文件
sudo rm -r /var/lib/postgresql/ ### 删除数据目录
sudo userdel -r postgres ### 删除用户
sudo groupdel postgres ### 删除用户组
安装PG数据库并配置主从(主库操作)
sudo apt install postgresql postgresql-contrib ### 安装数据库及其依赖包
sudo su root ### 切换权限为root
su postgres ### 切换权限为postgres
psql ### 进入数据库
ALTER USER postgres WITH PASSWORD 'postgres'; ### 修改postgres用户密码
create role replica login replication encrypted password 'replica'; ### 创建replica用户,用户备库访问主库
create user admin superuser password 'admin123'; ### 创建超级用户admin
exit ### 退出数据库
systemctl stop postgresql ### 关闭数据库服务
systemctl status postgresql ### 确认数据库服务处于关闭状态
exit ### 恢复权限为root
mkdir /opt/postgres/data -p ### 创建数据存放目录
rsync -av -progress /var/lib/postgresql/12/main/ /opt/postgres/data/ ### 同步数据,避免操作影响原数据
mv /var/lib/postgresql /var/lib/postgresql.bak ### 备份数据
vim /etc/postgresql/12/main/postgresql.conf ### 修改PG数据库配置文件
data_directory = ‘opt/postgres/data’
listen_addresses = ‘*’
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
wal_keep_segments = 64
archive_mode = on
archive_command = ‘cp %p /opt/postgresql/data/pg_archive/%f’
max_connections = 1000 ### 从库必须大于主库
synchronous_commit = off
synchronous_standby_names = ‘*’
wal_sender_timeout = 60s
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
:wq ### 保存并退出
mkdir -p /opt/postgresql/data/pg_archive ### 手动创建
chmod -R 750 /opt/postgresql/data/pg_archive ### 修改权限
vim /etc/postgresql/12/main/pg_hba.conf ### 开启远程
host replication admin *.*.*.*/32 trust ###(此处*.*.*.*为从库ip)
host all all 0.0.0.0/0 md5
:wq ### 保存并退出
systemctl start postgresql ### 启动PG数据库
systemctl status postgresql ### 查看数据库状态
systemctl enable postgresql ### 开机自启PG数据库
安装PG数据库并配置主从(从库操作)
sudo apt install postgresql postgresql-contrib ### 安装数据库及其依赖包
sudo su root ### 切换权限为root
su postgres ### 切换权限为postgres
psql ### 进入数据库
ALTER USER postgres WITH PASSWORD 'postgres'; ### 修改postgres用户密码
exit ### 退出数据库
exit ### 切换权限为root
systemctl stop postgresql ### 关闭数据库服务
systemctl status postgresql ### 确认数据库服务处于关闭状态
mkdir /opt/postgres/data -p ### 创建数据存放目录
rsync -av -progress /var/lib/postgresql/12/main/ /opt/postgres/data/ ### 同步数据,避免操作影响原数据
mv /var/lib/postgresql /var/lib/postgresql.bak ### 备份数据
rm -rf /opt/postgres/data/* ### 清空从库数据存储文件夹
cd /opt/postgres/data ### 进去数据存储目录
su postgres ### 切换权限为postgres
pg_basebackup -h *.*.*.* -p 5432 -U admin -Fp -Xs -Pv -R -D /opt/postgres/data ###基础备份(*.*.*.*位置根据实际情况输入ip)
vim /opt/postgres/data/standby.signal
standby_mode='on'
:wq ### 保存并退出
vim /etc/postgresql/12/main/postgresql.conf ### 编辑配置文件
data_directory = '/opt/postgres/data/'
primary_conninfo = 'host=*.*.*.* port=5432 user=admnin password=admin123'
recovery_target_timeline = 'latest'
max_connections = 1500
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
:wq ### 保存并退出
vim /etc/postgresql/12/main/pg_hba.conf
host all all 0.0.0.0/0 md5
:wq ### 保存并退出
exit ### 切换权限为root
systemctl restart postgresql ### 重启PG数据库
systemctl enable postgresql ### 开机自启PG数据库