MySQLのレプリケーションは、「メイン」のマスターコピーからバイナリログログによって実現マスタ - スレーブサーバからMySQLデータベースを参照し、これは複製に基づいている「から」マスターサーバー上のMySQLデータベースを指していますデータベースレベル、これは、好ましくは、2台のMySQLサーバーが置かれている(マスタースレーブのレプリケーションを実現するために、我々は少なくとも二つのMySQLサーバーを持っている必要があり、その後、サーバーのデータベース名からプライマリ・データベース・サーバー名と一致する必要があります別のホスト上で、又は二MySQLのホストポートに取り付けられている)異なっていてもよいです。
一般に、メインライブラリーおよびライブラリからのMySQLデータベースは、別のホストに分散されています。今、私たちは1つのホストのみを持っており、Windowsシステムの場合は、どのようにメインのMySQLからそれをコピーするには?ここに方法は次のとおりです。
ここでは、唯一のマスター・スレーブの動作方法をご紹介します。
マイコンピュータがXAMPPインストール(同様のWAMPのインストールパッケージを使用した)環境に統合されている、あなたは、MySQLマスタサーバとしてMySQLサービスの中に置くことができます。だから我々は、サーバーのデータベースからなど、MySQLをインストールするには、このコンピュータ上で必要になります。
私のコンピュータXAMPPでのMySQLのバージョンは5.6.20としてインストール、ポートは3306です。
私たちが見る、インストール方法、3307にポート、MySQLのインストール(最高バージョンをし、避けるために、同様の問題の同じバージョンをインストール)する必要があります。http://blog.csdn.net/lamp_yang_3533/article/details/52263751
データベースサーバのパラメータ:
- マスターサーバー(マスター):IPが127.0.0.1で、ポート3306
- サーバー(スレーブ)から:IPは、ポート3307 127.0.0.1です
メインサーバーの構成:
(Eが:\ XAMPP \のMySQL \ビン\のmy.ini)マスタ・データベース・サーバ構成ファイルを変更し、底[mysqldを]タグで、次のコードを追加します。
データベースをバックアップする必要性#
ビンログ-DO-DB =テスト
#データベースをバックアップする必要はありません。
ビンログ-無視-DB = mysqlの
#バイナリログをオンに
ログ・ビン= mysqlのビン
サーバID#
サーバID = 1
終了保存、MySQLのマスターサーバーを再起動します。
指定された必要性のためのbinlog-DO-DBデータベースは、これら2つのパラメータは、サーバのコピーから、すべてのプライマリサーバのデータベースに設定されていない場合のbinlog-無視-DB指定されたデータベースは、同期を必要としない、同期します。
一般的にこの目的のために、我々は、プライマリサーバ上で(例えばUSER01として、パスワードは123456です)新しいユーザーを作成する必要があり、同期アカウントのrootアカウントを持っていません。
ここでは、次のように、作成するコマンドラインを使用します。
オープンcmdは、Eへの切り替え:\ xamppの\ mysqlの\ binに、MySQLのマスターサーバーは、rootアカウントに接続されています。
mysqlの-uroot -p -P3306
新しいユーザーを作成します。
「123456」によって識別されるユーザuser01'@'127.0.0.1」を作成します。
(クライアントへの接続を許可するIPアドレス、IPアドレスの後ろに@。)
次に、新規ユーザーのマスター・スレーブレプリケーションのアクセス許可を構成します。:
*上のレプリケーションスレーブを付与*「123456」で識別される「user01'@'127.0.0.1」に。
(言葉「%」は、それはクライアントがIPアドレスを制限しないことを意味している場合、IPアドレス、IPアドレスの後ろに、@は、クライアントの接続を可能にするために)
プライマリ・サーバのデータベース(テスト)は、データがあった場合、我々は、サーバーにプライマリサーバからデータを手動でコピーする必要があります。ここに方法は次のとおりです。
この場合、私たちはデータベース(テスト)、テストをバックアップし、テーブルbasic_userがあり、表には、データを持っています。次のように我々はデータをコピーする場合、データはデータベースのテストに更新されないようにするために、我々はデータベースをロックする必要があり、コマンドは次のとおりです。
読み込みロックと同一平面のテーブル。
このコマンドは、ここでは、読み取りと書き込みロックの違いについてですグローバルリードロックされ、それはあなたのすべてのプライマリ・データベース・サーバを与える方法で、読み取りロックに連結されています。
- ロック(読み取りロック)をお読みください。また、すべての読み取り操作を許可する、共有ロックとして知られているが、すべての接続が唯一の書き込みデータをデータを読み取ることはできませんが、という書き込みをブロックします。
- 書き込みロック(書き込みロック):また排他ロック、排他ロックと呼ばれるには、読み取り専用と現在の接続を作成し、同時に他の読み取りおよび書き込み操作を許可しないことができます。
プライマリ・データベース・サーバをロックした後、我々は、データベーステストを作成し、サーバからのもの、及び(テーブル構造とテーブルデータを含む)すべてのテーブルがインポートされます。
私たちは、その後、ロックを解除するには、次のコマンドを実行します。
ロック解除のテーブル;
マスターサーバーのマスターのステータスを表示します。
MySQLの>ショーマスターのステータス。
+ ------------------ + ---------- + -------------- + ---- -------------- + ------------------- +
| ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+ ------------------ + ---------- + -------------- + ---- -------------- + ------------------- +
| mysqlの-bin.000008 | 498 | テスト| mysqlの| |
+ ------------------ + ---------- + -------------- + ---- -------------- + ------------------- +
サーバーの構成から:
サーバーのデータベース(E:\ mysqlの\ my.iniファイル)から変更された設定ファイル、下部にある[mysqldを]タグ、次のコードを追加します。
#ポート
ポート= 3307
サーバID#
SERVER_ID = 2
#バイナリログの電源を入れます(サーバはバイナリログを開く必要はありませんから)
ログ・ビン= mysqlのビン
終了保存、MySQLサービスを再起動します。
サーバからのMySQLの接続:
mysqlの-uroot -p -P3307
設定パラメータのコピー:
MASTER_HOST = '127.0.0.1'、master_user = 'USER01'、master_password = '123456'、MASTER_PORT = 3306、MASTER_LOG_FILE = 'のMySQL-bin.000008' に変更マスタ= 498 MASTER_LOG_POS。
詳細なパラメータ:
MASTER_HOST:IPマスターサーバー
master_user:プライマリサーバー新しく作成された上でのユーザ名
master_password:ユーザーのパスワード
MASTER_PORT:ポートマスターは、デフォルトを変更していない場合。
MASTER_LOG_FILE:マスターサーバーのステータスファイルの値を完了したときに、マスタのバイナリログファイルの名前を、メインディスプレイを見ます
ログ位置の位置値、マスタサーバの状態を充填するときにメインディスプレイを見:MASTER_LOG_POS
スレーブサーバからのレプリケーションを開始します。
スレーブを起動します。
サーバからスレーブのステータスを表示します。
MySQLの>ショースレーブステータス\ G
*************************** 1行******************** *******
Slave_IO_State:イベントを送信するためにマスターを待っています
MASTER_HOST:127.0.0.1
Master_User:USER01
MASTER_PORT:3306
Connect_Retry:60
MASTER_LOG_FILEます。mysql-bin.000009
Read_Master_Log_Pos:120
RELAY_LOG_FILE:HP-PC-リレー-bin.000004
RELAY_LOG_POS:283
Relay_Master_Log_Fileます。mysql-bin.000009
Slave_IO_Running:はい
Slave_SQL_Running:はい
値Slave_IO_RunningとSlave_SQL_RunningがYesにしている場合は、メインコンフィギュレーションが正常に同期され、プライマリサーバとデータベースサーバのデータから自動的に達成されてきたことすべてから複製されています。
その後、限りマスターサーバーが(例えば:データベースまたはデータ・テーブルの変更のテーブルに新しいテスト)データを更新するように、自動的にサーバからマスタサーバと整列されます。誰かが故意にサーバーからデータを変更した場合、我々は相互のマスタースレーブに2台のMySQLサーバーを置く場合を除きしかし、プライマリサーバ内のデータは、更新を同期しません。