2つのDBサーバー(マスターとスレーブ)を2つの新しいDBサーバー(マスターとスレーブ)に移行しています。
DB1-マスター(本番)
DB2-スレーブ(本番)
DB3-新しいマスター
DB4-新しいスレーブ
現在、私はレプリケーションを次のように設定しています:
DB1 -> DB2
DB3 -> DB4
本番データを新しいサーバーにレプリケートするには、次のように「デイジーチェーン」する必要があります。
DB1 -> DB2 -> DB3 -> DB4
これは可能ですか? DB2(本番スレーブ)でshow master status;
を実行すると、binlogの位置が変更されないようです。
+ ------------------ + ---------- + -------------- + ------------------ + |ファイル|位置| Binlog_Do_DB | Binlog_Ignore_DB | + ------------------ + ---------- + ------------ -+ ------------------ + | mysql-bin.000020 | 98 | | | + ------------------ + ---------- + -------------- + ------------------ +
Binlogの位置がDB2で変更されない理由について少し混乱していますが、DB3のマスターになるのが理想的です。
DB2
のbinlogはスレーブの更新を更新していませんでした。レプリケーションをデイジーチェーンするには、my.confにlog-slave-updates
を設定する必要があります。
はい-mysqlサーバーをデイジーチェーン接続できます。2台以上のマシンで 循環レプリケーション を作成することもできます。マスターとしても機能するスレーブでバイナリロギングを有効にすることを忘れないでください。
はい、可能です。実際には、DB3を構築するにはDB2の新しいスナップショットが必要です。その時点で、適切な位置にある場合は、DB4よりも使用するか、DB3の別のスナップショットを取得できます。
各サーバーに一意のserver_id
を設定することを忘れないでください。
High Performance MySQL は、より高度なMySQL管理を参照するための素晴らしい本です。
DB3を新しいスレーブとして追加し、切り替えの準備ができたらそれをマスターに昇格しないのはなぜですか?これにより、複数のスレーブを使用することで一時的に追加されるメリットが得られ、ダウンタイムが削減または排除されます。