Liquibaseは、オープンソースのデータベースバージョン管理ツールであり、データベーススキーマのバージョン追跡、更新、およびロールバックをサポートします。
前提条件
- Liquibaseをダウンロードし、解凍してインストールしていること。
- 公式サイトからMySQL JDBCドライバーをダウンロードし、
mysql-connector-j-x.x.x.jarファイルを取得していること。
- OceanBaseデータベースをインストール済みで、MySQLモードのテナントを作成していること。
バージョン互換性
より優れた統合体験を確保するため、OceanBaseのV4.2.3以降のバージョンを使用することを推奨します。
操作手順
ステップ1:データベース接続文字列を取得する
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:OceanBaseデータベースへの接続IPアドレス。OceanBaseデータベースプロキシ(OceanBase Database Proxy、ODP)接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。$port:OceanBaseデータベースへの接続ポート。ODP接続方式のデフォルトポートは2883で、ODPデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトポートは2881で、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。$database_name:アクセス対象のデータベース名。注意
テナントに接続するユーザーは、データベースに対する
CREATE、INSERT、DROP、およびSELECT権限が付与されていなければなりません。その他のユーザー権限の詳細については、MySQLモードの権限分類を参照してください。user_name:形式は ユーザー@テナント#クラスタ名 または ユーザー名@SERVICE:サービス名 です。ユーザー@テナント#クラスタ名 の形式を使用する場合、デフォルトのテナントは'sys'、管理者ユーザーは'root'です。データベースに直接接続する場合はクラスタ名を省略できますが、ODP接続の場合は入力する必要があります。$password:アカウントのパスワード。
その他の接続文字列の情報については、OBClientを使用したOceanBaseテナントへの接続を参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:Liquibaseを使用する参考例
- JDBCドライバをLiquibaseのlibディレクトリに配置する
仮想マシン内で、解凍したLiquibaseフォルダを見つけて、libディレクトリに移動します。ダウンロードしたmysql-connector-j-x.x.x.jarファイルをこのディレクトリにコピーします。
または、コマンドラインを使用します:
mv path/to/mysql-connector-j-x.x.x.jar path/to/liquibase/lib/
- 設定ファイルを新規作成する
Liquibaseのルートディレクトリに、liquibase.propertiesという名前の設定ファイルを新規作成します。任意のテキストエディタ(nano、vim、geditなど)を使用してこのファイルを作成し、以下の内容を記述します:
url: jdbc:mysql://xxx.xxx.xxx.xxx:2881/test
username: your_username
password: your_password
classpath: lib/mysql-connector-j-8.3.0.jar
xxx.xxx.xxx.xxxをOceanBaseデータベースのホストアドレスに置き換え、データベースのポート番号、ユーザー名、パスワードを入力してください。データベースのアドレス、ポート番号、ユーザー名、パスワードの取得方法については、ステップ1を参照してください。
- データベースの現在の構造状態のスナップショットを生成する
Liquibaseのルートディレクトリに移動し、以下のコマンドを実行して、現在のデータベース構造のスナップショットを生成します:
./liquibase --changeLogFile=mydatabase_changelog.xml generateChangeLog
使用しているLiquibaseのバージョンによって、実際のパラメータが異なる場合があります。Liquibase公式ドキュメントを参照してください。
- 新しいテーブルを作成する
Liquibaseのルートディレクトリに、dbchangelog.xmlという名前のファイルを新規作成し、以下の内容を記述します:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.4.xsd
http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-4.5.xsd">
<changeSet author="BobR" id="myIDNumber123">
<createTable tableName="actor">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
</changeSet>
</databaseChangeLog>
- 変更を実行する
以下のコマンドを使用して変更を実行し、actorテーブルを作成します:
./liquibase update --changeLogFile=dbchangelog.xml
- ロールバック操作
変更が成功した後、ロールバック操作を実行して、データベースを前のバージョンに戻すこともできます:
./liquibase rollbackCount 1 --changelog-file=dbchangelog.xml
詳細を見る
Liquibaseの使用中に問題が発生した場合は、Liquibase公式ドキュメントを参照することをお勧めします。