当前位置:   article > 正文

PostgreSql数据库主备安装_192.168.11.7

192.168.11.7

一、环境准备:

两台服务器,操作系统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初始化。

  1. 切换用户
  2. su - postgres
  3. 初始化data
  4. /usr/pgsql-10/bin/initdb -D /u01/pgsql/10/data

3、修改配置文件。

  1. 重新指定环境变量,将/var/lib修改为/opt
  2. vi .bash_profile
  3. 编辑完环境变量文件后,运行如下命令使环境变量生效
  4. . .bash_profile
  5. 修改配置文件
  6. vi /u01/pgsql/10/data/postgresql.conf
  7. 将synchronous_standby_names的值改为备服务器的主机名,如备服务器上配置为主服务器的主机名

4、数据库配置。

  1. 切换到root用户后编辑postgresql-10.service
  2. vi /lib/systemd/system/postgresql-10.service
  3. Environment指定到/u01/pgsql/10/data目录
  4. 让服务生效
  5. systemctl daemon-reload
  6. 设置开机自启
  7. systemctl enable postgresql-10
  8. 设置权限
  9. chown -R postgres:root /u01/pgsql/10/data
  10. 启动数据库
  11. systemctl start postgresql-10
  12. 修改postgres数据库密码
  13. su -u postgres psql
  14. ALTER USER postgres WITH PASSWORD 'postgresPassword!';
  15. 如果防火墙是开启的,就需要开放端口
  16. firewall-cmd --zone=public --add-port=5432/tcp --permanent
  17. 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。

  1. #在最后新增
  2. 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

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

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

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

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


2、新增定时任务

a、更新crontab

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

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

/bin/systemctl restart crond.service

 


大功告成!

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号