PG学习日记(2)PG13.7部署standby库

后备服务器作为主服务器的数据备份,可以保障数据不丢,而且在主服务器发生故障后可以提升为主服务器继续提供服务。

环境:

IP

主机名

系统

数据库

111.111.111.221

pg13

centos 7.6

Postgresql 13.7

111.111.111.220

pg13standby

centos 7.6

Postgresql 13.7

1、主库参数配置

首先配置主机的postgresql.conf

vi /app/pgsql/13.7/data/postgresql.conf

listen_addresses = '*'
wal_level = replica   #replica = 9.6版本以前的archive和hot_standby --该级别支持wal归档和复制。
max_wal_senders = 10
max_replication_slots = 10
hot_standby = on # 主要用来备库配置,主库配置无影响
wal_keep_size = 0  #pg13后配置,之前是wal_keep_segments
wal_log_hints = on  #pg_rewind必须参数
full_page_writes = on

然后配置主机的pg_hba.conf

vi /app/pgsql/13.7/data/pg_hba.conf

host    replication     all             111.111.111.220/24      trust  #新增

2、安装PG备库

2.1、创建用户组

可以先删除默认创建的postgres用户

userdel -r postgres

然后创建用户组

groupadd -g 701 postgres

useradd -g 701 -u 701 -s /bin/bash -m postgres

这样的好处是用户home目录就会在/home/postgres下,否则默认是在/var/lib/pgsql下,

su - postgres

vi ~/.bashrc

添加下面变量

#For PostgreSQL

export PGHOME=/usr/pgsql-13

export PGDATA=/app/pgsql/13.7/data

export PGHOST=/app/pgsql/13.7/socket

export PGUSER=postgres

export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

export PATH=$PGHOME/bin:$PATH

2.2、修改数据库配置 --这里和主库保持一致,好像是没有强制要求

前面修改的数据库目录,这里需要创建相关目录,且要赋予权限

# mkdir /app

# chown postgres:postgres /app

# su - postgres

$ mkdir -p /app/pgsql/13.7/data

$ mkdir -p /app/pgsql/13.7/socket

$ mkdir -p /app/pgsql/13.7/tablespace      --自定义表空间目录

yum install postgresql13-libs-13.7-1PGDG.rhel7.x86_64.rpm

yum install postgresql13-13.7-1PGDG.rhel7.x86_64.rpm

yum install postgresql13-server-13.7-1PGDG.rhel7.x86_64.rpm

yum install postgresql13-contrib-13.7-1PGDG.rhel7.x86_64.rpm

装好四个安装包后就不要初始化了

2.3、修改数据存储目录在自启动脚本中的值

#  vi /usr/lib/systemd/system/postgresql-13.service

# Location of database directory

# Environment=PGDATA=/var/lib/pgsql/13/data/ #-- 注释掉这一句

Environment=PGDATA=/app/pgsql/13.7/data/  #-- 修正为实际值

3、使用pg_basebackup创建备机数据库

在备库上执行命令备份主库到备库

pg_basebackup -Upostgres -Fp -X stream -R -P -v -D $PGDATA -p 5432 -h 111.111.111.221

pg_basebackup -h 111.111.111.221 -R -p 5432 -Upostgres --password -X stream -Fp --progress -D $PGDATA

如果有自定义表空间那么要单独为自定义表空间指定目录,否则会报错,本次就是有一个自定义表空间test_tb,且在data目录内。

虽然命令是把data目录的表空间备份过去,但是test_db是自定义的,所以命令里也必须手工指定

原计划是和主库同样放在data目录内,结果执行报错

pg_basebackup -h 111.111.111.221 -R -p 5432 -Upostgres --password -X stream -Fp --progress -D $PGDATA -T /app/pgsql/13.7/data/test_tb=/app/pgsql/13.7/data/test_tb

说data目录非空。。。 好吧,那就在指定另一个目录,没有创建也可以,命令会自动创建

pg_basebackup -h 111.111.111.221 -R -p 5432 -Upostgres --password -X stream -Fp --progress -D $PGDATA -T /app/pgsql/13.7/data/test_tb=/app/pgsql/13.7/test_tb

3、启动备机数据库服务器

修改数据存储目录在自启动脚本中的值

#  vi /usr/lib/systemd/system/postgresql-13.service

# Location of database directory

# Environment=PGDATA=/var/lib/pgsql/13/data/ #-- 注释掉这一句

Environment=PGDATA=/app/pgsql/13.7/data/  #-- 修正为实际值

pg_ctl start

报错已经提示了是权限问题,但不是没有权限,而是权限设置不对,因为是解压过来的备份,所以权限是775,提示要700或750

查看源库是700,那就修改为700

成功启动,但是有信息[10164] HINT:  Future log output will appear in directory "log".

4、检查

登录主机查看流复制关系

psql -Upostgres -dpostgres -p5432
select * from pg_stat_replication;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值