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.jarxxx.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公式ドキュメントを参照することをお勧めします。