【问题标题】:Data Migration from Mysql to Cassandra从 Mysql 到 Cassandra 的数据迁移
【发布时间】:2017-01-07 11:48:08
【问题描述】:

我需要帮助解决以下情况。

我有一个 MySQL 表:-

CREATE TABLE employees (
    emp_no      INT             NOT NULL,  -- AUTO_INCREMENT??
    birth_date  DATE            NOT NULL,
    first_name  VARCHAR(14)     NOT NULL,
    user_id     INT             NOT NULL,   -- This is primary key of another table.   
    PRIMARY KEY (emp_no));

这个表有大约 20000 条记录。

我正在将此 MySQL 表转移到 Cassandra 表,如下所示。

CREATE TABLE employees (
    emp_no      uuid,
    birth_date  timestamp,
    first_name  text,
    user_id uuid,
    PRIMARY KEY (emp_no));

现在我想将所有 20000 条记录从 MySQL 表导出到 Cassandra 表。

user_id 列是另一个表中的主键,first_name 列也映射到 user_id 列。

请告诉我如何实现这一目标。

以下是我正在使用的 datastax 版本的详细信息。 [cqlsh 5.0.1 |卡桑德拉 2.1.15.1403 | DSE 4.8.9 | CQL 规范 3.2.1 |本机协议 v3]

请建议我将数据从 MySQL 迁移到 Cassandra 的最佳方法。

【问题讨论】:

    标签: mysql database datastax datastax-enterprise database-administration


    【解决方案1】:

    上面的 datastax 场景非常适合您的情况。不过,另一种方法是创建一个小型 Java 项目来为您执行此操作。在您的情况下,从 mysql 表到 cassandra 表的模型是相同的。因此,您可以执行以下操作:

    1. 使用 hibernate 和 datastax 驱动程序创建一个 java 项目
    2. 为员工创建一个 java 类
    3. 通过 hibernate xml 映射将员工映射到 mysql(我更喜欢 xml,因为这样我可以为 cassandra 使用相同的 java 模型)
    4. 通过 datastax 驱动程序注释将员工类映射到 cassandra 表
    5. 使用休眠会话将您的员工分批引入
    6. 使用 datastax 驱动程序将批处理中的所有员工保存到 cassandra。

    您的员工类应如下所示

    @Table(keyspace = "your_keyspace", name ="employees")
    public class Employee
    {
        @PartitionKey(0)
        @Column(name = "emp_no")
        protected UUID employeeNo;
    
        @Column(name = "birth_date")
        protected Timestamp birthDate;
    
        @Column(name = "first_name")
        protected String firstName;
    
        @Column(name = "user_id")
        protected UUID userId;
    }
    

    当然,Java 不是您唯一的选择。 Datastax 驱动程序可用于多种语言,如 C# 或 python。

    【讨论】:

    • 如果我们将mysql表导出到EXCEL然后加载到Cassandra表中是不可能的。这是个好主意吗?以及失败的可能情况。
    • 你打算怎么做?我从未尝试过以这种方式填表。你能给我更多的细节吗? (我还要说,我在上面的答案中描述的方式可以重复用于未来的表迁移,所以你只需要一次就可以随时使用)
    • 将你的mysql表转换成csv并导入cassandra
    • @Ish 是的,我试过了,但无法直接导入 cassandra 按照我的想法,mysql 表中的主键是“id”,它是 INT 数据类型,而 cassandra 表中的主键是“id”是 UUID。所以它得到了问题..并且无法解决这个问题。由于迁移部分,真的很忙。
    【解决方案2】:

    参考:Migrate RDBMS to Cassandra

    更多信息:https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html

    请将您的 mysql 数据转换为 CSV 并导入到 cassandra 表中。这工作我已经检查过了。

    【讨论】:

    • 我检查了这个,但无法理解更多细节。你能给我一个简短的场景和步骤吗?那么它会更有帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2011-08-31
    • 2013-11-28
    • 2020-11-18
    • 1970-01-01
    • 2015-01-29
    • 2011-04-23
    相关资源
    最近更新 更多