ホームページ  >  記事  >  データベース  >  Windows ホスト上で MySQL マスター/スレーブ レプリケーションを実装するにはどうすればよいですか?

Windows ホスト上で MySQL マスター/スレーブ レプリケーションを実装するにはどうすればよいですか?

亚连
亚连オリジナル
2018-05-12 09:22:391884ブラウズ

MySQL のマスター/スレーブ レプリケーションは、binlog ログを通じて実装されます。マスター/スレーブ レプリケーションの「マスター」は MySQL マスター サーバー上のデータベースを指し、「スレーブ」は MySQL スレーブ サーバー上のデータベースを指します。レプリケーションはデータベース レベルに基づいて行われるため、スレーブ サーバーのデータベース名はマスター サーバーのデータベース名と一致している必要があります。また、マスター/スレーブ レプリケーションを実現するには、少なくとも 2 つの MySQL サーバーが必要です。 2 つの MySQL サーバー)。サーバーが異なるホストに配置されているか、2 つの MySQL が異なるポートを持つ 1 つのホストにインストールされています。

一般的に、MySQL データベースのメイン データベースとスレーブ データベースは別のホストに分散されます。現在ホストが 1 つしかなく、それが Windows システムである場合、MySQL のマスター/スレーブ レプリケーションを実装するにはどうすればよいでしょうか?方法は以下の通りです:

ここではマスター1台、スレーブ1台の操作方法のみを紹介します。

私のコンピューターには xampp 統合環境 (wamp インストール パッケージと同様) がインストールされており、その中の MySQL サービスは MySQL のメイン サーバーとして使用できます。次に、このコンピュータにデータベースのスレーブ サーバーとして別の MySQL をインストールする必要もあります。

私のコンピューター xampp にインストールされている MySQL のバージョンは 5.6.20 で、ポートは 3306 です。

別の MySQL をインストールする必要があります (問題を回避するには、同じバージョンまたは類似のバージョンをインストールするのが最善です)。ポートは 3307 に変更されます

データベース サーバー パラメーター:


  • マスターサーバー (マスター): IP は 127.0.0.1、ポートは 3306 です

  • スレーブ (スレーブ): IP は 127.0.0.1、ポートは 3307 です

マスターサーバーの構成:

マスターサーバーのデータベース構成ファイル (

E:xamppmysqlbinmy.ini) を変更し、[mysqld] タグの下部に次のコードを追加します:

#バックアップする必要があるデータベース

binlog-do -db=test

#不要 バックアップされたデータベース

binlog-ignore-db=mysql

#バイナリログを有効にする

log-bin=mysql-bin

#サーバーid

server-id=1

保存して終了し、MySQL メイン サーバーを再起動します。

binlog-do-db は同期する必要があるデータベースを指定するために使用され、

binlog-ignore-db は同期する必要のないデータベースを指定します。どちらのパラメータも設定されていない場合、スレーブ サーバーはすべてのデータベースをコピーします。マスターサーバー。

通常、root アカウントはアカウントの同期には使用されません。このため、メインサーバー上に新しいユーザー (user01、パスワードは 123456 など) を作成する必要があります。

ここではコマンドラインを使用して作成します。方法は次のとおりです:

cmd を開き、E:xamppmysqlbin に切り替え、root アカウントを使用して MySQL メインサーバーに接続します:

mysql -uroot -p -P3306

新しいユーザーを作成します:

create user 'user01'@'127.0.0.1' は '123456' で識別されます;

(以降の IP アドレス@ は、接続を許可されているクライアントの IP アドレスです。)

次に、新しいユーザーのマスター/スレーブ レプリケーションのアクセス許可を構成します。

助成金 *.* のレプリケーション スレーブ、'user01'@'127.0.0.1' は '123456' で識別されました;

(@ の後の IP アドレスは、接続を許可されているクライアントの IP アドレスです。 '%' に変更されました。これは、クライアントに IP アドレス制限がないことを意味します)

メインサーバーのデータベース (テスト) に既にデータがある場合は、メインサーバーのデータを手動でコピーする必要があります。まずスレーブサーバー。方法は次のとおりです:

この場合、1 つのデータベース (テスト) のみをバックアップします。テストにはテーブル Basic_user があり、テーブルにはすでにデータがあります。データをコピーするときにデータベース テストのデータが更新されないようにするには、最初にデータベースをロックする必要があります。コマンドは次のとおりです。

このコマンドはグローバル読み取りロックで、メイン サーバーのすべてのデータベースに読み取りロックを追加します。読み取りロックと書き込みロックの違いは次のとおりです。


読み取りロック (読み取りロック) とも呼ばれます。共有ロック。すべての
  • 読み取り操作は許可されますが、書き込み操作はブロックされます。つまり、すべての接続はデータの読み取りのみが可能ですが、データの書き込みは許可されません。

    書き込みロック(書き込みロック):排他ロック、排他ロックとも呼ばれ、現在の接続の読み取りと書き込みのみを許可し、他の同時読み取り操作と書き込み操作を許可しません。

マスターサーバーのデータベースをロックした後、スレーブサーバーにもデータベーステストを作成し、すべてのテーブル(テーブル構造とテーブルデータを含む)をインポートします。

次に、次のコマンドを実行してロックを解除します:

メインサーバーのマスターステータスを表示します: mysq l > マスターを表示ステータス;

+---------------------+----------+-------------- +--- ---------------+-------------------+ | ファイルの位置 | | Executed_Gtid_Set | +-----------------+----------+-------------- -+--- ---------------+-------------------+| 498 | テスト | ------------------+-----------------+

サーバーからの設定:

スレーブサーバーのデータベース設定ファイル (

E:mysql

my.ini) を変更し、

[mysqld] タグの最後に次のコードを追加します。 #ポート

ポート = 3307#サーバーidserver_id = 2

#バイナリ ログを有効にする (スレーブ サーバーはバイナリ ログを有効にする必要はありません)

log-bin=mysql-bin

保存して終了し、MySQL サービスを再起動します。 mysqlスレーブサーバーへの接続:

mysql-uroot-pp3307

configureレプリケーションパラメーター:

master_host= '127.0.0.1'、master_user = 'user01'、master_passwordへ= '123456',

master_port=3306,master_log_file='mysql-bin.000008',master_log_pos=498;パラメータの詳細:

master_host:

メインサーバーのIP マスターユーザー : master サーバー上で新しく作成されたユーザー名
master_password: ユーザーのパスワード
master_port: マスターサーバーのポート 変更されていない場合は、デフォルトで十分です。

master_log_file

: マスターサーバーのバイナリログファイルの名前、マスターサーバーのマスターステータスを表示するときに表示されるファイルの値を入力します

master_log_pos: ログの場所、

を入力しますマスターサーバーのマスターステータスを表示するには スレーブサーバーのスレーブレプリケーション機能を開始するときに表示されるPositionの値: start smile;

スレーブサーバーのスレーブステータスを表示:

mysql> ; スレーブのステータスを表示 G

******* ********************* 1. 行 *********** *************** I SLAVE_IO_STATE: マスターがイベントを送信するのを待っています

Master_host: 127.0.0.1

Master_user: User01

Master_Port: 3306

Connect_retry: 60

Master_log_file: mysql-bin.000000 09_ read_master_log_pos:120

leray_log_file:hp-pc-relay-bin.000004

HPを使用してHP-PC-RELAY-BINを使用します

Slave_IO_Running と Slave_SQL_Running の値が両方とも Yes の場合、マスター/スレーブ レプリケーションのすべての構成が成功したことを意味します。つまり、スレーブ サーバーはデータベース データをマスター サーバーと自動的に同期できます。

その後、マスターサーバーのデータが更新される限り(たとえば、テストデータベースに新しいテーブルが作成されるか、テーブル内のデータが変更される)、スレーブサーバーは自動的に一貫性を保ちます。マスターサーバー。しかし、誰かがスレーブ サーバー上のデータを意図的に変更した場合、2 つの MySQL サーバーが相互にマスター/スレーブになるように設定しない限り、マスター サーバー上のデータは同期的に更新されません。
上記は、ウィンドウ環境で mysql を構成するマスター/スレーブ アーキテクチャについてまとめたものです。興味のある方は試してみてください。

関連記事:

MySQLの基礎知識まとめ

mysq用mysql-5.7.21のインストールl ダウンロード、インストールして簡単に使用できます

以上がWindows ホスト上で MySQL マスター/スレーブ レプリケーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。