質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

0回答

595閲覧

MySQL 複数ある直列のスレーブのマスターの変更は可能?

GotHokLin

総合スコア34

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/03/11 06:46

MySQLのレプリケーションについての質問になります。

スレーブが直列で2台以上ある場合に、データの不整合等なく、中間にあるスレーブのマスターを変更することができるかという質問になります。

環境

  • OS CentOS 6系
  • MySQL 5.7系(Community版)

元々の構成

DB1 - DB3は同じネットワーク内にあります。
DB4はネットワーク的に遠隔地にあり、これは必ず最後のスレーブとする必要があります。

以下の図のM,Sは以下の通りです。
[M] マスター
[S] スレーブ

元の構成

| →遠隔地 DB1 - DB2 - DB3 - DB4 [M] [S] [S] | [S] |

DB1がマスターで、DB2からDB4までが直列でレプリケーションになっております。

障害発生時

マスターだったDB1で障害が発生し、アプリケーションの接続先をDB2に変え、DB2をマスターとする事になりました。

障害発生時の対応後の構成

| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] |

スレーブを1つ追加

スレーブDBが1台減ってしまったので、新たにDB5を立て、DB2をマスターとしてレプリケーションを開始しました。

| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] | | DB5 | [S] |

【ここからが質問】構成を戻すために

障害発生前のスレーブの構成に戻したいと思っております。

  • マスターは極力停止したくない
  • 1台目のスレーブ以降のサーバについては、1~2時間の停止は問題ない
  • しかし、DB内のデータが大きく、mysqldumpを利用してダンプを取得するだけで12時時間程度かかる
  • そのためなるべくレプリケーションを崩したくない(全データの再インポートは行いたくない)という状況です。

例えば、DB5がきちんとすべてレプリケーションがとられている状況で、DB3をいったんスレーブを停止し、マスターをDB5に向けることで、継続してレプリケーションされるのであればよいのですが、このようなことはできるのでしょうか。

| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] | | DB5 | [S] |

案)DB3のマスターを付け替える ↓

| →遠隔地 DB2 | [M] | | | DB5 - DB3 - DB4 [S] [S] | [S]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2020/03/11 07:28

DB1をチェーンの最後ではなく間に繋ぎ変えたいのですか? もしそうなら理由は何ですか?
GotHokLin

2020/03/11 08:53

コメントありがとうございます。 新規に構築するのはDB5になりますので、DB5をチェーンの最後につながないのはなぜか、という質問と読み替えてご返答します。 またチェーンの最後、というのはDB4の後ろ、という意味でご回答します。 DB4はネットワーク的に完全に別の場所にあります。 DB1-3と同一データではありますが、別サービスで利用しているものになります。 今回障害が発生したDB1とそのスレーブDB2,3までは同一ネットワーク内にあり、そのネットワーク内にあるWeb向けアプリケーションからDBに接続しているという状況です。 そのため、マスター1台、スレーブ2台(障害発生前でいうDB1-3)で1つのサービス用、そこに加えて別サービス用にDB4がある、という状況です。 また、新規に構築しているDB5を同一ネットワーク内のチェーンの最後につなぐという意味で、 DB2 - DB3 - DB5 - DB4 ではどうかという点では、以下の理由で避けたいと考えております。 (この点内容は記載しておりませんでした。失礼しました。) DB3のストレージはHDD、他のDBはすべてSSDとなっております。 本サービスで利用しているクラウド基盤にて以前ストレージ障害が発生し、SSDを利用しているものはすべて障害となったことがありました。 そのため、別の基盤のストレージを利用することで、レスポンスが悪くとも最悪サービスの停止は免れるだろう、という意味合いになります。 DB4で利用しているサービスはデータの即時性を問われないサービスのため、HDDのDB3の後ろでも問題がない、という状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問