当前位置:首页 > 行业动态 > 正文

如何手动备份并查询MySQL数据库的分区数据?

MySQL 数据库分区是一种将表的数据分散到多个物理存储位置的方法,以提高查询性能和管理效率。手动备份 Doris 数据通常涉及以下步骤:,,1. 停止 Doris 集群的写入操作。,2. 使用 EXPORT 语句导出数据文件。,3. 将导出的数据文件复制到安全存储位置。,4. 恢复数据时,使用 IMPORT 语句导入数据文件。,5. 重新启动 Doris 集群的写入操作。,,请根据具体需求和环境调整上述步骤。

手动备份Doris数据是确保数据安全和高可用性的重要步骤,本文将详细介绍如何通过MySQL查询数据库分区属性,并手动备份Doris数据。

如何手动备份并查询MySQL数据库的分区数据?  第1张

手动备份Doris数据

1. 前提条件

在进行备份之前,需要确保以下几点:

已创建包含Doris服务的集群,且各服务运行正常。

Doris数据库的节点与MRS集群网络互通。

已安装MySQL客户端,并且能够连接Doris数据库。

创建具有Doris管理权限的用户。

集群已启用Kerberos认证(安全模式)或者未启用Kerberos认证(普通模式)。

2. 登录Doris数据库

使用MySQL客户端登录到Doris数据库,如果集群启用了Kerberos认证,需先执行以下命令再进行连接:

export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
mysql u数据库登录用户 p数据库登录用户密码 P数据库连接端口 hDoris FE实例IP地址

3. 创建远程仓库

在HDFS中创建一个远程仓库example_repo,具体命令根据是否启用Kerberos认证有所不同:

启用Kerberos认证

CREATE REPOSITORYexample_repo
WITH BROKERhdfs_broker
ON LOCATION "hdfs://hadoopnamenode:25000/path/to/repo/"
PROPERTIES
(
    "hadoop.security.authentication"="kerberos",
    "kerberos_principal"="doris/hadoop.hadoop.com@HADOOP.COM",
    "kerberos_keytab"="/opt/huawei/Bigdata/FusionInsight_Doris_8.3.0/install/FusionInsightDoris1.2.3/dorisfe/bin/doris.keytab"
);

未启用Kerberos认证

CREATE REPOSITORYexample_repo
WITH BROKERhdfs_broker
ON LOCATION "hdfs://hadoopnamenode:25000/path/to/repo/"
PROPERTIES
(
    "username" = "hdfs",
    "password" = ""
);

查看已创建的仓库:

SHOW REPOSITORIES;

4. 备份数据到远程仓库

全量备份example_db中的表example_tbl数据到example_repo中:

BACKUP SNAPSHOT example_db.snapshot_label1 TO example_repo ON (example_tbl) PROPERTIES ("type" = "full");

备份example_db中的表example_tblp1p2分区,以及表example_tbl2example_repo中:

BACKUP SNAPSHOT example_db.snapshot_label2 TO example_repo ON (example_tbl PARTITION (p1,p2), example_tbl2);

查看backup作业的执行情况:

SHOW BACKUP;

在远端仓库中查看备份是否成功:

SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "snapshot_label1";

| snapshot_label1 | 20220408155229 | OK |

FAQs

1. 为什么建议按分区分别执行备份?

答:当表的数据量很大时,按分区分别执行备份可以降低失败重试的代价,因为备份恢复操作的都是实际的数据文件,当一个表的分片过多,或者一个分片有过多的小版本时,即使总数据量很小,依然需要备份很长时间。

2. 如何查看备份作业的状态?

答:可以通过执行SHOW BACKUP命令来查看备份作业的执行情况,如果作业状态列不为CANCELLED,则说明作业依然在继续,这些任务有可能会重试成功,但有些任务错误会导致作业失败。

0