postgres12数据库备份方式一

编译目的

本文章通过代码方式讲解Postgres数据库备份与还原。

常用备份方式

  • 流复制备份
  • 归档备份
  • SQL转储备份
  • 热备份

流复制备份

注意事项

  1. 需要准备2台或2台以上服务器。
  2. 应用程序写入数据是从数据库写入。
  3. 主数据写入数据会自动同步到数据库。

1.主服务器配置

#创建归档目录
mkdir -p /data/postgres_archivedir

#归档目录授权
chown postgres:postgres /data/postgres_archivedir

#给归档目前设置读写权限
chmod -R 700 /data/postgres_archivedir


#创建数据存储目录
mkdir -p /data/postgres_dbdata
#授权分组
chown postgres:postgres -R  /data/postgres_dbdata
chmod -R 700 /data/postgres_dbdata

#初始化数据库
su - postgres -c "/usr/local/postgres12/bin/initdb -D /data/postgres_dbdata"


#登录到postgres用户
su - postgres
#创建repl用户,密码设置为p@123456
createuser -p 15432 --replication -P -e repl
#配置postgres安全策略,wq保存
vi /data/postgres_dbdata/pg_hba.conf
#以下策略加到pg_hba.conf文件的97行下面,否则出现问题。
#需要将192.168.207.170和 192.168.207.171改成你的服务器IP
local   all             all                              md5
host    replication     repl      192.168.207.170/32     md5
host    replication     repl      192.168.207.171/32     md5

host    all             all             0.0.0.0/0         md5


#编辑postgres数据库配置文件
vi /data/postgres_dbdata/postgresql.conf
#添加以下内容

listen_addresses = '*'

port = 15432
wal_level = replica
synchronous_commit = on
full_page_writes = on
wal_log_hints = on
min_wal_size = 800MB
archive_mode = on
archive_command ='test ! -f /data/postgres_archivedir/%f && cp %p /data/postgres_archivedir/%f'
max_wal_senders = 10
#还原归档数据
#restore_command = 'cp /data/postgres_archivedir/%f %p'
#清除归档数据
#archive_cleanup_command='pg_archivecleanup /home/sure/mywork/archivedir %r'
#指明要恢复到时间,UTC时间差8小时,所以+08
#recovery_target_time='2022-01-11 14:35:12+08'

#退出postgres用户
exit
#重启postgres服务
systemctl restart postgresql

2.从服务器配置

注意实现

  1. 参考从服务器数据库及配置
#停止postgres服务
systemctl stop postgresql

#登录到postgres用户
su - postgres
#删除掉之前的数据库
rm -rf /data/postgres_dbdata/*
#将主服务器的数据库备份到从服务器,登录密码:p@123456 
#-p 连接端口
#-h ip地址
#-D 指定数据目录
#-U 指定连接用户
#-P 启用进度报告
#-v 启用详细模式
#-R 允许创建恢复配置:创建一个standby.signal文件,并将连接设置追加到数据目录下的postgresql.auto.conf
#-X 用于在备份中包含所需的预写日志文件(WAL 文件)。流的值表示在创建备份时流式传输 WAL
#-C 允许在开始备份之前创建由  -S 选项命名的复制槽
#-S 指定复制槽名称
#备份过程完成后,会创建一个 standby.signal,并将连接信息设置到postgresql.auto.conf文件中
pg_basebackup -p 15432 -h 192.168.207.170 -D /data/postgres_dbdata -U repl -P -v  -R -X stream -C -S pgstandby1


#查看连接是否追加
cat  /data/postgres_dbdata/postgresql.auto.conf

vi /data/postgres_dbdata/standby.signal
standby_mode = on

#编辑postgres配置文件
vi /data/postgres_dbdata/postgresql.conf
#添加以下内容
hot_standby = on
primary_conninfo = 'user=repl password=Vimicro host=192.168.207.170 port=15432 sslmode=disable sslcompression=0 gssencmode=disable krbsrvname=postgres target_session_attrs=any'
recovery_target_timeline = latest

#注释下面两行,同步数据过来包含这两项
#archive_mode = on
#archive_command ='test ! -f /data/postgres_archivedir/%f && cp %p /data/postgres_archivedir/%f'

exit

#开启服务
systemctl start postgresql

#查看从服务接收状态信息
su - postgres
psql -p 15432
\x
SELECT * FROM pg_stat_wal_receiver;
0 条评论
请不要发布违法违规有害信息,如发现请及时举报或反馈
还没有人评论呢,速度抢占沙发!