mydumperは、C言語で記述されたオープンソースのロジックバックアップツールです。マルチスレッドによるエクスポート、一貫性のあるバックアップ、ファイル圧縮、マルチスレッドによるリストアなどの機能をサポートしており、データ移行、バックアップ・リカバリ、データ同期などのシナリオに適しています。OceanBaseデータベースはmydumperツールと互換性があり、特定のパラメータを設定することで効率的なデータバックアップとリカバリを実現できます。
バージョン互換性
コンポーネント |
説明 |
|---|---|
| OceanBaseデータベース | V4.2.5以上 |
使用上の制限
mydumperを使用してOceanBaseデータベースをバックアップする際には、以下の制限に注意してください。
- OceanBaseは
flush no_write_to_binlog tablesステートメントをサポートしていません。--no-locksまたは--sync-thread-lock-mode NO_LOCKパラメータを使用して回避してください。 - OceanBaseは
flush tables with read lockステートメントをサポートしていません。--no-locksまたは--sync-thread-lock-mode NO_LOCKパラメータを使用して回避してください。 - OceanBaseの
EXPLAIN出力形式はMySQLと一致しないため、mydumperがSegmentation faultエラーを報告する可能性があります。--check-row-countパラメータを使用して回避してください。 - OceanBaseの
show processlist結果フィールドはMySQLと一致しないため、obproxyでalter proxyconfig set client_session_id_version = 2;を実行して設定する必要があります。 - 偶発的な
Segmentation faultエラーは、OBProxy V4.3.3以上を使用することで回避できます。
前提条件
mydumperを使用する前に、次のことを確認してください。
- mydumperがインストール済みであること。インストール方法については、mydumper公式ドキュメントを参照してください。
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- OceanBaseデータベースの接続情報(ホストアドレス、ポート、ユーザー名、パスワード、データベース名)を取得していること。
手順
ステップ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:mydumperをインストールする
mydumperインストールパッケージをダウンロードします:
mydumper releasesページにアクセスし、対応するバージョンのRPMパッケージをダウンロードします。例:
mydumper-0.21.4-1.el7.x86_64.rpm。mydumperをインストールします:以下のコマンドを実行してmydumperをインストールします。
yum install mydumper-0.21.4-1.el7.x86_64.rpm
ステップ3:mydumperを使用してデータをバックアップする
バックアップコマンドの実行:mydumperを使用してOceanBaseデータベースをバックアップするには、互換性を確保するために
--no-locksと--check-row-countパラメータを追加する必要があります。mydumper -h $host -P $port -u $user_name -p $password -B $database_name --no-locks --check-row-count -o /path/to/backupパラメータ説明:
-h:OceanBaseデータベースの接続アドレス。-P:OceanBaseデータベースの接続ポート。-u:接続ユーザー名。-p:接続パスワード。-B:バックアップするデータベース名。--no-locks:テーブルロック操作をスキップし、OceanBaseがflush tables with read lockをサポートしていない問題を回避します。--check-row-count:行数チェックをスキップし、OceanBaseのEXPLAIN出力形式の不整合を回避します。-o:バックアップファイルの出力ディレクトリ。
例:
mydumper -h xxx.xxx.xxx.xxx -P 2883 -u test_user001@mysql001 -p ****** -B test --no-locks --check-row-count -o /backup/testバックアップファイルの確認:バックアップ完了後、指定された出力ディレクトリでバックアップファイルを確認します。
ls -l /backup/testバックアップファイルには以下が含まれます:
metadata:バックアップメタデータ情報。*-schema-create.sql:データベース作成ステートメント。*-schema.sql:テーブル構造定義ファイル。*.sql:テーブルデータファイル。
ステップ4:myloaderを使用してデータを復元する
復元コマンドの実行:myloaderを使用して、バックアップしたデータをOceanBaseデータベースに復元します。
myloader -h $host -P $port -u $user_name -p $password -B $database_name -d /path/to/backup
パラメータ説明:
-h:OceanBaseデータベースの接続アドレス。-P:OceanBaseデータベースの接続ポート。-u:接続ユーザー名。-p:接続パスワード。-B:復元するデータベース名。-d:バックアップファイルディレクトリ。
例:
myloader -h xxx.xxx.xxx.xxx -P 2883 -u test_user001@mysql001 -p ****** -B test -d /backup/test
結果の検証
バックアップファイルの検証
バックアップ完了後、バックアップディレクトリ内のファイルを確認します:
ls -lh /backup/test
以下のファイルが存在することを確認してください:
metadata:バックアップ日時、binlog位置などのメタデータ情報を含みます。*-schema-create.sql:データベース作成ステートメント。*-schema.sql:テーブル構造定義。*.sqlまたは*.sql.gz:テーブルデータファイル(圧縮を使用した場合)。
データ整合性の検証
OceanBaseデータベースに接続し、テーブル数とレコード数を確認します。
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'test'; SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'test';バックアップ前後のデータを比較し、データの一貫性を確認します。