PostgreSql数据库主备安装

一、环境准备:

两台服务器,操作系统Centos7

主服务器IP:192.168.11.6

备服务器IP:192.168.11.7

我们这里使用rpm的方式安装,可以根据操作系统下载对应的安装包

RPM resourceicon-default.png?t=M3C8http://www.rpmfind.net/linux/rpm2html/search.php?query=telnet&submit=Search+...&system=&arch=我下载的rpm包如下:

二、PostgreSql安装(两台服务器执行步骤相同)

1、连接上服务器,将安装包拷贝到/u01目录下,然后执行语句进行安装。

rpm -ivh postgresql10-10.7-2PGDG.rhel7.x86_64.rpm postgresql10-contrib-10.7-2PGDG.rhel7.x86_64.rpm postgresql10-libs-10.7-2PGDG.rhel7.x86_64.rpm postgresql10-server-10.7-2PGDG.rhel7.x86_64.rpm

2、data初始化。

切换用户
su - postgres

初始化data
/usr/pgsql-10/bin/initdb -D /u01/pgsql/10/data

3、修改配置文件。

重新指定环境变量,将/var/lib修改为/opt
vi .bash_profile

编辑完环境变量文件后,运行如下命令使环境变量生效
. .bash_profile

修改配置文件
vi /u01/pgsql/10/data/postgresql.conf
将synchronous_standby_names的值改为备服务器的主机名,如备服务器上配置为主服务器的主机名

4、数据库配置。

切换到root用户后编辑postgresql-10.service
vi /lib/systemd/system/postgresql-10.service
将Environment指定到/u01/pgsql/10/data目录

让服务生效
systemctl daemon-reload

设置开机自启
systemctl enable postgresql-10

设置权限
chown -R postgres:root /u01/pgsql/10/data

启动数据库
systemctl start postgresql-10

修改postgres数据库密码
su -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgresPassword!';

如果防火墙是开启的,就需要开放端口
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

 三、主备同步配置

1、主服务器(192.168.11.6)

a、在主服务器上创建用户replicator属于replication组。

create user replicator replication login connection limit 5 password 'password';

b、修改pg_hba.conf。

#在最后新增
host    replication      replicator      192.168.11.7/32          trust

2、备服务器(192.168.11.7)

pg_basebackup -h 192.168.11.6 -U replicator -F p -P -D /u01/pgsql/data -R

3、主备服务器:postgresql.conf配置文件中synchronous_commit值更新为local,synchronous_standby_names值更新为对方计算机名。

四、定时整理归档

主备服务器都可以进行定时归档处理。

1、创建备份脚本db_backup.sh

#!/bin/bash
cur_time=$(date '+%Y-%m-%d')
sevendays_time=$(date -d -7days '+%Y-%m-%d')
echo "Starting Backup PostgreSQL ..."
rm -rf "/u01/pgsql/10/backups/pgsql-backup.$sevendays_time.tar.gz"
PGPASSWORD="postgresPassword" /usr/pgsql-10/bin/pg_dump -h localhost -p 5432 -U postgres postgres > "/u01/pgsql/10/backups/postgres-$cur_time.bak"
tar zcvf "/u01/pgsql/10/backups/pgsql-backup.$cur_time.tar.gz" "/u01/pgsql/10/backups/postgres-$cur_time.bak"
echo "Rmove Backup *.bak..."
rm -rf "/u01/pgsql/10/backups/postgres-$cur_time.bak"
echo "Finish Backup ..."

创建后可以执行测试,执行成功后会在/u01/pgsql/10/backups下生成如下格式的文件:

pgsql-backup.2022-04-20.tar.gz

注:以上脚本是保留7天的数据,如果需要保留更久的数据可以更改第三行中的时间。第六行PGPASSWORD中是数据库密码,5432是端口,postgres是数据名。


2、新增定时任务

a、更新crontab

vi /etc/crontab

在文件最后新增信息:
# 每天凌晨三点整执行一次数据库备份命令脚本
0 3 * * * root /u01/pgsql/10/scripts/db_backup.sh

b、修改crontab的配置后需要重启crontab,使配置生效

/bin/systemctl restart crond.service

 


大功告成!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值