本文作者:邹阳
详细参考 https://gitee.com/opengauss/docs 中的备份与恢复篇
https://gitee.com/opengauss/docs/blob/master/content/zh/docs/Administratorguide/%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D.md
以下文字摘至官方文档。
openGauss部署成功后,在数据库的运行过程中,往往会遇到各种问题及异常状态。
openGauss提供了gs_basebackup工具用作基础的物理备份。它可以实现对数据文件的二进制拷贝备份,其实现原理使用了复制协议。
远程执行gs_basebackup时,需要使用系统管理员账户。
Ø备份的前提条件
1.备份客户端可以正常连接openGauss数据库;
2.pg_hba.conf中需要配置允许复制链接,且该连接必须由一个系统管理员建立;
3.如果xlog传输模式为stream模式,则需要配置max_wal_senders的数量, 至少有一个可用;
4.如果xlog传输模式为fetch模式,则需要把wal_keep_segments参数设置得足够高,确保在备份完毕之前日志不会被移除;
Tips :
1.gs_basebackup 支持全量备份,不支持增量;
2.gs_basebackup 支持简单备份格式和压缩备份格式;
3.gs_basebackup 在备份包含绝对路径的表空间时,不能在同一台机器上进行备份,会产生冲突;
4.若打开增量检测点功能且打开双写, gs_basebackup也会备份双写文件;
5.若pg_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg_xlog目录下;
6.备份过程中收回用户的备份权限,可能导致备份失败,或者备份数据不可用。
一、环境简介
两台主机分别为 node01 node02 分别安装opengauss 2.0 opengauss2.0.1 数据库
二、主库中创建新数据库,并备份恢复至备库
CREATE DATABASE mydb WITH ENCODING ‘GBK’ template = template0;
使用该数据库并创建表空间、表
查看当前使用的数据库
select current_catalog,current_database();
列出所有的数据库
\l
\c <要使用的数据库名称> 连接mydb
\db 查询对应的数据库下的表空间
创建表空间
create tablespace mytbs RELATIVE LOCATION ‘tablespace/mytbs’;
创建测试表
create table table_in_mytbs_ts (col1 char(10)) tablespace mytbs;
gs_basebackup备份参数介绍
在主库修改pg_hba.conf 配置添加配置
host replication rep1 172.16.100.0/24 sha256
修改参数后重启数据库
创建复制用户
–创建备份用户并放开权限(远程执行gs_basebackup时,需要使用系统管理员账户)
postgres=# create user rep1 with sysadmin identified by ‘huawei@1234’;
在备库创建备份
su - omm
gs_basebackup -D /home/omm/gs_bak -h 172.16.100.26 -p 26000 -U rep1 -W
可以看到备份其实是将目录做了拷贝
本机恢复
首先删除mydb
drop database mydb
将备份从备机传至主机
将数据库原目录改名,并将备份目录改成原数据库目录的名字
启动数据库
验证原数据库已经找回
备机恢复
修改备份文件中的postgresql.conf IP地址
备库停止数据库,并将主库的备份文件挪到数据库目录下
修改目录,将数据库原目录改名,将备份目录改名为数据库目录
启动数据库,验证成功
小贴士,实践验证,opengauss 2.0 中创建的库,可以在opengauss 2.0.1 中正常打开。文中的node01 为2.0 node02 为 2.0.1