web-dev-qa-db-ja.com

MySQL MASTER MASTERレプリケーション用のロードバランサ

典型的な要件があります。

MySQL MASTER-MASTERレプリケーションのセットアップが完了しました。これら2つのMySQLサーバー間でLoad Balancerをセットアップする必要があります。

WEBベースのロードバランサーの設定は承知していますが、MySQLサーバー用のロードバランサーが必要です。

要件は、1つのアプリケーションサーバーと2つのDBサーバーがあり、アプリケーションサーバーがロードバランサーに接続し、ロードバランサーが負荷を共有することによってDBサーバーに接続することです。

このための最善の方法を教えてください。また、長所と短所があるかどうかも知らせてください。

3
Phanindra

すでにマスターマスターレプリケーションを実行しているので、ここにロードバランサーのヒントを示します。 HAProxy を使用します。

これはフリーソフトウェアバランサーであり、必要なシステムリソースが非常に少なく、設定も非常に簡単です。

ヒント:2つのロードバランサーを keepalived でインストールするか、重大なボトルネックを作成したことを覚えておいてください。

設定keepalived + 2x haproxy + 2x master-mysqlを9か月間使用しましたが、pdo_mysqlの1つの問題に気づきました-私の問題はここで確認できます https://stackoverflow.com/questions/26871221/slow -pdo-mysql-mysqli-with-haproxy

小さな設定例もあります(この例ではホットスタンバイマスターです)。

2
da_didi

マスターマスターレプリケーションの利点から始めましょう。どちらかのサーバーからもう一方のサーバーにデータをコピーできるようにして、冗長性を追加し、データへのアクセス、高可用性を処理する際の効率を高めます。次に、短所:コストについて(1台のマシンを使用する代わりに、高速接続の2台のマシンを使用します)。

要件:2台のサーバー(1台のサーバーを使用できますが、テスト用でない限り推奨されません)

セットアップ方法:IP 1.1.1.1のマシン1 m1とIP 2.2.2.2のマシン2 m2があるとします

1)M1にログインし、cnfファイルを編集する必要があります。次の行を追加するか、コメントを解除してください\:

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = MyDB     -- if you want the replication for one db, comment this if you want to replicate all the SID
# bind-address            = 127.0.0.1

次に、M1のSIDを再起動し、次のコマンドを使用してMySQLにログインします

mysql -uroot -P[port] -p[password]

2)次のコマンドを使用してレプリカユーザーを作成します

create user 'replicator'@'M2' identified by 'password'; -- note you can use the IP instead of the Host name

3)次に、以下を使用して複製ユーザーに複製特権を付与します。

grant replication slave on *.* to 'replicator'@'M2'; 

4)マスターステータスをチェックしてログIDを取得します**サーバー1の構成が完了したら、サーバーM2に移動する必要があります(サーバー1の場合と同じですが、必要に応じてホスト名を変更する必要があります) ):

5)cnfファイルを編集しますが、サーバーIDがM1と同じでないことを確認してください

server-id               = 2
    log_bin                 = /var/log/mysql/mysql-bin.log
    binlog_do_db            = MyDB     -- if you want the replication for one db, comment this if you want to replicate all the SID
    # bind-address            = 127.0.0.1

6)サービスを再起動します

7)レプリケーションユーザーを作成し、レプリケーション権限を提供します

create user 'replicator'@'M1' identified by 'password'; 
grant replication slave on *.* to 'replicator'@'M1'; 

次に、M2のマスターを構成します。

slave stop; 

    CHANGE MASTER TO MASTER_Host = '1.1.1.1', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin..xxxxx', MASTER_LOG_POS = xxx; 
    slave start; 

8)マスターのステータスを確認します

9)次にM1に戻り、ロードバランスを開始します。

slave stop; 

    CHANGE MASTER TO MASTER_Host = '2.2.2.2', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.xxxxx', MASTER_LOG_POS = xxx; 
    slave start;
0
Ahmad Abuhasna