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

梧桐云原生分析型数据库的备份与恢复经验分享

原创 easilyyy 2024-10-10
133

1、背景

        随着数据库国产化的不断深入,数据库对数据的备份、恢复操作至关重要。在梧桐云原生分析型数据库管理中,备份是保障数据安全和可用性的基础,而恢复则是应对意外数据丢失或系统崩溃的关键步骤。备份对于数据库非常重要,可以保护数据的长期完整性和安全性。

2、备份和恢复必要性

2.1 防止数据丢失

备份能够防止误操作、硬件故障、网络攻击、自然灾害等意外情况导致数据丢失。

2.2 数据恢复

如果数据库出现问题,您可以使用备份来恢复数据,以便重新获得系统的功能和稳定性。

3、数据备份方法

3.1 通过 hdfs 外部表备份

假设有一张表需要导出到 hdfs 文件系统上,使用下面的命令创建 writable 外部表并加载数据:

CREATE WRITABLE EXTERNAL TABLE table_out (LIKE table)  
LOCATION (‘hdfs://host:port/file’)  
FORMAT ‘CSV’ (DELIMITER ‘|’ NULL ’ ');  
INSERT INTO table_out SELECT * FROM table;  
在 HDFS 服务器上便可查看到相应目录下已经产生导出的文件了。

示例:
1、创建外部表:

CREATE WRITABLE EXTERNAL TABLE table1 (LIKE table2)  
LOCATION (‘hdfs://path/filename.txt’)  
FORMAT ‘TEXT’ (DELIMITER ‘|’);

bf_hdfs.jpg

2、数据插入外部表 :

INSERT INTO table1 SELECT * FROM table2;

bf_hdfs_02.jpg

3、查询备份文件:

hadoop fs -cat /path/filename.txt

bf_hdfs_03.jpg

3.2 使用 COPY 命令备份

copy to 命令用于拷贝表内容或 select 查询语句的结果到文件。
如果 select 后面列出部分字段,则仅拷贝指定字段的查询结果到文件中。使用 copy to 命令的表必须授予 select 权限。
该命令只能在表上使用,不能用于视图。

COPY (SELECT…) TO ‘filename’;

示例:
1、copy备份:

COPY (select * from table2) TO ‘hdfs://path/fifilename.txtle’ DELIMITER ‘|’;

copy_to_file_01.jpg

cpoy_to_file_02.jpg

4、数据恢复方法

4.1 通过 hdfs 外部表恢复

1、创建外部表,其中 host 和 port 分别表示 HDFS 的 namenode 主机地址和端口号

CREATE EXTERNAL TABLE ext_table(……)  
LOCATION (‘hdfs://host:port/filepath’)  
FORMAT ‘CSV’ (DELIMITER ‘|’);

2、加载数据到 table 表中:

CREATE TABLE table AS SELECT * FROM ext_table;  
或者把建表语句和加载数据分开:  
CREATE TABLE table(……);  
INSERT INTO table SELECT * FROM ext_table;  
根据读取数据文件本身的规模,WuTongDB 会根据用户配置自动调整数据读取的并行度,实现动态并行的数据加载。

示例:
1、创建外部表:

CREATE EXTERNAL TABLE table1  
(  
area_code bigint,  
area_code_name char(6)  
)  
LOCATION (‘hdfs://path/filename.txt’)  
FORMAT ‘TEXT’ (DELIMITER ‘|’);

hf_hdfs_01.jpg

2、恢复数据到正式表:

CREATE TABLE public.ext_table AS SELECT * FROM public.hdfs_ext_table;

hf_hdfs_02.jpg

4.2 使用 COPY 命令恢复

copy 命令在 master 节点上可以通过 串行操作 来完成少量的数据导入和导出。 在 copy 命令运行时可以让服务器直接读写文件,因此当前用户必须拥有文件的访问权限。  
copy from 命令用于拷贝文件到数据表。如果该命令中的表的列参数未指定,则获取它的缺省值。使用 copy from 命令的表必须授予 insert 权限。

COPY customers FROM ‘filename’ (DELIMITER ‘|’);

示例:
1、创建表:

CREATE  TABLE public.copy_table  
(  
area_code bigint,  
area_code_name char(6)  
);

2、数据入库:

copy public.copy_table FROM ‘hdfs://path/filename.txt’ DELIMITER ‘|’;

3、查询入库数据:

select * from public.copy_table;

copy_table_01.jpg

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

评论