一、物理备份介绍
通过对物理文件拷贝的方式对数据进行备份,以磁盘块为基本单位将数据从主机上复制到备机上,通过备份的数据文件及归档日志等文件,可以做到完全恢复。物理备份速度快,通常用于数据的备份与恢复,用于全量备份的场景。
二、gs_basebackup相关参数介绍
-
备份相关参数
-D 备份文件输出的目录
-X 备份xlog日志的方式(fetch | stream)
-F 指定备份文件的输出格式(plain | tar)
-Z 指定备份压缩级别(只有输出格式为tar时才生效) -
连接相关参数
-U 指定使用哪个用户进行备份操作
-p 指定数据库服务监听的端口号
-W 指定用户连接密码
三、实践操作
我搭建的是一主一备,只需要备份备库即可,当发生故障或误操作导致数据丢失,可以使用备份文件进行数据恢复。
主节点:OG1 备节点:OG2
操作步骤如下:
(1)对备库进行全量物理备份
[omm@OG2 ~]$ gs_basebackup -D /backup -X fetch -F tar -Z 9 -p 15400
INFO: The starting position of the xlog copy of the full build is: 0/440006E8. The slot minimum LSN is: 0/0.
[2022-02-25 15:43:13]:begin build tablespace list
[2022-02-25 15:43:13]:finish build tablespace list
[2022-02-25 15:43:22]:gs_basebackup: base backup successfully
#压缩级别应该根据实际情况设置,压缩级别越高压缩比越高
#压缩时间也越高
[omm@OG2 ~]$ ll /backup
total 5516
-rw------- 1 omm dbgrp 5644783 Feb 25 15:43 base.tar.gz
[omm@OG2 ~]$ du -sh /backup
5.4M /backup
(2)模拟故障:连接主节点,将删除表
我这里通过备节点连接主节点进行删表操作,因为备节点是只读的,当然你可以直接在主库所在的主机节点,登录连接主库,然后进行表操作:
[omm@OG2 ~]$ gsql -d postgres -p 15400 -h 192.168.1.100 -U jack -W Test@123
openGauss=> \dt
List of relations
Schema | Name | Type | Owner | Storage
--------+---------+-------+-------+----------------------------------
jack | student | table | jack | {orientation=row,compression=no}
(1 row)
openGauss=> drop table student;
DROP TABLE
#说明:因为主备之间的认证方式为互信,是不可以进行远程连接的,所以需要修改主库上
#上的配置文件pg_hba.conf。
(3)数据恢复
#关闭数据库
[omm@OG2 /backup]$ gs_om -t stop
#解压备份文件
[omm@OG2 /backup]$ gzip -d base.tar.gz
[omm@OG2 /backup]$ ll
total 376004
-rw------- 1 omm dbgrp 385026560 Feb 25 15:43 base.tar
[omm@OG2 /backup]$ exit
logout
[root@OG2 ~]# mkdir /backup/data
[root@OG2 ~]# chown omm.dbgrp /backup/data
[root@OG2 ~]# su - omm
Last login: Fri Feb 25 14:56:43 CST 2022 on pts/0
[omm@OG2 ~]$ cd /backup/
[omm@OG2 /backup]$ ll
total 376004
-rw------- 1 omm dbgrp 385026560 Feb 25 15:43 base.tar
drwxr-xr-x 2 omm dbgrp 6 Feb 25 16:03 data
[omm@OG2 /backup]$ gs_tar -F base.tar -D data
#将原数据目录下的数据备份到其他位置
[omm@OG2 ~]$ cp -a /data/og2/* /data/backup/og2
[omm@OG1 ~]$ cp -a /data/og1/* /data/backup/og1
#删除主备数据库数据目录中的数据
[omm@OG2 ~]$ rm -rf /data/og2/*
[omm@OG1 ~]$ rm -rf /data/og1/*
#将解压的备份文件拷贝到相应的数据目录中
[omm@OG2 ~]$ cp -a /backup/data/* /data/og2
[omm@OG2 ~]$ rsync -avz /backup/data/* 10.0.0.100:/data/og1
#在主节点上,还要替换掉相应的配置文件
[omm@OG1 ~]$ cp /data/backup/og1/*.conf /data/og1
(4) 启动数据库进行检验
[omm@OG1 ~]$ gs_om -t start
[omm@OG1 ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
nodenode_ip port instance state
------------------------------------------------------------------------
1 OG1 192.168.1.100 15400 6001 /data/og1 P Primary Normal
2 OG2 192.168.1.101 15400 6002 /data/og2 S Standby Normal
[omm@OG1 ~]$ gsql -p 15400 -d postgres -U jack -W Test@123
openGauss=> select * from student;
sid | sname | sage
------------+--------+------
7702118013 | WangEr | 14
7702118033 | Lisi | 17
7702118088 | 张五 | 21
(3 rows)
发现数据确实恢复了,gs_basebackup的简单操作就到此为止。
最后修改时间:2022-08-15 14:59:54
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




