受講料が最大70%OFF 受講料が最大70%OFF

MySQLについて少し詳しくなると、レプリケーションという言葉をたまに見かけるようになるはずです。ただ、レプリケーションの概念は理解するのが少し難しく、説明書きを見て諦めてしまったという方もいるかもしれません。

そこで本コラムでは、MySQLのレプリケーションについて、できるだけ丁寧かつ分かりやすく解説をしていきます。

本記事の要点
  • MySQL レプリケーションの概要
  • MySQL レプリケーションメリット・デメリット

MySQL レプリケーションについて

こちらの見出しでは「MySQL レプリケーションがまだ理解できていない」という方に向けて、MySQL レプリケーションとはいったい何かということについて、できるだけ丁寧かつ簡単に解説をおこなっていきます。まずはこちらの見出しをじっくりと読み、MySQL レプリケーションがどのような意味を指しているのかについて理解していきましょう。

MySQL レプリケーションの意味

MySQL レプリケーションとは、すでに存在しているデータを他のデータベースサーバに複製しておくことです。データベースのミラーリングという言葉で表せられることもあります。データをバックアップする必要がある際にMySQL レプリケーションをおこなうことが多いです。

MySQL レプリケーションをおこなう流れ

では、どのようにしてMySQL レプリケーションをおこなうのかについて確認していきましょう。

メインデータベースサーバとスレーブの関係性

前提として、普段から使用しているメインのデータベースサーバがあるはずです。この中には複数のテーブルとデータが保存されています。

MySQL レプリケーションをおこなうためには、まずメインのデータベースサーバに対して、サブのデータベースサーバを用意します。このサブデータベースサーバのことをスレーブ(Slave)と呼びます。

ポテパンダの一言メモ

おそらくはじめて触れるキーワードとして「スレーブ(Slave)」という英単語が出てきました。この英単語を使うものとして、たとえば「Slave ant(働きアリ)」といったものがあります。つまりこの「Slave」という言葉には「働きもの」という意味、そしてそれに転じて「奴隷」や「隷属する」といった意味があるのです。つまりスレーブは、メインデータベースサーバに隷属するデータベースサーバという意味を持ちます。

このスレーブですが、メインのデータベースサーバに対して1つまたは複数のスレーブを作成することができます。しかし、逆にスレーブが複数のデータベースサーバに属することはできません。メインのデータベースサーバとスレーブは常に「1対1」もしくは「1対多数」の関係性で成り立っているということを覚えておいてください。

スレーブへのレプリケーション

メインのデータベースサーバからスレーブへのレプリケーションをおこなうためには、まずスレーブからメインデータベースサーバへのレプリケーションスタートを要求する必要があります。そして、メインデータベースサーバはその要求を受け取ります。

要求が正常に通過すれば、メインデータベースサーバは要求を出したスレーブに対してデータのレプリケーションをおこなっていきます。すると今度はレプリケーションがおこなわれたスレーブがデータを受け取ります。スレーブが正常にメインデータベースサーバからのデータを受け取ることができたら、スレーブ、つまりサブデータベースサーバの内容が更新されることとなります。

もちろん他のデータベース管理システムにもレプリケーションの機能はあります。ただ、MySQLの場合にはレプリケーション次のメインデータベースからサブデータベースへのデータ送信が非同期、つまりリアルタイムでメインデータベースサーバの変更をスレーブに送信しなくても良い設定になっているため、2つのデータベースサーバが常に接続される必要がないのです。

MySQL レプリケーションのメリット・デメリット

さて、ここまでMySQL レプリケーションの概要と仕組みについて簡単にご説明をしてきました。まとめると「メインデータサーバのデータを他のデータサーバに複製すること」がMySQL レプリケーションの持つ機能です。

一見すると便利なMySQL レプリケーションですが、メリットとデメリットを押さえておかなければ有効活用することができません。こちらではMySQL レプリケーションのメリット・デメリットをそれぞれ確認し、MySQL レプリケーションをより効果的に扱えるようになりましょう。

MySQL レプリケーションのメリット

まずはMySQL レプリケーションのメリットについて確認していきましょう。メリットは以下の3点です。

それぞれのメリットについて詳しく見ていきましょう。

サーバにエラーが発生した際に置換対応できる

1つ目のメリットはサーバエラー発生の際、スレーブで置換対応できるということです。MySQLに限らずサーバを使用している際に障害が発生し、メインデータサーバが使用できなくなるという場合があります。そんなときに、レプリケーションをおこなっておいたスレーブを一時的に代替で使用することができるのです。

こまめにレプリケーションをおこなっておき、スレーブにメインデータベースサーバの内容を反映させておけば、障害に強い環境を構築することができるでしょう。

ポテパンダの一言メモ

ちなみに、システムを継続的に稼働させられるPCの能力のことを可用性と呼びます。たとえば「MySQLでレプリケーションをおこない、システムの可用性を高める」といったような使い方をします。レプリケーションに限らず、データベースサーバを扱う際に、可用性という言葉を度々見かけるようになるので、覚えておきましょう。

サーバを動かしながらオフラインバックアップを取得できる

2つ目のメリットはメインデータベースサーバを稼働させながら、スレーブからオフラインバックアップを取得することができるということです。メインデータベースサーバに対するスレーブを用意していないと、バックアップを取る際にいちいちデータベースの稼働をストップしなければなりません。

一方でスレーブを用意しメインデータベースサーバからスレーブにデータを反映させておけば、スレーブからオフラインバックアップを取ることができるのです。度々メインデータベースの稼働を止めることでパフォーマンスが下がる恐れがあります。そのため、レプリケーションでスレーブにデータを転送させておくと良いでしょう。

ポテパンダの一言メモ

「オフラインバックアップ」という言葉が登場しましたが、はじめて聞く人もいるかもしれませんね。これはデータベースバックアップの1つであり、他にもコールドバックアップ 一貫性バックアップと呼ばれることもあります。

オフラインバックアップの特徴はもちろんデータベースを停止した状態でバックアップを取るということ。メリットはバックアップ中に内容が変更されないということです。

MySQL レプリケーションのデメリット

次はMySQL レプリケーションのデメリットについて確認していきましょう。デメリットは以下の点です。

それでは、上記のデメリットについて詳しく見ていきましょう。

データ容量が増える

MySQL レプリケーションのデメリットとして、スレーブの数だけ容量が増えるという問題を挙げることができます。レプリケーションをおこなうと、メインデータベースをそのまま複製することになるからです。

つまりスレーブを1つ作れば、その分だけメインデータベースの容量が増えると考えて間違いありません。もしスレーブが複数あればその数だけ容量に負担をかけることになります。

ポテパンダの一言メモ

メインデータベースをそのまま複製できるレプリケーションは便利ですが、裏を返すと容量的な負担が増えるということにもなります。また、それに関連してメインデータベースの問題点も同時に複製してしまうということになります。MySQLのレプリケーションをおこなう際にはこういった点を理解して扱うようにしましょう。

まとめ

本コラムでは、MySQLのレプリケーションについて、できるだけ丁寧かつ分かりやすく解説をしていきました。MySQLのレプリケーションはいろいろなメリットがあり便利である反面、容量的な問題が発生する可能性があるということも注意しておきましょう。

【関連記事】
▶︎MySQLでIN句を活用しよう!指定したカラムとリストを比較する!
▶︎【MySQL】GROUP BY句(グループ化)とGROUP BYを使った計算について徹底解説!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。