【PostgreSQL】PostgreSQL重建与主库不一致的从库

宁睿  金牌会员 | 2022-8-11 00:03:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 567|帖子 567|积分 1709

 

场景:从库坏块,与主库不同步了
版本:PostgreSQL 12
1.关闭从库
  1. systemctl stop postgresql
复制代码
  1. killall -9 postgres
复制代码
2.检查postgresql.auto.conf的内容

pg_basebackup会使用到该配置文件中的内容,尤其是用于复制的用户名字和密码
  1. # cat /var/lib/postgresql/12/main/postgresql.auto.conf<br>​<br># Do not edit this file manually!<br>​<br># It will be overwritten by the ALTER SYSTEM command.<br>​<br>promote_trigger_file='/tmp/failover_5432.trigger'<br>recovery_target_timeline=latest<br>primary_conninfo='application_name=pgsql_0_node_1 host=192.168.56.110 port=5432 user=pg_repl password=dZeV9VoLV97CmXy8'
复制代码
3.移除数据从库的数据
  1. rm -rf /var/lib/postgresql/12/main/*
复制代码
4.从主库备份数据
  1. # pg_basebackup -h 192.168.56.110 -U pg_repl -Xs -P -R -D /var/lib/postgresql/12/main/<br><br>Password:<br><br>waiting for checkpoint
复制代码
其中:
-Xs :避免备份的数据两太大时,防止wal日志被删除
-P: 查看备份的进度
-R: 让pg_basebackup创建standby.signal文件,准备postgresql.auto.conf文件
pg_basebackup在开启备份之前会等待检查点。 如果pg_basebackup等待检查点的时间太长,可以在pg_basebackup后加上参数'-c fast';或直接在主库执行一个检查点:
  1. postgres=# CHECKPOINT;<br>​<br>CHECKPOINT
复制代码
4.修改目录属主

要保证目录的属主是正确的
  1. chown -R postgres.postgres /var/lib/postgresql/12/main/
复制代码
5.启动从库
  1. systemctl start postgresql
复制代码
启动后,从库应该自动跟主库同步了。
6.检查同步状态

在主库端执行
  1. SELECT * FROM pg_stat_replication;
复制代码
 
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表