从一台doris导入表结构和数据到另一台doris

10小时前学习11

Apache Doris 是一款开源、分布式、MPP 架构的 OLAP(在线分析型)数据库,主打海量数据实时多维分析、秒级 / 亚秒级查询、高并发报表与即席查询,非常适合构建实时数据仓库、BI 看板、用户行为分析、日志分析、湖仓融合等场景。

需要将数据从一台doris集群迁移到另一台doris服务器中,以下是操作步骤

一、迁移表结构

首先将数据库导出sql文件。在一台可以连接doris的linux服务器上执行以下命令

mysqldump -h192.168.1.10 -P9030 -uroot -p \
--no-tablespaces \
--no-data \
--skip-column-statistics \
--databases test_db \
> doris_ok.sql

接下来需要借助一点点AI的力量,把导出的文件交给AI,让它把sql修改成兼容doris数据库的语法,并且支持单个节点doris的(我这里新的doris是单节点的所以这么改,按照实际情况修改提示词),我使用的claude模型,效果比较好,一次就成功了,也可以使用国内模型试试。修改完后的代码保存成sql文件。

最后执行以下命令,导入到新库中

mysql -h192.168.1.45 -P9030 -uroot -p < doris_fixed.sql


二、同步数据

同步数据需要借助doris的CATALOG。“外部数据源的统一入口和命名空间”

它的作用是让 Doris 不只是查询自己内部的数据,还能像一个“数据中台”一样,直接访问 Hive、Iceberg、Hudi、MySQL、PostgreSQL、Elasticsearch 等外部数据源。

在新doris库中执行以下命令,将旧库作为外部数据库连接到doris中。

CREATE CATALOG doris_source PROPERTIES (
    "type" = "jdbc",
    "user" = "root",
    "password" = "mysql.7334453",
    "jdbc_url" = "jdbc:mysql://192.168.1.10:9030/",
    "driver_url" = "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.25/mysql-connector-java-8.0.25.jar",
    "driver_class" = "com.mysql.cj.jdbc.Driver"
);

执行

SHOW CATALOGS;

看到以下doris_source,表示已经连接成功。

然后就可以像操作一个数据库的方式导入数据了

INSERT INTO hx_theme_data.t_license
SELECT * FROM doris_source.hx_theme_data.t_license

运行以下sql生成所有需要导入表sql。

SELECT 
    CONCAT(
        'INSERT INTO hx_theme_data.`', TABLE_NAME, '` ',
        'SELECT * FROM doris_source.hx_theme_data.`', TABLE_NAME, '`;'
    ) AS sync_sql
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'hx_theme_data'
  AND TABLE_TYPE = 'BASE TABLE';

直接复制所有sql运行就可以导入全部数据了。







扫描二维码推送至手机访问。

版权声明:本文由星光下的赶路人发布,如需转载请注明出处。

本文链接:https://forstyle.cc/zblog/post/119.html

分享给朋友: