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

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

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值