使用 db-archiver 从 MySQL 迁移
在本教程中,我们将指导您使用 db-archiver 从 MySQL 迁移至 Databend Cloud。
准备工作
开始前,请确保满足以下先决条件:
- 本地机器已安装 Docker,用于启动 MySQL。
- 本地机器已安装 Go,用于安装 db-archiver。
- 本地机器已安装 BendSQL。请参考 安装 BendSQL 了解如何通过不同包管理器安装 BendSQL。
步骤 1:在 Docker 中启动 MySQL
- 在本地机器上启动 MySQL 容器。以下命令将启动一个名为 mysql-server 的 MySQL 容器,创建名为 mydb 的数据库,并设置 root 密码为
root
:
docker run \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=mydb \
-p 3306:3306 \
-d mysql:8
- 验证 MySQL 是否运行:
docker ps
检查输出中是否存在名为 mysql-server 的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a8f8d7d0e1a mysql:8 "docker-entrypoint.s…" 10 hours ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-server
步骤 2:向 MySQL 填充示例数据
- 登录 MySQL 容器,提示输入密码时输入
root
:
docker exec -it mysql-server mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.4.4 MySQL Community Server - GPL
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- 切换到 mydb 数据库:
mysql> USE mydb;
Database changed
- 复制并执行以下 SQL 创建名为 my_table 的表并插入数据:
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
value INT
);
INSERT INTO my_table (name, value) VALUES
('Alice', 10),
('Bob', 20),
('Charlie', 30);
- 验证数据:
mysql> SELECT * FROM my_table;
+----+---------+-------+
| id | name | value |
+----+---------+-------+
| 1 | Alice | 10 |
| 2 | Bob | 20 |
| 3 | Charlie | 30 |
+----+---------+-------+
3 rows in set (0.00 sec)
- 退出 MySQL 容器:
mysql> quit
Bye
步骤 3:在 Databend Cloud 中设置目标表
- 使用 BendSQL 连接 Databend Cloud。若不熟悉 BendSQL,请参考教程:使用 BendSQL 连接 Databend Cloud。
- 复制并执行以下 SQL 创建目标表 my_table:
CREATE TABLE my_table (
id INT NOT NULL,
name VARCHAR(255),
value INT
);