SlideShare a Scribd company logo
1 of 19
MYSQL 冗長化モデル
1章
基本設計
1-1 DB(MySQL)の冗長化とは何
か
 MySQLはMaster・Slaveの構成を行いますが、これは『更新』と『参照』と
役割が異なっているだけであり、冗長化とは意味が異なります
 プログラム上で『更新』『参照』についてそれぞれの宛先(IP)を役割毎
にハードコートしており、どちらか片方に障害が起こるとサービスに影響
が出ます
⇒『更新(Master)』『参照(Slave)』を、それぞれ
冗長化する必要があります
1-2 冗長化に向けた設計方針
 サーバーHW障害に対し、サービスが継続できること
 障害時のダウンタイムが限りなくゼロであること
⇒24h/365dサービスを目指すため、ボトルネックを可能な限り減らす
 障害発生時には自動的にサービス復帰する
⇒運用の自動化により、運用の安定化及び省力化を目指す
 プログラムは障害対応を意識せずにコーディングできること
⇒障害に備えたプログラムコーディングは、コードの肥大化とともにコーディング漏れ等の人的
災害も起こりえる
 スケールアウトできること
⇒サーバー1台の処理能力がサービススペックの頭打ちにならないように
⇒拡張性を考慮することで、DBがボトルネックにならないように
 待機サーバーの数を可能な限り減らし、資産を有効活用する
⇒『備え』の工数を増やしても、稼働のサービスレベルは上がらない
1-3 冗長化を支える技術
ミドルウェ
ア
役割
MySQL データベースサーバー
LVS MySQLサービス自体の死活監視を行い、MySQLを仮想化する
Iptables 『MySQLサーバーは生きているが、サービスに問題が有る』場
合に、仮想サービス自体から切り離す
2章
詳細設計
2-1 全体構成図
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
2-2 MySQL仮想化
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
クライアントはMySQLにアクセ
スする際、『LVSが作成した仮想
IP』にアクセスします。
LVSはクライアントからの信号を
MySQLに転送します。
LVSはMySQLサーバーの生死判
定を定期的に行っております。
この処理によって、仮想IPへアク
セスされた信号は、現在生きてい
るサーバーへと転送されます。
この機能を利用し、『更新』『参
照』それぞれのMySQLを仮想化
しております。
2-3 MySQL同期処理
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
MySQLはレプリケーション処理によって、2つのMySQLサーバーが同一になる機能
があります。詳細としては、参照先のMySQLの更新命令を参照元に適用すること
で、双方が同一になるというものです。
現在は下記矢印の向きで更新命令を参照している状態です。上記機能を利用し、
Master(稼働・待機)に更新が入ると、4台のMySQLに適用されますので同一の状
態になります。
3章
障害対策
3-1 MySQL障害対策/前提
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
MySQLの仮想化の最大のポイントとなるのは、
『参照先サーバーに障害があった場合は、自分自身
の情報は信頼出来ないものとする』事です。つまり
『参照元から更新情報が得られない』=『自分自身
の情報は最新でない』という考えです。
これを実現するために、『自分自身のレプリケー
ションになんらかの障害が発生していた』場合、
『親からの死活監視に無応答を返す事で、自発的に
仮想化から切り離す』処理を行なっております。
これはLinuxのファイアーウォール機能である
iptablesによって実現しております。
3-1 MySQL障害対策/Slave障害
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
Slaveに障害が起こった場合は、『仮想IP=2台』と
いう割り当てから『仮想IP=1台』という形に縮退動
作を行います。
また、すべてのSlaveに障害が発生した場合は『仮
想IP=Master待機』へと割り当てが行われます。
3-2 MySQL障害対策/Master待機障
害
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
Master待機に障害が発生した場合は、2ステッ
プの縮退動作が行われます。
1. LVSの監視により、『仮想IP#1』から
『Master待機』が切り離される
2. Slave#1自身がMaster待機の障害を検知し
た時点で、LVSの死活監視に応答を返さな
い処理を行う。これにより、『仮想IP#2』
から『Slave#1』が切り離される
3-3 MySQL障害対策/Master稼働障
害
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
Master稼働に障害が発生した場合は、3ステッ
プの縮退動作が行われます。
1. LVSの監視により、『仮想IP#1』から
『Master待機』が切り離される
2. Slave#1自身がMaster待機の障害を検知し
た時点で、LVSの死活監視に応答を返さな
い処理を行う。
3. LVSがMaster障害を検知した段階で、
『Master待機』を『Master稼働』に昇格さ
せる
3-4 仮想IP冗長化
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
LVSはハートビート
(VRRP)信号でお互いの生
死判定を行います。
『稼動系LVS』が死んだ場合
は、『待機側LVS』が仮想IP
を自分自身に割り当てます。
これにより仮想IPは、LVS
サーバー2台に障害が発生し
ない限りサービスを継続する
ことができます。
3-5 MySQLスケールアウト
LVS#1 LVS#2
Master
稼働
Master
待機
Slave#
1
Slave#
2
仮想IP#1 仮想IP#2
将来的にサイトへのアクセスが集中し
MySQLがボトルネックとなった場合は、
参照用仮想IPアドレスにSlave用MySQL
を追加することになります。
応答するサーバーが増加する為、負荷軽
減となります。(スケールアウト)
Slave#
3
4章
まとめ
まとめ
DBサーバーは情報が一元集約されるポイントの
ため、単一障害点かつ高負荷になりやすいで
す。
そのため既存のソリューションでは、あらゆる
高負荷に耐えられる筐体を用意する方向に進ん
でおりました。(スケールアップ)
本設計はこの問題点を解消し、かつスケールア
ウトを確保出来るものとなっております。
以上

More Related Content

What's hot

tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみた
Masayuki Ozawa
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
Insight Technology, Inc.
 

What's hot (20)

MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
 
Introducing MySQL MHA (JP/LT)
Introducing MySQL MHA (JP/LT)Introducing MySQL MHA (JP/LT)
Introducing MySQL MHA (JP/LT)
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDB
 
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
 
MySQLバックアップの基本
MySQLバックアップの基本MySQLバックアップの基本
MySQLバックアップの基本
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
 
MHA for MySQL の話
MHA for MySQL の話MHA for MySQL の話
MHA for MySQL の話
 
お金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼みお金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼み
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
Mysql toranomaki
Mysql toranomakiMysql toranomaki
Mysql toranomaki
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみた
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
 

Viewers also liked

安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
 

Viewers also liked (20)

PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめ
 
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズ
 
アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
 
UIの話は会議室でするな
UIの話は会議室でするなUIの話は会議室でするな
UIの話は会議室でするな
 
Markdownもはじめよう
MarkdownもはじめようMarkdownもはじめよう
Markdownもはじめよう
 
今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
 
Aws cdp campaign site 20120925
Aws cdp campaign site 20120925Aws cdp campaign site 20120925
Aws cdp campaign site 20120925
 
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションUbuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツールCumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
 
MySQLはじめの第一歩
MySQLはじめの第一歩MySQLはじめの第一歩
MySQLはじめの第一歩
 

Similar to MySQL 冗長化モデル

[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
Insight Technology, Inc.
 
SQL Server エンジニア のための コンテナ入門(k8s編)
SQL Server エンジニア のための コンテナ入門(k8s編)SQL Server エンジニア のための コンテナ入門(k8s編)
SQL Server エンジニア のための コンテナ入門(k8s編)
Tomoyuki Oota
 
RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)
Techno Project Co., Ltd.
 
Hpc server講習会第3回応用編
Hpc server講習会第3回応用編Hpc server講習会第3回応用編
Hpc server講習会第3回応用編
Osamu Masutani
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
Oonishi Takaaki
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例
Amazon Web Services Japan
 

Similar to MySQL 冗長化モデル (20)

PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説PostgreSQL V9 レプリケーション解説
PostgreSQL V9 レプリケーション解説
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
 
SQL Server エンジニア のための コンテナ入門(k8s編)
SQL Server エンジニア のための コンテナ入門(k8s編)SQL Server エンジニア のための コンテナ入門(k8s編)
SQL Server エンジニア のための コンテナ入門(k8s編)
 
EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会
 
RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)
 
20140919 enterprise oss my sql study v5.tware-bacula intro
20140919 enterprise oss my sql study   v5.tware-bacula intro20140919 enterprise oss my sql study   v5.tware-bacula intro
20140919 enterprise oss my sql study v5.tware-bacula intro
 
20131204 Climb DBMoto
20131204 Climb DBMoto20131204 Climb DBMoto
20131204 Climb DBMoto
 
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
 
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
 
SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
 
Hpc server講習会第3回応用編
Hpc server講習会第3回応用編Hpc server講習会第3回応用編
Hpc server講習会第3回応用編
 
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
 
Servcie Fabric and Cloud Design Pattern
Servcie Fabric and Cloud Design PatternServcie Fabric and Cloud Design Pattern
Servcie Fabric and Cloud Design Pattern
 
MySQL Cluster でもフラッシュドライブを活用してみる
MySQL Cluster でもフラッシュドライブを活用してみるMySQL Cluster でもフラッシュドライブを活用してみる
MySQL Cluster でもフラッシュドライブを活用してみる
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
Reflex works20120818 1
Reflex works20120818 1Reflex works20120818 1
Reflex works20120818 1
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例
 
オンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とはオンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とは
 

MySQL 冗長化モデル