postgresql使用pg_basebackup备份与恢复

    postgresql可以使用pg_dump,pg_restore等命令来进行备份与恢复,那种情况不用停止pgsql服务,只需要执行备份恢复命令即可。

    今天介绍的这种备份方式,类似于文件系统的备份与恢复,它需要使用pg_basebackup命令来进行备份,这个命令可以将pgsql的数据文件备份为两个压缩文件:base.tar pg_wal.tar。本别是数据文件和归档文件,恢复的时候,需要设置按照归档文件来恢复。

    这种恢复,需要先把备份的压缩文件替换当前的数据文件,然后修改postgresql.conf,因为这个配置文件在data文件夹中,所以只能是在把base.tar解压到数据库当前数据位置,也就是我们默认初始化指定的数据保存位置data文件夹中,才能修改配置,在配置好归档设置以后,可以启动pgsql服务,进行启动恢复。

    在恢复过程中,会拷贝归档文件,进行数据恢复。

    恢复成功,也就是数据库服务启动成功。这个时候我们访问数据库,它是作为归档状态存在的,所以只能读,不能写操作。

   为了恢复数据库写操作,我们需要在命令行下执行切换数据库状态的指令。切换成功之后,才可以进行读写操作。

    下面实际演示这些流程:

    1、准备数据

    2、数据备份

    数据备份使用命令pg_basebackup -D backup -Ft -Pv

    其中-D指定数据备份的位置。这里指定的是当前文件夹下的backup,也可以指定绝对路径。

 

PostgreSQL中,`pg_basebackup` 是一个用于创建数据库集群基础备份的工具。通常情况下,`pg_basebackup` 需要连接到PostgreSQL数据库服务器,并且需要提供正确的用户名和密码。为了避免每次备份时都输入密码,可以通过以下几种方式实现免密码备份: ### 1. 使用 `.pgpass` 文件 `.pgpass` 文件可以存储数据库连接的用户名和密码,从而避免在每次连接时输入密码。步骤如下: 1. 创建一个 `.pgpass` 文件,通常位于用户主目录下: ``` touch ~/.pgpass ``` 2. 编辑 `.pgpass` 文件,添加以下内容: ``` hostname:port:database:username:password ``` 例如: ``` localhost:5432:postgres:myuser:mypassword ``` 3. 设置文件权限: ``` chmod 600 ~/.pgpass ``` ### 2. 使用 SSH 密钥认证 如果通过 SSH 进行备份,可以使用 SSH 密钥认证来避免输入密码: 1. 生成 SSH 密钥对(如果还没有): ``` ssh-keygen -t rsa ``` 2. 将公钥复制到远程服务器: ``` ssh-copy-id user@remote_host ``` 3. 使用 `pg_basebackup` 时,通过 SSH 进行连接: ``` pg_basebackup -D /path/to/backup -U username -P -v -w ``` ### 3. 使用 `pg_hba.conf` 配置免密码认证 在 PostgreSQL 服务器的 `pg_hba.conf` 文件中,可以配置免密码认证。例如,使用 `trust` 方式: 1. 编辑 `pg_hba.conf` 文件: ``` host all all 0.0.0.0/0 trust ``` 2. 重启 PostgreSQL 服务以使配置生效: ``` sudo systemctl restart postgresql ``` ### 4. 使用环境变量 可以通过设置环境变量 `PGPASSWORD` 来指定密码: ``` export PGPASSWORD=mypassword pg_basebackup -h remote_host -D /path/to/backup -U username -P -v ``` 通过以上方法,可以实现 `pg_basebackup` 备份时不用输入密码,从而提高备份的自动化和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值