Ubuntu20.04安装Postgres主从备份

Ubuntu20.04安装Postgres主从备份

一.查看可安装的Postgres包

#列出相关的软件包,这里安装的是14版本
apt list | grep -w  postgresql-14 | tail -1

#下载Postgres
apt install -y postgresql-14/focal-pgdg

检查是否安装成功

#设置服务开机自启
systemctl enable postgresql.service

二.配置Postgres

# 切换用户并登录到数据库
sudo -u postgres psql

# 修改密码 SQL
alter user postgres password '<密码>';

# 添加用户并赋予replication和login权限(后面使用此用户来进行主从)
create role replica login replication encrypted password '<密码>';

# 查看postgresql的配置文件位置(用来方便后面的修改)
select name, setting from pg_settings where category='文件位置';

配置远程连接

# 允许远程登录
echo "host all all 0.0.0.0/20 md5" >> /etc/postgresql/14/main/pg_hba.conf 

# 允许所有地址监听postgres
echo "listen_addresses='*'" >> /etc/postgresql/14/main/postgresql.conf    

# 重启数据库
systemctl restart postgresql.service

修改主服务器的配置文件(postgresql.conf、pg_hba.conf)

vim /etc/postgresql/14/main/postgresql.conf
#主从设置为热血模式,流复制必选
wal_level=hot_standby

#流复制允许连接进程
max_wal_senders=2

# 默认参数,非主从配置相关参数,表示到数据库的连接数
wal_keep_size=1000
max_connections=1000

vim /etc/postgresql/14/main/pg_hba.conf

添加如下配置

 #允许从数据库连接主数据库去拖wal日志数据
host    replication     replica         <从节点IP>/24        scram-sha-256

重启服务

systemctl restart postgresql.service

三.配置从主机

首先进行第一步的安装操作。

然后配置从服务器

# 先停掉服务,备份下本地数据,并清除本地数据
systemctl stop postgresql

# 切换到postgres用户下,这样使用下面的备份语句的所属组和所属用户就是postgres 
su - postgres

# 复制一份,防止误操作
cp -r  /var/lib/postgresql/14/main /var/lib/postgresql/14/main.bak

# 清除本地数据
rm -rf /var/lib/pgsql/14/main

使用下面命令备份主数据库中的数据

pg_basebackup -h <主节点IP> -U replica -F p -X stream -P -R -D /var/lib/postgresql/14/main

-h –指定作为主服务器的主机。

-D –指定数据目录。

-U –指定连接用户。

-P –启用进度报告。

-v –启用详细模式。

-R–启用恢复配置的创建:创建一个standby.signal文件,并将连接设置附加到数据目录下

修改从服务器的配置文件(root用户下)

sudo vim /etc/postgresql/14/main/postgresql.conf
# 在备份的同时允许查询
hot_standby=on
# 流复制最大延迟 (可选)
max_standby_streaming_delay=30s
# 从向主报告状态的最大间隔时间 (可选)
wal_receiver_status_interval=10s
# 查询冲突时向主反馈 #默认参数,非主从配置相关参数,表示到数据库的连接数 (可选)
hot_standby_feedback=on
# 一般从库做主要的读服务时,设置值需要高于主
max_connections=1000

修改之后重启数据库

systemctl restart postgresql

查看是否成功,登录主数据库查看

#执行sql
select client_addr,sync_state from pg_stat_replication;

查看同步进程

热门相关:神秘总裁小小妻   隐婚试爱:娇妻,好甜!   重生之将门毒后   楚氏赘婿   宠物小精灵之庭树