介绍:
PostgreSQL 是我们经常选择的数据库之一。它不仅仅是关系型数据库,同时也添加了对JSON数据的支持、全文检索功能,以及其他扩展。PostgreSQL 是我们经常选择的数据库之一。它不仅仅是关系型数据库,同时也添加了对JSON数据的支持、全文检索功能,以及其他扩展。
环境:centos7.9 (主库:A 从库:B)
postgresql版本:14.9
因为主库本来就有版本比较老,所以这次是更新版本以及搭建从库用于数据备份。
1. 数据备份
su postgres ##换postgres的身份
pg_dumpall -f /dball_backup ###指定路径存放
2. 主库搭建
卸载原版本数据库
yum remove postgresql*
rm -rf /usr/pgsql*
rm -rf /var/lib/pgsql #数据文件目录根据实际情况指定
userdel -r postgres
安装与配置
psql官方提供下载命令地址:PostgreSQL: Linux downloads (Red Hat family)
选择对应的操作系统和版本即可下载
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql14-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
启动后,进入数据库设置密码、以及创建从库角色:
su postgres
psql -U postgres
#修改postgres的登陆密码
ALTER USER postgres WITH PASSWORD 'your password';
# #创建 从库 replica 用户密码
CREATE ROLE replica login replication encrypted password 'replica';
打开pg_hba.conf,一般在路径:/var/lib/pgsql/14/data/,或者可以通过find / -name 文件名 进行查找。修改权限
vi /var/lib/pgsql/14/data/pg_hba.conf
## 添加从库网段
host all all 0.0.0.0/0 trust
# replication privilege.
local replication all peer
host replication replica B/24 md5
打开postgresql.conf,一般在路径:/var/lib/pgsql/14/data/,或者可以通过find / -name 文件名 进行查找。修改配置,可根据情况自行修改,以下为一些基础配置:
listen_addresses = '*'
wal_level = hot_standby
synchronous_commit = remote_write
# synchronous_commit 参考文档可选其他 on
max_wal_senders = 32 #同步最大的进程数量
wal_sender_timeout = 60s #流复制主机发送数据的超时时间
max_connections = 100 #最大连接数,从库的max_connections必须要大于主库的
修改完成后,重启数据库服务:
sudo systemctl restart postgresql-14.service
3. 从库搭建
下载与安装与主库相同,不做赘述(关于是否初始化的问题,因为本人遇到,不做初始化启动从库报错,所以初始化了)
从库配置
删除初始化的文件
rm -rf /var/lib/pgsql/14/data
从主库获取配置文件
## 从主库同步数据
pg_basebackup -D /var/lib/pgsql/14/data -h A -p 5432 -U replica -X stream -P
配置postgresql.conf
## 移除或注释 wal_level
wal_level = xxx
## 修改或添加以下
primary_conninfo = 'host=A port=5432 user=replica password=replica'
recovery_target_timeline = 'latest'
同一路径下,修改standby.signal 文件
standby_mode = on
## 声明从库
权限⭐非常重要
chown -R postgres.postgres /var/lib/pgsql/14/data
启动从库
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
4. 数据还原
将dball_backup文件4拷至主库指定路径
用psql命令进行还原,还原后,从库立马同步。
su postgres
psql -U postgres -f /dball_backup
完成后可自行测试,欢迎交流