典型的な要件があります。
MySQL MASTER-MASTERレプリケーションのセットアップが完了しました。これら2つのMySQLサーバー間でLoad Balancerをセットアップする必要があります。
WEBベースのロードバランサーの設定は承知していますが、MySQLサーバー用のロードバランサーが必要です。
要件は、1つのアプリケーションサーバーと2つのDBサーバーがあり、アプリケーションサーバーがロードバランサーに接続し、ロードバランサーが負荷を共有することによってDBサーバーに接続することです。
このための最善の方法を教えてください。また、長所と短所があるかどうかも知らせてください。
すでにマスターマスターレプリケーションを実行しているので、ここにロードバランサーのヒントを示します。 HAProxy を使用します。
これはフリーソフトウェアバランサーであり、必要なシステムリソースが非常に少なく、設定も非常に簡単です。
ヒント:2つのロードバランサーを keepalived でインストールするか、重大なボトルネックを作成したことを覚えておいてください。
設定keepalived + 2x haproxy + 2x master-mysqlを9か月間使用しましたが、pdo_mysqlの1つの問題に気づきました-私の問題はここで確認できます https://stackoverflow.com/questions/26871221/slow -pdo-mysql-mysqli-with-haproxy
小さな設定例もあります(この例ではホットスタンバイマスターです)。
マスターマスターレプリケーションの利点から始めましょう。どちらかのサーバーからもう一方のサーバーにデータをコピーできるようにして、冗長性を追加し、データへのアクセス、高可用性を処理する際の効率を高めます。次に、短所:コストについて(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;