これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド mysqldbcopy です。
プログラム:
NAME
mysqldbcopy - サーバー間でデータベース オブジェクトをコピーする
SYNOPSIS
mysqldbcopy [オプション] データベース名 [:新しいデータベース名]
DESCRIPTION
このユーティリティは、ソース サーバー上のデータベースを宛先サーバー上のデータベースにコピーします。
ソースサーバーと宛先サーバーが異なる場合、データベース名は同じでも、
違う。 ソースサーバーと宛先サーバーが同じ場合、データベース名は次のようにする必要があります。
異なる。
このユーティリティは、コマンド ラインで XNUMX つ以上のデータベース ペアを受け入れます。 データベースに名前を付けるには
ペアにする、使う データベース名:新しいデータベース名 ソース名と宛先名を指定する構文
明示的に。 ソースと宛先のデータベース名が同じ場合、 データベース名 使用することができる
の略記 データベース名:データベース名.
デフォルトでは、この操作によりすべてのオブジェクト (テーブル、ビュー、トリガー、イベント、プロシージャ、
機能、およびデータベース レベルの許可) とデータを宛先サーバーに送信します。 がある
一部またはすべてのオブジェクトのコピーをオフにしたり、データをコピーしなかったりするオプション。
特定のオブジェクトを名前で除外するには、 -除外する 名前が入ったオプション db.*オブジェクト*
形式を指定することも、検索パターンを指定することもできます。 例えば、 --exclude=db1.trig1 を除きます
シングルトリガーと --exclude=trig_ 名前を持つすべてのデータベースからすべてのオブジェクトを除外します
trig で始まり、次の文字が続きます。
デフォルトでは、ユーティリティは同じものを使用して宛先サーバー上に各テーブルを作成します。
ストレージ エンジンを元のテーブルとして使用します。 これをオーバーライドしてストレージ エンジンを指定するには、
宛先サーバー上に作成されたすべてのテーブルに使用する場合は、 -- 新しいストレージ エンジン オプションを選択します。
宛先サーバーが新しいエンジンをサポートしている場合、すべてのテーブルがそのエンジンを使用します。
宛先サーバーが使用しないテーブルに使用するストレージ エンジンを指定するには
ソースサーバー上の元のストレージエンジンをサポートする場合は、 --デフォルトのストレージ エンジン
オプションを選択します。
当学校区の -- 新しいストレージ エンジン オプションが優先されます --デフォルトのストレージ エンジン 両方ある場合
与えられた。
Status -- 新しいストレージ エンジン or --デフォルトのストレージ エンジン オプションが与えられ、
宛先サーバーが指定されたストレージ エンジンをサポートしていない場合、警告が発行され、
代わりに、サーバーのデフォルトのストレージ エンジン設定が使用されます。
デフォルトでは、この操作では一貫性のあるスナップショットを使用してソース データベースを読み取ります。 に
ロックモードを変更するには、 -ロック ロック タイプの値を指定したオプション。 値を使用する
of ロックなし ロックを完全にオフにするか、 すべてのロック テーブルロックのみを使用します。 の
デフォルト値は スナップショット。 さらに、ユーティリティは WRITE ロックを使用して、
コピー中の宛先テーブル。
マスターとスレーブ間でデータをコピーするためのレプリケーション ステートメントを含めることができます。
奴隷の間で。 の --rpl オプションを使用すると、次のレプリケーションから選択できます
エクスポートに含めるステートメント。
· マスター
を含める CHANGE MASTER 現在のサーバーで新しいスレーブを開始するステートメント
マスターを務める。 これにより、適切な STOP および START スレーブ ステートメントが実行されます。
当学校区の STOP SLAVE ステートメントはコピーの開始時に実行され、 CHANGE MASTER
続いて 開始 SLAVE ステートメントはコピー後に実行されます。
· スレーブ
を含める CHANGE MASTER 現在のサーバーを使用して新しいスレーブを開始するステートメント
マスター情報。 これにより、適切な STOP および START スレーブ ステートメントが実行されます。 の
STOP SLAVE ステートメントはコピーの開始時に実行され、 CHANGE MASTER
続いて 開始 SLAVE コピーの後にステートメントが続きます。
レプリケーション ユーザーを CHANGE MASTER ステートメントを使用するには、 --rpl-ユーザー オプション
ユーザーとパスワードを指定します。 このオプションを省略した場合、ユーティリティは次のことを試みます。
レプリケーション ユーザーを識別します。 候補者や利用者が複数の場合
パスワードが必要な場合、ユーティリティはエラーで中止されます。
GTID が有効になっている (GTID_MODE = ON) サーバー上のデータベースをコピーしようとすると、
コピーにすべてのデータベースが含まれていない場合は、警告が生成されます。 これは、
生成される GTID ステートメントには、それらのデータベースだけでなく、すべてのデータベースの GTID が含まれます。
輸出で。
GTID が有効なサーバー上でデータベースをコピーする場合にも、ユーティリティは警告を生成します。
しかし、 --skip-gtid オプションを選択します。
GTID を最大限に活用するには、サーバー上のすべてのデータベースを
- すべて オプションを選択します。
OPTIONS
mysqldbcopy 次のコマンドラインオプションを受け入れます。
・ - ヘルプ
ヘルプメッセージを表示して終了します。
· --default-storage-engine=
宛先サーバーが元のサーバーをサポートしていない場合にテーブルに使用するエンジン
ソースサーバー上のストレージエンジン。
· --宛先=
次の形式の宛先サーバーの接続情報。
<user> [:passwd>] @host> [:ポート>] [:ソケット>]またはログインパス> [:ポート>] [:ソケット>]
(どこはオプションであり、次のいずれかですまたは提供されなければなりません)。
· --exclude= 、 -バツ
次のような特定の名前を使用して、XNUMX つ以上のオブジェクトを操作から除外します。
db1.t1 または検索パターン。 複数を指定するには、このオプションを複数回使用します。
除外事項。 デフォルトでは、パターンは次を使用します。 LIKE マッチング。 とともに -正規表現 オプション、パターン
つかいます REGEXP マッチング。
このオプションは助成金には適用されません。
・ - 力
コピー対象の各データベースが存在する場合は、そこに何かをコピーする前に削除します。 それなし
このオプションを使用すると、オブジェクトを既存のデータベースにコピーしようとするとエラーが発生します。
· --locking=
操作に必要なロックの種類を選択します。 許可されるロック値は次のとおりです。 ロックなし (使ってはいけません
任意のテーブルロック)、 すべてのロック (テーブルロックを使用しますが、トランザクションも一貫性もありません)
読んで スナップショット (単一トランザクションを使用した一貫した読み取り)。 デフォルトは
スナップショット.
· --new-storage-engine=
宛先サーバー上に作成されたすべてのテーブルに使用するエンジン。
・--quiet、-q
静かに実行するには、すべてのメッセージをオフにします。
· --regexp、--basic-regexp、-G
を使用してパターン マッチングを実行します。 REGEXP オペレーター。 デフォルトでは使用します LIKE の
マッチング。
· --rpl= 、 --replication=
レプリケーション情報を含めます。 許可される値は次のとおりです マスター (を含む CHANGE
MASTER ソースサーバーをマスターとして使用するステートメント)、 スレーブ (を含む CHANGE
MASTER 宛先サーバーのマスター情報を使用するステートメント)、および 両言語で (含まれるもの
マスター スレーブ 該当する場合はオプション)。
· --rpl-user=
次の形式のレプリケーション ユーザー要件のユーザーとパスワード。
<user> [:password>]またはログインパス>。 例: rpl:passwd デフォルト = なし。
· l --skip-gtid
コピー操作中の GTID ステートメントの作成と実行をスキップします。
・ - 全て
サーバー上のすべてのデータベースをコピーします。
· --skip=
操作でスキップするオブジェクトをコンマ区切りのリスト (スペースなし) として指定します。
許可される値は次のとおりです CREATE_DB, DATA, イベント, 関数, GRANTS, 手続き, TABLES,
トリガー, VIEWS.
· --source=
次の形式の宛先サーバーの接続情報。
<user> [:passwd>] @host> [:ポート>] [:ソケット>]またはログインパス>[::ポート>][::ソケット>]
(どこはオプションであり、次のいずれかですまたは提供されなければなりません)。
· --スレッド
サーバー間コピーには複数のスレッドを使用します。 デフォルトは 1 です。
・--verbose、-v
表示する情報の量を指定します。 このオプションを複数回使用して増加します
情報の量。 例えば、 -v =冗長、 -vv =より冗長、 -vvv =
デバッグ。
・ - バージョン
バージョン情報を表示して終了します。
注意事項
アカウントの接続パラメータ (ユーザー、ホスト、パスワードなど) を指定する必要があります。
操作内のすべてのオブジェクトにアクセスするための適切な権限を持っていること。
ソースからすべてのオブジェクトをコピーするには、ユーザーは次の権限を持っている必要があります。 SELECT SHOW
VIEW データベースの場合、および SELECT mysqlデータベースの場合。
すべてのオブジェクトをコピー先にコピーするには、ユーザーは次の権限を持っている必要があります。 CREATE
データベース、 スーパー (バイナリ ロギングが有効な場合) プロシージャと関数、および GRANT
オプション 助成金をコピーします。
実際に必要な権限は、インストールごとに異なる場合があります。
セキュリティ権限が存在するか、データベースに次のような特定のオブジェクトが含まれているかどうか。
ビューまたはイベント、およびバイナリ ログが有効かどうか。
当学校区の -- 新しいストレージ エンジン --デフォルトのストレージ エンジン オプションはすべての宛先に適用されます
操作中のテーブル。
オプションの組み合わせによっては、操作中にエラーが発生する場合があります。 例えば、
ビューではなくテーブルを削除すると、ビューのコピー時にエラーが発生する可能性があります。
当学校区の --rpl このオプションは、同じサーバー上のデータベースをコピーする場合には無効です。 エラーが発生します
生成された。
データをコピーして GTID コマンドを含めると、次のようなエラーが発生する場合があります。
「GTID_PURGED は、GTID_EXECUTED が空の場合にのみ設定できます。」 これが発生する理由は、
宛先サーバーはクリーンなレプリケーション状態ではありません。 この問題を軽減するには、次のことができます。
コピーを実行する前に、コピー先で「RESET MASTER」コマンドを発行してください。
外部キー制約を含むデータベースのクローンを作成しても、その制約は変更されません。
クローンされたテーブル。 たとえば、テーブル db1.t1 に外部キー制約がある場合、
db1.t2、db1 が db2 に複製されると、テーブル db2.t1 には外部キー制約が適用されます。
db1.t2。
MySQLクライアントツールへのパスは、のPATH環境変数に含める必要があります
login-pathsで認証メカニズムを使用するため。 これにより、ユーティリティは次のことが可能になります
ログインパス値をから読み取るために必要なmy_print_defaultsツールを使用します。
ログイン構成ファイル(.mylogin.cnf)。
引数として指定されたデータベース識別子に特殊文字が含まれているか、データベース識別子が
予約語の場合は、バッククォートで適切に引用符で囲む必要があります (`)。 順番に、名前
バックティックで引用された場合は、内容に応じて一重引用符または二重引用符で囲む必要があります。
オペレーティング システム、つまり (") Windows または (') Windows 以外のシステムでは、
バッククォートで囲まれた識別子を単一の引数として読み取るユーティリティ。 たとえば、
という名前のデータベース 変な`db.name その他: 奇妙な`db.name、データベース ペアは次のようにする必要があります。
次の構文を使用して指定します (Windows 以外の場合)。
''奇妙な「db.name」:`その他:奇妙な「db.name」.
例
次の例は、ユーティリティを使用して、という名前のデータベースをコピーする方法を示しています。
util_test を同じサーバー上の util_test_copy という名前の新しいデータベースにコピーします。
$ mysqldbcopy \
--source=root:pass@localhost:3310:/test123/mysql.sock \
--destination=root:pass@localhost:3310:/test123/mysql.sock \
util_test:util_test_copy
# ローカルホスト上のソース: ... 接続されました。
# ローカルホスト上の宛先: ... 接続されました。
# データベースをコピーする util_test の名前が util_test_copy に変更されました
# TABLE util_test.t1 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t2 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t3 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t4 をコピーする
# テーブルデータをコピーします。
# VIEW util_test.v1 のコピー
# TRIGGER util_test.trg のコピー
# PROCEDURE util_test.p1 のコピー
# FUNCTION util_test.f1 をコピー
# EVENT util_test.e1 のコピー
# util_test から GRANTS をコピー
#...終わり。
コピーするデータベースに InnoDB テーブルのみが含まれておらず、
読み取りステップ中にテーブルをロックすることで、コピーされたデータのデータ整合性を確保するには、
--locking=ロックオール コマンドのオプション:
$ mysqldbcopy \
--source=root:pass@localhost:3310:/test123/mysql.sock \
--destination=root:pass@localhost:3310:/test123/mysql.sock \
util_test:util_test_copy --locking=lock-all
# ローカルホスト上のソース: ... 接続されました。
# ローカルホスト上の宛先: ... 接続されました。
# データベースをコピーする util_test の名前が util_test_copy に変更されました
# TABLE util_test.t1 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t2 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t3 をコピーする
# テーブルデータをコピーします。
# TABLE util_test.t4 をコピーする
# テーブルデータをコピーします。
# VIEW util_test.v1 のコピー
# TRIGGER util_test.trg のコピー
# PROCEDURE util_test.p1 のコピー
# FUNCTION util_test.f1 をコピー
# EVENT util_test.e1 のコピー
# util_test から GRANTS をコピー
#...終わり。
XNUMX つ以上のデータベースをマスターからスレーブにコピーするには、次のコマンドを使用できます。
データベースをコピーします。 マスターをソースとして使用し、スレーブを宛先として使用します。
$ mysqldbcopy --source=root@localhost:3310 \
--destination=root@localhost:3311 test123 --rpl=master \
--rpl-user=rpl
# ローカルホスト上のソース: ... 接続されました。
# ローカルホスト上の宛先: ... 接続されました。
# ローカルホスト上のソース: ... 接続されました。
# スレーブの停止
# データベースのコピー test123
# TABLE test123.t1 をコピーします
# TABLE test123.t1 のデータをコピーします
# 現在のサーバーにマスターとして接続します
# スレーブの起動
#...終わり。
あるスレーブから同じマスターに接続されている別のスレーブにデータベースをコピーするには、
次のコマンドは、ソースとしてコピーされるデータベースを持つスレーブを使用し、
データベースを宛先としてコピーする必要があるスレーブ:
$ mysqldbcopy --source=root@localhost:3311 \
--destination=root@localhost:3312 test123 --rpl=slave \
--rpl-user=rpl
# ローカルホスト上のソース: ... 接続されました。
# ローカルホスト上の宛先: ... 接続されました。
# ローカルホスト上のソース: ... 接続されました。
# スレーブの停止
# データベースのコピー test123
# TABLE test123.t1 をコピーします
# TABLE test123.t1 のデータをコピーします
# 現在のサーバーのマスターに接続します
# スレーブの起動
#...終わり。
COPYRIGHT
onworks.net サービスを使用してオンラインで mysqldbcopy を使用する