暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Halo DB 14 小白零基础系列(12)--在HaloDB中的备份与恢复浅谈

原创 Salvatore-zz 2024-04-10
811

前言:

            上一篇为大家介绍了一些我们HaloDB 的特性,本篇正式为大家带来关于HaloDB中备份恢复的操作技巧,最近更新的有些慢,在这里给大家道个歉,确实最近有很多时间在做公司的售前技术交流工作,包括一些活动的出席,另一方面,也在考虑更新一些怎样能切实的帮助到大家的内容,也是做这个专栏的初心。很多小白朋友对备份恢复十分感兴趣,所以为大家带来本篇的分享,坐稳了,我们发车。

            容我打个广告哈:

            我们的HaloDB 是基于原生PG打造的新一代高性能安全自主可控全场景通用型统一数据库。业内首次创造性的提出插件式内核架构设计,通过配置的方式,适配不同的应用场景,打造全场景覆盖的能力,满足企业大部分数据存储处理需求,从而消除数据孤岛,降低系统复杂度,保护企业既有投资,降低企业成本。同时支持x86、arm等异构平台之间的混合部署。

           如果有对我们的产品感兴趣的朋友可以通过主页的联系方式与我取得联系,获取license来安装体验,当然您如果有好的建议也可以提给我们,下面正式开始今天的内容。

一、什么是数据库备份:

            数据库备份,理解起来特别的简单,数据库,备份,换个说法备份数据库,你如果问我什么是数据库,那哥们我送你一张图,请参考~
 

        通常情况下,一般的数据库备份按照备份方式分为物理备份和逻辑备份两个大类。物理备份顾名思义,通常指拷贝磁盘数据,或者通过数据块拷贝的方式来实现。在我们的HaloDB中,逻辑备份就是将数据库中的对象和数据转储成相应的SQL命令。

        但是逻辑备份的这个机制一般不太适用于比较大的数据集的备份,而只适用于较小数据集的备份。而且逻辑备份的数据是静态的,也就意味着只能保存过去某一时间点的数据,可能与最新数据存在较大的差异。实施逻辑备份通常使用的是pg_dump命令。具体实操方式如下:

二、HaloDB中的逻辑备份

1、实验环境:

操作系统数据库
Centos 7.9

HaloDB 1.0.14.10 (231130)

2、实验步骤:

首先的话 要熟悉HaloDB常用的逻辑备份工具pg_dump,
pg_dump -U your_user_name -F c -b -v -h localhost -p 1921 your_database > backup.dump

详细的参数使用方式如下:

-h host,指定数据库主机名,或者IP
-p port,指定端口号
-U user,指定连接使用的用户名
-W,按提示输入密码
dbname,指定连接需要备份的数据库名称。
-a,–data-only,只导出数据,不导出表结构
-c,–clean,是否生成清理该数据库对象的语句,比如drop table
-C,–create,是否输出一条创建数据库语句
-f file,–file=file,输出到指定文件中
-n schema,–schema=schema,只转存匹配schema的模式内容
-N schema,–exclude-schema=schema,不转存匹配schema的模式内容

备份如下:

示例1:备份HaloDB下的halozz数据库,并且以dump文件存储。

[halo@halodb1 ~]$ pg_dump -v -d halozz > halo_zz.dump 
pg_dump: last built-in OID is 16383
pg_dump: reading extensions
pg_dump: identifying extension members
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: reading schemas
.......
pg_dump: saving encoding = UTF8
pg_dump: saving standard_conforming_strings = on
pg_dump: saving search_path = pg_catalog
pg_dump: implied data-only restore

我们简单看下生成的demo.dump文件的内容。


文件的开头是头部信息,主要内容为版本信息以及字符集信息。因为是空库所以没用更多信息。那我们建立一张测试表,继续观察有什么变化。


这个测试用例之前的文章有使用过,语句如下,方便大家粘贴

 CREATE TABLE halodbzz (
     id INT PRIMARY KEY,
     username VARCHAR(50) NOT NULL,
     email VARCHAR(100) UNIQUE,
     age INT,
     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
	 
INSERT INTO halodbzz (id, username, email, age) VALUES
(1, 'zhangchenxi', 'zhangchenxi@example.com', 18),
(2, 'sky', 'sky@example.com', 18),
(3, 'Salvatorezz', 'charlie@example.com', 18);

重新备份该数据库,再次查看dump文件,如图所示:

如下述两张图所示,我们可以发现,在dump文件中,记录了我们的SQL操作过程。在dump文件中,头部信息后基本都是些数据对象及数据。



  我们仔细观察可以发现,数据采用了COPY方式,当然也可以导出为INSERT,需要在pg_dump命令中加上—inserts指令。如果不是用于跨平台的数据迁移,建议还是使用COPY,该方式拥有更高的性能。当然逻辑备份也支持只对部分表进行备份,这也是逻辑备份的优点之一。下面用一个小例子来展示下,就备份我刚才所创建的测试表halodbzz。

示例2:导出HaloDB的单张表,以.sql格式存储

导出语句如下:

[halo@halodb1 ~]$ pg_dump -d halozz -t halodbzz > zz.sql
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
........
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1
pg_dump: NOTICE:  >>>> fxu-debug    GenericType1

截图如下:


sql文件如下,各位请参考:


    当然除此之外,pg_dump 还支持仅导出表结构,导出数据库单独排除某张表等操作,总体来说,使用较为灵活方便。由于篇幅原因,不做详细展示,我提供命令,各位可以自己动手操作,学习数据库,最好的办法,动手操作!薛老师曾经说过一句话,好的DBA都是用失败的经验堆积起来的,各位共勉。
HaloDB仅仅导出表结构:
pg_dump -d (你的数据库名称)-s > (自定义文件名).sql

HaloDB仅导出数据,不导出表结构

pg_dump -d (你的数据库名称) --inserts -a > (自定义文件名).sql

HaloDB数据库,导出某个数据库但是排除某张表

pg_dump -d (连接的数据库名称) -T (排除的表名称) --inserts >(自定义文件名称).sql

三、HaloDB中的物理备份

        Halo也提供了用于备份恢复的工具RMAN,来帮助用户方便的实施备份和恢复。以下描述了使用RMAN进行备份与恢复的基本步骤。
1、初始化备份路径:
$ export BACKUP_PATH=/data/halo_backup
$ rman init
2、开始物理备份:
$ rman backup -b full --validate-backup
3、备份归档日志
$ rman backup -b archive --validate-backup

物理备份先给大家做个小小的铺垫,在后面的文章为大家展开。

最后:

              祝即将召开的北京DTC大会圆满成功,各位朋友我们会场见。

              虽然是慢工,但是不是什么细活,










最后修改时间:2024-04-15 18:02:16
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论