概要
ArcheryはSQLレビュープラットフォームであり、ワークフロー管理、権限制御、メッセージ通知などの機能を提供します。本記事では、Archeryを使用してOceanBaseデータベースインスタンスを管理する方法について説明します。これには、メタデータベースの設定、SQLクエリ、SQLレビュー、SQL実行、アカウント管理が含まれます。
バージョン互換性
- OceanBaseデータベース ≥ V4.2.5
- OBProxy ≥ V4.3.1
前提条件
Archeryを使用する前に、次のことを確認してください:
- Archeryがインストール済みであること。インストールについては、Archery公式ドキュメントを参照してください。
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- 作成したMySQL互換モードのテナントでBinlogサービスが有効になっていること。詳細については、OceanBase Binlogサービスを参照してください。
手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者から接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:接続IPアドレス。ODP接続の場合はODPアドレスを使用し、直接接続の場合はOBServer IPを使用します。$port:接続ポート。ODPのデフォルトは2883、直接接続のデフォルトは2881です。$database_name:データベース名。注意
テナントに接続するユーザーには、データベースに対する
CREATE、INSERT、DROPおよびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:接続アカウント。ODP形式:ユーザー@テナント#クラスタまたはクラスタ:テナント:ユーザー。直接接続形式:ユーザー@テナント。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:ArcheryにOceanBaseインスタンスを追加する
Archery管理画面にログインした後、インスタンス管理ページに移動し、データベースインスタンスを作成します。 インスタンス作成時には、データベースタイプをMySQLに設定し、OceanBaseデータベースの接続情報を入力してください。パラメータの説明は以下のとおりです:
- インスタンス名:Archery内で異なるデータベースインスタンスを区別するためのカスタムインスタンス名。
- インスタンスアドレス:$host:$port。
- データベース名:$database_name。
- ユーザー名:$user_name。
- パスワード:$password。
- 文字セット:utf8またはutf8mb4を選択することを推奨します。
上記の設定が完了したら、インスタンス情報を保存します。
ステップ3:Archeryの管理機能を使用する
OceanBaseインスタンスをArcheryに接続すると、SQLクエリ、SQLレビュー、データアーカイブなどの機能を使用できるようになります。
SQLクエリ
ArcheryのSQLクエリ / オンラインクエリページで、対象のインスタンスとデータベースを選択し、実行するSQL文を入力した後、SQLクエリをクリックします。
SQLレビューとデータアーカイブ
SQLレビューまたはデータアーカイブ機能を使用する前に、以下の設定を完了してください。
ODPパラメータの設定
ODPを介してOceanBaseに接続する場合は、まずシステムテナントに接続し、以下のコマンドを実行します:
ALTER PROXYCONFIG SET proxy_id=1; ALTER PROXYCONFIG SET client_session_id_version=2; ALTER PROXYCONFIG SET enable_single_leader_node_routing = false;パラメータ説明:
proxy_id:ODPインスタンスID。単一のODPインスタンスには1を設定できます。複数のODPインスタンスをデプロイする場合は、各インスタンスに異なるproxy_idを割り当てる必要があります。client_session_id_version:Client Session IDの生成アルゴリズムを設定します。enable_single_leader_node_routing:標準のOceanBase 2.0プロトコル通信を強制します。
業務テナントパラメータの設定
業務テナントで以下のコマンドを実行し、ロック優先順位を一時的に有効にします:
ALTER SYSTEM SET enable_lock_priority = TRUE;関連するDDLの実行が完了したら、速やかにこのパラメータを無効にします:
ALTER SYSTEM SET enable_lock_priority = FALSE;パラメータ説明:
enable_lock_priority:テーブルロックの優先順位スイッチです。有効にすると、特定のDDL(RENAME TABLE)が最も高いロック優先順位を持ちます。
注意
enable_lock_priorityを長期間有効にすると、DMLロック競合の公平性に影響を与え、パフォーマンスのジッターを引き起こす可能性があります。
SQLレビュー機能の設定:
SQLレビュー機能を使用する場合は、Archeryのシステム管理 / 設定管理ページでgoInception関連の設定を入力してください。 goInceptionはOceanBaseが管理する統合ブランチを使用できます。詳細については、 goInception Integrationブランチを参照してください。
データアーカイブ機能の設定:
データアーカイブ機能を使用する場合は、事前にArcheryが稼働するホストにPTArchiverをデプロイしておいてください。 PTArchiverのインストールパッケージは、テクニカルサポートにお問い合わせください。
結果の検証
インスタンスの設定が完了したら、以下の方法でOceanBaseインスタンスがArcheryに正常に接続されているかどうかを検証できます:
- SQLクエリ / オンラインクエリページでSQLステートメントを実行し、クエリ結果が正常に返されること。
- SQLレビューチケットを提出し、承認プロセスを完了すること。
- データアーカイブタスクを作成して実行すること。
- インスタンスのデータディクショナリ、アカウント情報などのメタデータを確認すること。
上記の操作がすべて正常に実行できれば、OceanBaseインスタンスはArcheryに正常に接続されています。
よくある質問
Q1:アーカイブタスクの実行時にinternal Server Errorエラーが発生します
原因:percona-toolkitがインストールされていない、またはpt-archiver及びその依存関係が不完全です。
解決策:
依存パッケージをインストールします:
yum install perl perl-DBI perl-DBD-MySQLpercona-toolkitをインストールします:
percona-toolkitのインストールパッケージは、テクニカルサポートにお問い合わせください。
環境変数を設定します:
echo "export PTOST=/root/percona-toolkit" >> /etc/profile echo "export PATH=\$PATH:\$PTOST/bin" >> /etc/profile source /etc/profile
Q2:関連操作の実行時にYou have an error in your SQL syntax ... near 'LOCK TABLES'エラーが発生します
原因:OceanBaseの低バージョンではGRANT LOCK TABLES構文がサポートされていません。
解決策:
関連コンポーネントを以下のバージョン以上にアップグレードしてください:
- OceanBaseをV4.2.5以上にアップグレードします。
- OBProxyをV4.3.1以上にアップグレードします。
Q3:Table 'performance_schema.events_statements_history' doesn't existというエラーが発生します
原因:OceanBaseにperformance_schemaデータベースが存在しないため、この機能が互換性ありません。
Q4:pt_query_digestがOBのスローログを解析できません
原因:OBのスローログ形式はMySQLのスローログ形式と異なり、pt_query_digestでは解析できません。
Q5:Can't initialize character set utf-8というエラーが発生します
原因:OceanBaseインスタンスの設定時に、文字セットをutf-8と記述できません。
解決策:文字セットはutf8またはutf8mb4と記述する必要があります。