MySQL - MySQL マスター/スレーブ レプリケーション リストに新しいデータベースを追加する方法の詳細な紹介

黄舟
リリース: 2017-03-09 11:33:37
オリジナル
1984 人が閲覧しました

MySQL - MySQL マスター/スレーブ レプリケーション リストに新しいデータベースを追加する方法の詳細な紹介

MySQL マスター/スレーブ レプリケーション 通常、同期する必要があるデータベースをセットアップします。オプションの binlog-do-db は、マスターで同期する必要があるデータベースを指定し、replicate-do-db でデータの観点から同期する必要があるデータベースを指定します。 (通常、マスターの binlog-do-db のみが設定され、両方を同時に設定する必要はありません。念のため、スレーブに replicate-ignore-db を追加することもできます)。

今日、私が遭遇した問題は、新しいデータベースがマスターに追加されたということです。新しく追加されたデータベースを MySQL のマスター/スレーブ レプリケーション チェーンに追加するにはどうすればよいですか? (つまり、ライブラリ全体を再レプリケーションせずにマスター/スレーブ レプリケーションをリセットします)。

まず、マスター/スレーブ レプリケーションの基本的な手順を列挙しましょう (まず、MySQL マスター/スレーブをそれぞれのサーバーで構成する必要があります)。

1. データベースをコピーします


mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv > all-db-with-master-data.sql.gz
ログイン後にコピー

注: innodb は –single-transaction を使用し、myisam は –lock-all-tables を使用する必要があります。

2. データをコピーしてインポートします

pv < all-db-with-master-data.sql.gz | zcat | mysql
ログイン後にコピー

3. スレーブデータベースを起動します。

slave start
ログイン後にコピー

注: メインに切り替えるステートメントは、エクスポートされた SQL ステートメントに既に含まれています。注意深く確認してください。マスターを master_log_file=’(relay_master_log_file の binlog 名)’、master_log_pos=(exec_master_log_pos 番号) に変更します。
それでは、既存のマスター/スレーブ レプリケーション構造に新しいデータベースを追加するにはどうすればよいでしょうか?たとえば、マスター サーバーにデータベース (例: newdb という名前のデータベース) を追加するとします。具体的な操作は以下の通りです:

1. サービスからスレーブデータベースを停止します。

stop slave;
ログイン後にコピー

2. メインサーバーで、新しいデータベースをエクスポートします。

mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql
ログイン後にコピー

3. メインサーバーの my.cnf ファイルを変更します

メインサーバーで、my.cnf ファイルを変更し、新しいライブラリを binlog-do-db パラメーターに追加し、mysql を再起動します。

4. 現在のログ ファイルと場所を見つけます

エクスポートされた newdb.sql で現在のログ ファイルと場所を見つけます (マスターを... に変更します)
次に、スレーブ サーバーをこの場所で実行します。

start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;
ログイン後にコピー

ここで、MASTER_LOG_FILE と MASTER_LOG_POS は、エクスポートされたデータベース newdb.sql の先頭にあります。

5. 新しいライブラリをスレーブサーバーにインポートします。

mysql < newdb.sql
ログイン後にコピー

6. スレーブサーバーを起動します

start slave
ログイン後にコピー

さらに重要なのは、マスターサーバーに新しいライブラリをエクスポートするときのログの位置 (位置 A) です。この点を境界線として使用してください。新しい図書館。
この方法は、特定のデータベースまたは特定のデータテーブルが同期していない状況にも適用できます。たとえば、マスター/スレーブデータベース内のテーブルに何らかの理由でデータの不整合がある場合、上記の方法は削除するだけで済みます。データベースを再起動する手順、その他の操作は基本的にすべて同じです


以上がMySQL - MySQL マスター/スレーブ レプリケーション リストに新しいデータベースを追加する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!