2017-06-08 10 views
1

私はMySQL Master-Slaveの初心者です。binlog-do-dbとreplicate-do-dbの違いは何ですか?

と私は2つのチュートリアルを読んでいます。最初のチュートリアルで

  1. How to Setup MariaDB (Master-Slave) Replication

  2. Setup MariaDB Master-Slave Replication


。それは私

[mysqld] Master section 

log-bin 

server_id=1 

replicate-do-db=employees 

bind-address=192.168.0.18 


[mysqld] SLAVE Section 

server_id=2 
replicate-do-db=employees 

ことを確認してくださいしかし、第二のチュートリアルでは、それは

[mysqld] Master 
server_id=1 
log-basename=master 
log-bin 
binlog-format=row 
binlog-do-db=unixmen 

[mysqld] Slave 
server-id = 2 
replicate-do-db=unixmen 

そして、なぜ私はそれをインポートし、テーブルをロックし、SQLをmysqldumpをする必要があることを私に示して?

FLUSH TABLES WITH READ LOCK; 

+0

これらの設定は、実際には非常に危険です。データベースのデータが失われました。ここを参照してください。https://www.percona.com/blog/2009/05/14/why-mysqls-binlog-do-db-option -危険です/ – JosMac

答えて

5

免責事項:簡単で、ここでは非混乱物事を保つために、私はシンプルな1つのマスターの話を - 1スレーブ設定。チェーンなし、マスタマスター、または何でも...

最初のチュートリアルは間違っています。binlog-do-dbにする必要があります。

レプリケーションは次のように動作します。

マスターはすべてのトランザクションをバイナリログに書き込みます。
スレーブはマスターバイナリログからトランザクションを読み取り、リレーログに書き込みます。
その後、スレーブは中継ログからステートメントを実行します。

binlog-do-dbは、指定されたDBのマスタ書き込み専用ステートメントをバイナリログにします。

replicate-do-dbは、スレーブに、リレーログからのステートメント、つまり指定されたDBのステートメントを読み込ませるだけです。

replicate-do-dbは、読み取り元の中継ログがないため、マスターには影響しません。


LOCK TABLES部分があるので、データは一貫しています。データのバックアップ中にマスター上のデータが変更されないようにします。

スレーブでこのバックアップからデータベースを復元すると、スレーブを設定するときに常に新しいものから開始するとは限らないためです。したがって、両方のサーバーで同じデータベースを提供するだけで、スレーブにマスタとトランザクションがどの座標に対応しているかを教えて、レプリケーションを開始することができます。また、データをダンプした後にマスターをロック解除することもできます。バイナリログのステートメントがログのローテーションによって失われる前に、スレーブを起動させるようにしてください。

関連する問題