mysql - マスターマスターレプリケーションMySQLパフォーマンス

原文 mysql

現在、16コアの60gig ramサーバーにMySQLインスタンスがあります。インスタンスは、当社のWebサイトおよびアプリケーションへのトラフィックに基づいて、常に大量の挿入および更新を受信して​​います。問題は、レポートが実行されたとき、またはcronが重いときに、サーバーが苦労して挿入がロックタイムアウトになり始めることです。

私はクラスタリングについて検討しましたが、これは現時点では高度すぎると思います。マスターマスターレプリケーション(2x 16core 60gig)の概念に関するいくつかの問題を解決したいと思います。

1)1つのマスターを書き込みと更新に使用し、もう1つのマスターを大量の読み取りに使用できますか?これは私のパフォーマンスの問題に役立ちますか?

2)一方のマスターがダウンしても、もう一方は機能し続けます。さらに、ダウンしたマスターがオンラインに戻ったときに、もう一方のマスターから失われたトランザクションを回復しますか?

3)4つのマスターを実行できますが、2つは他の2つのフェイルオーバーになりますか?

どんな助けでも大歓迎です。
答え
私はあなたが1年後に答えを必要としないと思います、しかし同様の問題を持つ他の人のためだけに。

大量の更新には1つのマスターを使用し、アプリケーションからの大量の読み取りには3つのレプリカを使用します。

レプリケーションは非常に堅牢です。マスターに到達できない場合(ネットワークの問題が原因である場合もあります)、マスターが再び起動した後、レプリカが再同期されました。

一部のレプリカが停止するか、長時間アクセスできない場合、将来の同期は、それが「デッド」であった時間に依存します。レプリカをマスターに同期させるには、古いバイナリログがまだ存在している必要があります。すでに削除されている場合は、レプリカを再作成する必要があります。 (これは、マスターがすべてのレプリカに到達できないが、更新を実行および受信している場合にも問題になる可能性があります。ディスク容量を節約しようとしないでください...)

マスター+レプリカの数が多いほど優れています。より独立したマスターへの更新をフォークすることもできます。または、マスターからマスターへのレプリケーションを設定します-しばらくの間、私はそれをうまく使用しました。

かなり頻繁にネットワークの問題が発生した場合は、設定をいじることをお勧めします-ここを参照-http://mysql.freeideas.cz/subdom/mysql/2016/08/16/mysql-replication-troubleshooting-lags-on-replicas/

mysql_exporter(https://github.com/prometheus/mysqld_exporter)+ Perconaダッシュボード(https://github.com/percona/grafana-dashboards)でプロメテウス+グラファナのモニタリングを使用することを強くお勧めします。レプリケーションの遅延をリアルタイムで確認でき、新しいGrafana 4.0ではアラートを設定することもできます。人生を楽にします:-)
関連記事

php - 製品データに対するifステートメントは、両方のステートメントがtrueの場合

mysql - MySQLの列タイプを浮動小数点から倍精度に変更し、値をそのまま保存する方法は?

php - ドキュメント対応のajaxのjQueryがhtmlを挿入し、htmlがすぐに消える

mysql - MySQLテーブルの列を無効にするにはどうすればよいですか?

php - CakePHP:HABTMデータの保存MySQLエラー

php - PHPを使用してExcelからMySQLにデータをアップロードできません

mysql - mysqlの複数のif

mysql - mysqlの「不正な照合順序の組み合わせ」エラーのトラブルシューティング

python - get_or_createで別のオブジェクトを使用してオブジェクトを更新する方法

php - MYSQL / Query Builder / Eloquent-行を列に転置する