赞
踩
两台服务器,操作系统Centos7
主服务器IP:192.168.11.6
备服务器IP:192.168.11.7
我们这里使用rpm的方式安装,可以根据操作系统下载对应的安装包
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
大功告成!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。