You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ScyllaDB使用Liquibase迁移工具?

如何为ScyllaDB使用Liquibase

ScyllaDB完全兼容Cassandra的CQL协议,因此可以直接复用Liquibase的Cassandra扩展来操作ScyllaDB,无需额外专属驱动。以下是具体步骤:

1. 准备依赖

根据你的构建工具添加对应的依赖:

Maven

<dependencies>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>最新稳定版</version>
    </dependency>
    <dependency>
        <groupId>org.liquibase.ext</groupId>
        <artifactId>liquibase-cassandra</artifactId>
        <version>与Liquibase核心匹配的版本</version>
    </dependency>
    <dependency>
        <groupId>com.datastax.oss</groupId>
        <artifactId>java-driver-core</artifactId>
        <version>4.x(兼容ScyllaDB的版本)</version>
    </dependency>
</dependencies>

Gradle

dependencies {
    implementation 'org.liquibase:liquibase-core:最新稳定版'
    implementation 'org.liquibase.ext:liquibase-cassandra:匹配版本'
    implementation 'com.datastax.oss:java-driver-core:4.x'
}

2. 配置Liquibase连接

在liquibase.properties中指定ScyllaDB的连接信息,使用Cassandra驱动类:

changeLogFile=db/changelog/db.changelog-master.yaml
url=jdbc:cassandra://<scylla-host>:9042/<keyspace-name>?localdatacenter=<你的数据中心名称>
username=<scylla用户名>
password=<scylla密码>
driverClassName=com.datastax.oss.driver.api.core.cql.CqlSession
  • 无认证集群可移除username和password配置;localdatacenter通常默认是datacenter1,需根据你的集群实际情况修改。

3. 编写变更日志

直接使用Liquibase Cassandra扩展支持的变更类型即可,示例YAML格式变更日志:

databaseChangeLog:
  - changeSet:
      id: 1
      author: your-name
      changes:
        - createTable:
            tableName: users
            columns:
              - column:
                  name: user_id
                  type: UUID
                  constraints:
                    primaryKey: true
              - column:
                  name: username
                  type: TEXT
                  constraints:
                    nullable: false
              - column:
                  name: email
                  type: TEXT
        - createIndex:
            tableName: users
            indexName: idx_users_email
            columns:
              - column:
                  name: email

4. 执行Liquibase命令

使用标准Liquibase命令完成数据库变更:

  • 更新数据库:liquibase update
  • 查看变更历史:liquibase history
  • 验证变更脚本:liquibase validate

如果是容器化的ScyllaDB,确保Liquibase所在环境能访问到容器的9042端口(可通过Docker网络或端口映射实现)。

注意事项

  • 保持Liquibase核心与Cassandra扩展版本一致,避免兼容性问题。
  • 针对ScyllaDB特有特性(如分片策略、GC参数调整),可通过executeCommand直接执行CQL:
- changeSet:
      id: 2
      author: your-name
      changes:
        - executeCommand:
            command: "ALTER TABLE users WITH gc_grace_seconds = 864000"
  • 确保操作账号拥有足够的DDL权限。

内容的提问来源于stack exchange,提问作者Zaryab Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:12:43