从一台doris导入表结构和数据到另一台doris
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运行就可以导入全部数据了。



