Amazon Best VPN GoSearch

OnWorksファビコン

mysqldbcompare - クラウド上のオンライン

OnWorksの無料ホスティングプロバイダーで、Ubuntu Online、Fedora Online、Windowsオンラインエミュレータ、またはMAC OSオンラインエミュレータを使用してmysqldbcompareを実行します。

これは、Ubuntuオンライン、Fedoraオンライン、Windowsオンラインエミュレータ、MAC OSオンラインエミュレータなど、複数の無料オンラインワークステーションのいずれかを使用して、OnWorks無料ホスティングプロバイダーで実行できるコマンドmysqldbcompareです。

プログラム:

NAME


mysqldbcompare - 2つのデータベースを比較し、違いを特定する

SYNOPSIS


mysqldb比較 [オプション] db1 [:db2] ...

DESCRIPTION


このユーティリティは、2つのデータベースのオブジェクトとデータを比較して相違点を見つけます。
2つのデータベースで異なる定義を持つオブジェクトを識別し、それらを次のように提示します。
diff形式のフォーマットを選択できます。データの違いは、同様の形式で表示されます。
diff形式のフォーマット。変更された行や欠落した行は、GRID、CSV、
TAB、または VERTICAL。

比較する 1 つのデータベースに名前を付けるには、db2:db1 という表記を使用するか、単に dbXNUMX を使用して比較します。
同じ名前の XNUMX つのデータベースを比較します。 後者の場合は便宜的な表記です。
異なるサーバー上の同じ名前のデータベースを比較します。

比較は、単一サーバー上の異なる名前の XNUMX つのデータベースに対して実行できます。
のみを指定すると、 --server1 オプション。 ユーザーは次の方法で別のサーバーに接続することもできます。
の指定 --server2 オプション。 この場合、db1 はサーバー 1 から取得され、db2 はサーバー XNUMX から取得されます。
サーバー2。

データベースで考慮されるオブジェクトには、テーブル、ビュー、トリガー、プロシージャなどが含まれます。
関数、イベントなどが表示されます。各オブジェクトタイプのカウントは、 -vv オプションを選択します。

チェックはテストと呼ばれる一連の手順で実行されます。デフォルトでは、ユーティリティは
最初の失敗したテストで、 --すべてのテストを実行 原因となるオプション
終了状態に関係なくすべてのテストを実行するユーティリティ。

注:使用 --すべてのテストを実行 予想通りの連鎖的な障害が発生する可能性があります。例えば、行
比較される 2 つのテーブル間でカウントが異なる場合も、データの一貫性が失われます。

テストには次のものが含まれます。

1. データベース定義を確認する

データベースの存在の前提条件チェックにより、両方のデータベースが存在することが確認されます。
そうでない場合、それ以上の処理は不可能であり、 --すべてのテストを実行 オプションは無視されます。

2. 両方のデータベースにオブジェクトが存在するかどうかを確認する

両方のデータベースのオブジェクトをテストすることで、片方または両方のデータベースから欠落しているオブジェクトを特定します。
残りのテストは、両方のデータベースに現れるオブジェクトにのみ適用されます。
データベース。このテストをスキップするには、 --skip-object-compare オプション。これは便利です
データベース内に不足しているオブジェクトがあることがわかっている場合。

3. オブジェクト定義を比較する

定義( CREATE ステートメントを比較し、相違点を提示します。
このテストをスキップするには、 --skip-diff オプション。オブジェクトがある場合に便利です
無視したい名前の違いのみ。

4. テーブルの行数を確認する

このチェックにより、両方のテーブルの行数が同じであることが保証されます。ただし、
表のデータが整合しているかどうかを確認します。これは、
いずれかのテーブルで行が欠落している。データ整合性チェックでは、
行が欠落しています。このテストをスキップするには、 --skip-row-count オプションを選択します。

5. テーブルデータの一貫性をチェックする

このチェックでは、変更された行と、次のいずれかの行から欠落した行の両方を識別します。
データベース内のテーブル。変更された行は、差分形式のレポートとして表示されます。
選択した形式(GRID デフォルトでは欠落行も表示されます。
選択された形式。このテストをスキップするには、 --データチェックをスキップ オプションを選択します。

--skip-xxx オプションを使用して、テストの1つだけを実行することもできます。これは次のような場合です。
2つのデータベースを同期させるときに役立ちます。
プロセス中にテストを繰り返します。

各テストは次のいずれかの状態で完了します。

· パス

テストは成功しました。

· フェイル

テストに失敗しました。テスト状態行の後にエラーが表示されます。

· スキップ

前提条件が不足しているか、スキップ オプションが指定されているため、テストはスキップされました。

· WARN

テストで異常なエラーが発生しましたが、致命的ではありません。

· -

このオブジェクトにはテストは適用できません。

diff 形式の出力を表示する方法を指定するには、次の値のいずれかを使用します。
--difftype オプション:

· 統一 (デフォルト)

統一フォーマットの出力を表示します。

· コンテキスト

コンテキスト形式の出力を表示します。

· 異なる

異なる形式の出力を表示します。

· SQL

SQL 変換ステートメントの出力を表示します。

変更された行または欠落した行の出力の表示方法を指定するには、次のいずれかを使用します。
価値観を - フォーマット オプション:

· グリッド (デフォルト)

出力をグリッドまたはテーブル形式で表示します。 mysqlの モニター。

· csvファイル

出力をコンマ区切り値形式で表示します。

· タブ

出力をタブ区切り形式で表示します。

· 垂直

の\ Gコマンドのような単一列形式で出力を表示します。 mysqlの
モニター。

AIマーケティング業界は、 --変更点- オプションは、差の方向を制御します (
変換されるオブジェクト) を差分レポート (デフォルト) または変換のいずれかで指定します。
レポート ( --difftype=sql オプション)。 次のコマンドを考えてみましょう。

mysqldbcompare --server1=root@host1 --server2=root@host2 --difftype=sql \
db1:dbx

一番左のデータベース (db1) は、 --server1 オプション
(ホスト1)。 一番右のデータベース (dbx) は、 --server2
オプション (ホスト 2)。

· --changes-for=server1: の定義を行う方法を示す出力を生成します。
サーバー 1 上のオブジェクトは、サーバー 2 上の対応するオブジェクトの定義と同様です。

· --changes-for=server2: の定義を行う方法を示す出力を生成します。
サーバー 2 上のオブジェクトは、サーバー 1 上の対応するオブジェクトの定義と同様です。

デフォルトの方向はserver1です。

アカウントの接続パラメータ (ユーザー、ホスト、パスワードなど) を指定する必要があります。
操作内のすべてのオブジェクトにアクセスするための適切な権限を持っていること。

バイナリログが有効になっているサーバー上でユーティリティを実行する場合、
比較ステップを記録したい場合は、 --バイナリログを無効にする オプションを選択します。
OPTIONS

mysqldb比較 次のコマンドラインオプションを受け入れます。

--all, -a

すべてのデータベースを含めます。リリース 1.3.5 で追加されました。

・ - ヘルプ

ヘルプメッセージを表示して終了します。

· --changes-for=

他のサーバーと一致する変換を表示するサーバーを指定します。 たとえば、
に一致するようにserver1上のオブジェクト定義を変換する変換を参照してください。
対応する定義をserver2上で使用します。 --changes-for=server1。 許可される値は次のとおりです
server1 および server2。 デフォルトは server1.

· --difftype= 、-d

差分の表示形式を指定します。 許可される形式値は次のとおりです。 統一, コンテキスト,
異なる, SQL。 デフォルトは 統一.

· --disable-binary-logging

バイナリログが有効になっている場合は、比較を防ぐために操作中に無効にしてください。
バイナリログへの書き込み操作を禁止します。注: バイナリログを無効にすると
が必要です スーパー 特権。

· --exclude= 、 -バツ

特定の名前(例:
db1または検索パターン。複数の検索パターンを指定するには、このオプションを複数回使用します。
除外。デフォルトでは、パターンは次のようなデータベースパターンを使用します。 LIKE。 とともに -正規表現
オプション、パターンは名前のマッチングに正規表現を使用します。リリース1.3.5で追加されました。

・--format = 、 -NS

変更された行または欠落した行の表示形式を指定します。指定できる形式値は次のとおりです。
グリッド, csvファイル, タブ, 垂直。 デフォルトは グリッド.

・--quiet、-q

何も印刷しないでください。 成功または失敗の終了コードのみを返します。

· --regexp、--basic-regexp、-G

を使用してパターン マッチングを実行します。 REGEXP オペレーター。 デフォルトでは使用します LIKE
マッチング。リリース1.3.5で追加されました。

· --run-all-tests、-t

最初に見つかった差異で停止しないでください。すべてのオブジェクトを処理します。ショートカットが
リリース 1.3.5 では -a から -t に変更されました。

・--server1 =

次の形式の最初のサーバーの接続情報:
<user> [:passwd>] @host> [:ポート>] [:ソケット>]またはログインパス> [:ポート>] [:ソケット>]。

・--server2 =

XNUMX 番目のサーバーの接続情報の形式は次のとおりです。
<user> [:passwd>] @host> [:ポート>] [:ソケット>]またはログインパス>[::ポート>][::ソケット>]。

· --show-reverse

オブジェクトを適合させるための SQL ステートメントを含む変換レポートを作成します。
定義は逆順に指定されます。例えば、--changes-for が server1 に設定されている場合、
また、server2 の変換も生成します。 注: 逆の変更には注釈が付けられます
コメントとしてマークされています。

· --skip-data-check

データの一貫性チェックをスキップします。

· --skip-diff

オブジェクト定義の差異チェックをスキップします。

· --skip-object-compare

オブジェクトの比較チェックをスキップします。

· --skip-row-count

行数チェックをスキップします。

· --span-key-size=

テーブルの内容を比較するために使用するキーのサイズを変更します。値を大きくすると、
大規模なデータベースを比較するとより正確な結果が得られますが、アルゴリズムが遅くなる可能性があります。

デフォルト値は8です。

・--verbose、-v

表示する情報の量を指定します。 このオプションを複数回使用して増加します
情報の量。 例えば、 -v =冗長、 -vv =より冗長、 -vvv =
デバッグ。

・ - バージョン

バージョン情報を表示して終了します。

· --width=

テストレポートの表示幅を変更します。 デフォルトは 75 文字です。
注意事項

ログインユーザーは、すべてのデータベースとテーブルを読み取るための適切な権限を持っている必要があります。
リストされている。

  --difftype オプションでは、許可される値は大文字と小文字が区別されません。 加えて、
値は、有効な値の明確なプレフィックスとして指定できます。 例えば、
--difftype=d 異なるタイプを指定します。 プレフィックスが複数一致する場合、エラーが発生します。
有効な値。

MySQLクライアントツールへのパスは、のPATH環境変数に含める必要があります
login-pathsで認証メカニズムを使用するため。 これにより、ユーティリティは次のことが可能になります
ログインパス値をから読み取るために必要なmy_print_defaultsツールを使用します。
ログイン構成ファイル(.mylogin.cnf)。

引数として指定されたデータベース識別子に特殊文字が含まれているか、データベース識別子が
予約語の場合は、バッククォートで適切に引用符で囲む必要があります (`)。 順番に、名前
バックティックで引用された場合は、内容に応じて一重引用符または二重引用符で囲む必要があります。
オペレーティング システム、つまり (") Windows または (') Windows 以外のシステムでは、
バッククォートで囲まれた識別子を単一の引数として読み込むユーティリティ。例えば、
データベースを名前と比較する 変な`db.name   その他: 奇妙な`db.name、データベースペア
次の構文を使用して指定する必要があります (Windows 以外の場合)。
''奇妙な「db.name」:`その他:奇妙な「db.name」.


次のコマンドを使用して、ローカルサーバー上のemp1データベースとemp2データベースを比較し、
以前のテストが失敗した場合でもすべてのテストを実行します。

$ mysqldbcompare --server1=root@localhost emp1:emp2 --run-all-tests
# ローカルホスト上のserver1: ... 接続されました。
# server1 上のデータベース emp1 と server2 上のデータベース emp2 をチェックしています
警告: server2:emp2 にはあるが server1:emp1 にはないオブジェクト:
トリガー: trg
手順: p1
表: t1
ビュー: v1
行データの定義
タイプ オブジェクト名 差分カウント チェック
-------------------------------------------------- -------------------------
FUNCTION f1 パス - -
表 部門 合格 合格 不合格
行間でデータの違いが見つかりました:
--- emp1.部門
+++ 従業員2部門
@@ -1,4 +1,4 @@
************************* 1. 行 *************************
部門番号: d002
- 部署名: わかりません
+ 部門名: 財務
1行。
emp1.departments の行は emp2.​​departments にありません
************************* 1. 行 *************************
部門番号: d008
部門名: 研究
1行。
emp2.departments の行は emp1.​​departments にありません
************************* 1. 行 *************************
部門番号: d100
部署名: バカ
1行。
テーブル dept_manager パス パス パス
データベースの整合性チェックに失敗しました。
# ...終わり

同じテーブルレイアウトを持つ2つのデータベースがあります。各テーブルのデータは次のようになります。

mysql> db1.t1 から * を選択します。
+---+---------------+
| ア | バ |
+---+---------------+
| 1 | テスト 789 |
| 2 | テスト 456 |
| 3 | テスト 123 |
| 4 | 新しい行 - db1 |
+---+---------------+
セット内の4個の行(0.00秒)
mysql> db2.t1 から * を選択します。
+---+---------------+
| ア | バ |
+---+---------------+
| 1 | テスト 123 |
| 2 | テスト 456 |
| 3 | テスト 789 |
| 5 | 新しい行 - db2 |
+---+---------------+
セット内の4個の行(0.00秒)

db1.t1をdb2.t1と同じにするためのデータ変換用のSQL文を生成するには、
使用 --changes-for=server1 オプション。また、 -a それを確実にするためのオプション
データ整合性テストが実行されます。次のコマンドは、使用されるオプションと
生成された結果からの抜粋:

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 -a \
--difftype=sql
[...]
# 行データの定義
# タイプ オブジェクト名 差分数
チェック #
-------------------------------------------------- -----------------------
# テーブル t1 合格 合格 不合格
# # direction = server1 のデータ変換:
# 行間でデータの違いが見つかりました: UPDATE db1.t1 SET b = 'Test 123'
WHERE a = '1'; UPDATE db1.t1 SET b = 'Test 789' WHERE a = '3'; DELETE
db1.t1からa = '4'; db1.t1に(a, b)を挿入するVALUES('5', '新しい
行 - db2');
# データベースの整合性チェックに失敗しました。 # # ...完了

同様に、同じコマンドを次のように実行すると、 --changes-for=server2 および --difftype=sql
次のレポートが生成されます。

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server2 -a \
--difftype=sql
[...]
# 行データの定義
# タイプ オブジェクト名 差分数
チェック #
-------------------------------------------------- -----------------------
# テーブル t1 合格 合格 不合格
# # direction = server2 のデータ変換:
# 行間でデータの違いが見つかりました: UPDATE db2.t1 SET b = 'Test 789'
WHERE a = '1'; UPDATE db2.t1 SET b = 'Test 123' WHERE a = '3'; DELETE
db2.t1からa = '5'; db2.t1に(a, b)を挿入するVALUES('4', '新しい
行 - db1');

--difftype=sql SQL生成オプションセット、 --show-reverse オブジェクトを示します
双方向の変換。結果の抜粋を以下に示します。

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 \
--show-reverse -a --difftype=sql
[...]
# 行データの定義
# タイプ オブジェクト名 差分数
チェック #
-------------------------------------------------- -----------------------
# テーブル t1 合格 合格 不合格
# # direction = server1 のデータ変換:
# 行間でデータの違いが見つかりました: UPDATE db1.t1 SET b = 'Test 123'
WHERE a = '1'; UPDATE db1.t1 SET b = 'Test 789' WHERE a = '3'; DELETE
db1.t1からa = '4'; db1.t1に(a, b)を挿入するVALUES('5', '新しい
行 - db2');
# direction = server2 のデータ変換:
# 行間でデータの違いが見つかりました: UPDATE db2.t1 SET b = 'Test 789'
WHERE a = '1'; UPDATE db2.t1 SET b = 'Test 123' WHERE a = '3'; DELETE
db2.t1からa = '5'; db2.t1に(a, b)を挿入するVALUES('4', '新しい
行 - db1');
# データベースの整合性チェックに失敗しました。 # # ...完了

COPYRIGHT


onworks.net サービスを使用してオンラインで mysqldbcompare を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
広告
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。