发文章是为了证明自己真的掌握了一个知识,同时给他人带来帮助,如有问题,欢迎指正,祝大家万事胜意!
目录
前言
我的环境:
设备名称 | 设备型号 | 软件版本 |
虚拟机 | VMware | VMware-workstation-full-17.5.1 |
操作系统 | openEuler | openEuler 22.3LTS |
数据库 | openGauss | openGauss 5.0.0 |
需要的工具,大家不用现在下,后面用到了再下也可以,如果需要相关文件,可以评论,其实大多数都是可以去官网下的哈,因为我只能通过网盘给大家,文件又有点大,网盘的速度大家都是清楚的哈哈,所以还是推荐大家去官网,如果实在找不到可以找我
openGauss数据库备份恢复
1 实验介绍
1.1 关于本实验
本实验主要描述
openGauss
数据库支持的两种备份恢复类型、多种备份恢复方案,并能够在备
份和恢复过程中提供数据的可靠性保障机制。
1.2 实验目的
掌握
openGauss
数据库中逻辑备份与恢复方法;
掌握
openGauss
数据库物理备份与恢复的方法;
能够在备份和恢复过程中提供数据的可靠性保障机制。
2 实验前提
在对数据库进行备份前,对数据库进行如下操作:
步骤
1
切换到
omm
用户,以操作系统用户
omm
登录数据库主节点。
[root@node0 ~]# su - omm
Last login: Mon Apr 8 19:47:35 CST 2024 on tty1
Welcome to 5.10.0-153.12.0.92.oe2203sp2.x86_64
System information as of time: 2024年 04月 08日 星期一 20:18:18 CST
System load: 0.64
Processes: 204
Memory used: 42.8%
Swap used: 13.5%
Usage On: 25%
IP address: 192.168.28.131
Users online: 2
To run a command as administrator(user "root"),use "sudo <command>".
步骤
2
连接
openGauss
数据库。
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤
3
创建
customer_t1
表。
openGauss=# DROP TABLE IF EXISTS customer_t1;
DROP TABLE
openGauss=# CREATE TABLE customer_t1
openGauss-# (
openGauss(# c_customer_sk integer,
openGauss(# c_customer_id char(5),
openGauss(# c_first_name char(6),
openGauss(# c_last_name char(8)
openGauss(# );
CREATE TABLE
步骤
4
向表中插入数据。
openGauss=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES
openGauss-# (3769, 'hello', DEFAULT) ,
openGauss-# (6885, 'maps', 'Joes'),
openGauss-# (4321, 'tpcds', 'Lily'),
openGauss-# (9527, 'world', 'James');
INSERT 0 4
步骤
5
查看表中的数据。
openGauss=# select * from customer_t1;
c_customer_sk | c_customer_id | c_first_name | c_last_name
---------------+---------------+--------------+-------------
3769 | hello | |
6885 | maps | Joes |
4321 | tpcds | Lily |
9527 | world | James |
(4 rows)
步骤
6
创建
customer_t2
表
openGauss=# DROP TABLE IF EXISTS customer_t2;
NOTICE: table "customer_t2" does not exist, skipping
DROP TABLE
openGauss=# CREATE TABLE customer_t2
openGauss-# (
openGauss(# c_customer_sk integer,
openGauss(# c_customer_id char(5),
openGauss(# c_first_name char(6),
openGauss(# c_last_name char(8)
openGauss(# );
CREATE TABLE
步骤
7
向表中插入数据
openGauss=# INSERT INTO customer_t2 (c_customer_sk, c_customer_id, c_first_name) VALUES
openGauss-# (3769, 'hello', DEFAULT) ,
openGauss-# (6885, 'maps', 'Joes'),
openGauss-# (9527, 'world', 'James');
INSERT 0 3
步骤
8
查看表中数据。
openGauss=# select * from customer_t2;
c_customer_sk | c_customer_id | c_first_name | c_last_name
---------------+---------------+--------------+-------------
3769 | hello | |
6885 | maps | Joes |
9527 | world | James |
(3 rows)
步骤
9
创建用户
lucy
。
openGauss=# DROP user IF EXISTS LUCY;
NOTICE: role "lucy" does not exist, skipping
DROP ROLE
openGauss=# CREATE USER lucy WITH PASSWORD "Bigdata@123";
CREATE ROLE
步骤
10
切换到
Lucy
用户
openGauss=# \c - lucy
Password for user lucy:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "lucy".
步骤
11
创建
lucy shema
的表。
openGauss=> DROP TABLE IF EXISTS lucy.mytable;
NOTICE: table "mytable" does not exist, skipping
DROP TABLE
openGauss=> CREATE TABLE mytable (firstcol int);
CREATE TABLE
步骤
12
向表中插入数据
openGauss=> INSERT INTO mytable values (100);
INSERT 0 1
步骤
13
查看表中数据
openGauss=> SELECT * from mytable;
firstcol
----------
100
(1 row)
步骤
14
退出数据库:
openGauss=> \q
[omm@node0 ~]$
3 物理备份和恢复
openGauss
部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。
openGauss
提供了
gs_basebackup
工具做基础备份。
gs_basebackup
工具由操作系统用户
omm
执行。
3.1 实验前提
在数据库备份之前创建存储备份文件的文件夹。
步骤
1
切换到
omm
用户,以操作系统用户
omm
登录数据库主节点。
[root@node0 ~]# su - omm
Last login: Sat Apr 13 23:05:21 CST 2024 on tty1
Welcome to 5.10.0-153.12.0.92.oe2203sp2.x86_64
System information as of time: 2024年 04月 13日 星期六 23:14:02 CST
System load: 0.01
Processes: 198
Memory used: 37.9%
Swap used: 9.5%
Usage On: 25%
IP address: 192.168.28.131
Users online: 2
To run a command as administrator(user "root"),use "sudo <command>".
[omm@node0 ~]$
步骤
2
创建存储备份文件的文件夹。
[omm@node0 ~]$ mkdir -p /home/omm/physical/backup
[omm@node0 ~]$
3.2 物理备份
步骤
1
如果数据库服务没有启动,就启动数据库服务
(
务必以操作系统用户
omm
启动数据库服务, 如果没有请切换用户)
。
[omm@node0 ~]$ gs_om -t start;
Starting cluster.
=========================================
[SUCCESS] node0:
[2024-04-13 23:16:40.080][8226][][gs_ctl]: gs_ctl started,datadir is /opt/huawei/install/data/dn
[2024-04-13 23:16:40.086][8226][][gs_ctl]: another server might be running; Please use the restart command
=========================================
Successfully started.
步骤
2
将数据库进行物理备份。
[omm@node0 ~]$ gs_basebackup -D /home/omm/physical/backup -p 15400
INFO: The starting position of the xlog copy of the full build is: 0/3000028. The slot minimum LSN is: 0/0. The disaster slot minimum LSN is: 0/0. The logical slot minimum LSN is: 0/0.
[2024-04-13 23:18:08]:begin build tablespace list
[2024-04-13 23:18:08]:finish build tablespace list
[2024-04-13 23:18:08]:begin get xlog by xlogstream
[2024-04-13 23:18:08]: check identify system success
[2024-04-13 23:18:08]: send START_REPLICATION 0/3000000 success
[2024-04-13 23:18:08]: keepalive message is received
[2024-04-13 23:18:08]: keepalive message is received
[2024-04-13 23:18:13]:gs_basebackup: base backup successfully
参数
-D directory
表示备份文件输出的目录,
必选项
步骤
3
切换到存储备份文件夹查看备份文件。
[omm@node0 ~]$ cd /home/omm/physical/backup
[omm@node0 backup]$ ls
backup_label pg_ident.conf pg_xlog
base pg_llog postgresql.conf
cacert.pem pg_location postgresql.conf.bak
global pg_logical postgresql.conf.guc.bak
gswlm_userinfo.cfg pg_multixact postgresql.conf.lock
mot.conf pg_notify postmaster.pid.lock
pg_clog pg_replslot server.crt
pg_csnlog pg_serial server.key
pg_ctl.lock pg_snapshots server.key.cipher
pg_errorinfo pg_stat_tmp server.key.rand
pg_hba.conf pg_tblspc undo
pg_hba.conf.bak pg_twophase
pg_hba.conf.lock PG_VERSION
3.3 物理备份恢复
当数据库发生故障时需要从备份文件进行恢复。因为
gs_basebackup
是对数据库按二进制进行
备份,因此恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库。
说明:
若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这时,需
要修配置文件的
port
参数,或者在启动数据库时指定一下端口。
若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的
postgre.conf
中的
replconninfo1
,
replconninfo2
等。
当数据库发生问题需要从备份进行恢复时,步骤如下:
步骤
1
停止
openGauss((
务必以操作系统用户
omm
停止数据库服务,如果没有请切换用户
)
。
[omm@node0 backup]$ gs_om -t stop;
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
[omm@node0 backup]$
步骤
2
清理原库中的所有或部分文件
查看数据库节点文件夹名称
(
文件夹名称是数据库安装时定义的,不同数据可能不同
)
。

[omm@node0 ~]$ cd /opt/huawei/install/data
[omm@node0 data]$ ls
dn
查看文件列表如下:
[omm@node0 data]$ cd dn
[omm@node0 dn]$ ls
backup_label.old pg_ident.conf postgresql.conf
base pg_llog postgresql.conf.bak
cacert.pem pg_location postgresql.conf.guc.bak
gaussdb.state pg_logical postgresql.conf.lock
global pg_multixact postmaster.opts
gswlm_userinfo.cfg pg_notify postmaster.pid
mot.conf pg_replslot postmaster.pid.lock
pg_clog pg_serial server.crt
pg_csnlog pg_snapshots server.key
pg_ctl.lock pg_stat_tmp server.key.cipher
pg_errorinfo pg_tblspc server.key.rand
pg_hba.conf pg_twophase undo
pg_hba.conf.bak PG_VERSION
pg_hba.conf.lock pg_xlog
删除文件,对数据库文件进行破坏。
[omm@node0 dn]$ rm -rf *
[omm@node0 dn]$ ls
[omm@node0 dn]$
删除文件后,列表为空
[omm@node0 dn]$ rm -rf *
[omm@node0 dn]$ ls
[omm@node0 dn]$
删除文件后,列表为空
步骤
3
使用数据库系统用户权限从备份中还原需要的数据库文件,
"/opt/huawei/install/data/d
n
"
中
dn
是数据库节点文件夹名称,不同数据库可能不同请查看确认。
[omm@node0 dn]$ cp -r /home/omm/physical/backup/. /opt/huawei/install/data/dn
[omm@node0 dn]$
备份时间大概需要几分钟,恢复后文件列表如下
[omm@node0 dn]$ cd /opt/huawei/install/data/dn
[omm@node0 dn]$ ls
backup_label pg_ident.conf pg_xlog
base pg_llog postgresql.conf
cacert.pem pg_location postgresql.conf.bak
global pg_logical postgresql.conf.guc.bak
gswlm_userinfo.cfg pg_multixact postgresql.conf.lock
mot.conf pg_notify postm