SlideShare a Scribd company logo

1台から500台までのMySQL運用(YAPC::Asia編)

1台から500台までのMySQL運用(YAPC::Asia編)

1 of 85
Download to read offline
1台から500台までの
   MySQL運用
(YAPC::Asia2012編)
    長野雅広 (kazeburo)
Me
• 長野雅広
• @kazeburo
• CPAN:KAZEBURO
• Operations Engineer
  Site Reliability, 運用系小姑,
  NHN Japan
Me
Me
perlの話
Recent CPAN modules
 •   Apache::BumpyLife

 •   Twiggy::Prefork

 •   Module::Install::ShareFile

 •   App::LoadWatcher

 •   File::RotateLogs

 •   Plack::Middleware::AxsLog

 •   Proclet

 •   DBIx::DSN::Resolver [new!]
Ad

Recommended

Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Mobageの技術を体験(MyDNS編)
Mobageの技術を体験(MyDNS編)Mobageの技術を体験(MyDNS編)
Mobageの技術を体験(MyDNS編)Daisuke Ikeda
 
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所hdais
 
PowerDNSのご紹介
PowerDNSのご紹介PowerDNSのご紹介
PowerDNSのご紹介Akira Matsuda
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...Tatsuya Watanabe
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編hdais
 
Cassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考えるCassandraのバックアップと運用を考える
Cassandraのバックアップと運用を考えるKazutaka Tomita
 
#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介Takashi Takizawa
 

More Related Content

What's hot

Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化kazuhcurry
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編Akira Shimosako
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようNobuyuki Sasaki
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
Persistence on Azure - Microsoft Azure の永続化
Persistence on Azure - Microsoft Azure の永続化Persistence on Azure - Microsoft Azure の永続化
Persistence on Azure - Microsoft Azure の永続化Takekazu Omi
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてNobuyuki Sasaki
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012Shigeru Hanada
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料Chika SATO
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
MySQLバックアップの基本
MySQLバックアップの基本MySQLバックアップの基本
MySQLバックアップの基本yoyamasaki
 
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...Insight Technology, Inc.
 
160625 cloud samurai_adds_migration_160625
160625 cloud samurai_adds_migration_160625160625 cloud samurai_adds_migration_160625
160625 cloud samurai_adds_migration_160625wintechq
 
cassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationcassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationoranie Narut
 
Cassandraバージョンアップ&移設
Cassandraバージョンアップ&移設Cassandraバージョンアップ&移設
Cassandraバージョンアップ&移設Takehiro Torigaki
 
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告Uptime Technologies LLC (JP)
 

What's hot (20)

Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
Persistence on Azure - Microsoft Azure の永続化
Persistence on Azure - Microsoft Azure の永続化Persistence on Azure - Microsoft Azure の永続化
Persistence on Azure - Microsoft Azure の永続化
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
MySQLバックアップの基本
MySQLバックアップの基本MySQLバックアップの基本
MySQLバックアップの基本
 
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
 
160625 cloud samurai_adds_migration_160625
160625 cloud samurai_adds_migration_160625160625 cloud samurai_adds_migration_160625
160625 cloud samurai_adds_migration_160625
 
cassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationcassandra 100 node cluster admin operation
cassandra 100 node cluster admin operation
 
Cassandraバージョンアップ&移設
Cassandraバージョンアップ&移設Cassandraバージョンアップ&移設
Cassandraバージョンアップ&移設
 
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
 

Viewers also liked

[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyamaInsight Technology, Inc.
 
基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をしますyoku0825
 
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識yoku0825
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形yoku0825
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事Manabu Koga
 

Viewers also liked (8)

[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
 
基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします
 
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 

Similar to 1台から500台までのMySQL運用(YAPC::Asia編)

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo!デベロッパーネットワーク
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理junichi anno
 
データベースのお話
データベースのお話データベースのお話
データベースのお話Hidekazu Tanaka
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料dcubeio
 
ioMemoryとAtomic Writeによるデータベース高速化
ioMemoryとAtomic Writeによるデータベース高速化ioMemoryとAtomic Writeによるデータベース高速化
ioMemoryとAtomic Writeによるデータベース高速化IIJ
 
Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2Kentoku
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -yoyamasaki
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境yoyamasaki
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境yoyamasaki
 
Using docker infrastructure
Using docker infrastructureUsing docker infrastructure
Using docker infrastructureJunya Niwa
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめYasushi Hara
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB Amazon Web Services Japan
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなしOonishi Takaaki
 

Similar to 1台から500台までのMySQL運用(YAPC::Asia編) (20)

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
 
MHA, Murakumo & Me
MHA, Murakumo & MeMHA, Murakumo & Me
MHA, Murakumo & Me
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
MySQL at Yahoo! JAPAN #dbts2018
MySQL at Yahoo! JAPAN #dbts2018MySQL at Yahoo! JAPAN #dbts2018
MySQL at Yahoo! JAPAN #dbts2018
 
データベースのお話
データベースのお話データベースのお話
データベースのお話
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
ioMemoryとAtomic Writeによるデータベース高速化
ioMemoryとAtomic Writeによるデータベース高速化ioMemoryとAtomic Writeによるデータベース高速化
ioMemoryとAtomic Writeによるデータベース高速化
 
Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
 
MySQL de NoSQL Fukuoka
MySQL de NoSQL FukuokaMySQL de NoSQL Fukuoka
MySQL de NoSQL Fukuoka
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
Using docker infrastructure
Using docker infrastructureUsing docker infrastructure
Using docker infrastructure
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 

More from Masahiro Nagano

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Masahiro Nagano
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTMasahiro Nagano
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月Masahiro Nagano
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015Masahiro Nagano
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTMasahiro Nagano
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてMasahiro Nagano
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTMasahiro Nagano
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMasahiro Nagano
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術Masahiro Nagano
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talksMasahiro Nagano
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmMasahiro Nagano
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTMasahiro Nagano
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編Masahiro Nagano
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
WebアプリケーションとメモリMasahiro Nagano
 

More from Masahiro Nagano (20)

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LT
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talks
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapm
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
Webアプリケーションとメモリ
 

1台から500台までのMySQL運用(YAPC::Asia編)

  • 1. 1台から500台までの MySQL運用 (YAPC::Asia2012編) 長野雅広 (kazeburo)
  • 2. Me • 長野雅広 • @kazeburo • CPAN:KAZEBURO • Operations Engineer Site Reliability, 運用系小姑, NHN Japan
  • 3. Me
  • 4. Me
  • 6. Recent CPAN modules • Apache::BumpyLife • Twiggy::Prefork • Module::Install::ShareFile • App::LoadWatcher • File::RotateLogs • Plack::Middleware::AxsLog • Proclet • DBIx::DSN::Resolver [new!]
  • 7. Proclet minimalistic supervisor use Proclet::Declare; env( PLACK_ENV => 'development', LM_COLOR => 1, ); service('web', 'plackup -p 9413 app.psgi'); service('memcached', qw!/usr/bin/memcached -p 11211!); service('worker', sub { MyWorker->run }); worker( worker => 2 ); run;
  • 8. proclet foreman for perl % cat Procfile worker: ./bin/worker web: plackup web.psgi % proclet start --color
  • 10. MySQL Beginners Talks http://www.slideshare.net/kazeburo/1500mysql-mysql-beginners 491 users
  • 11. MySQL Beginners Talks 振り返り 1
  • 12. MySQL Beginners Talks 振り返り 2
  • 13. MySQL Beginners Talks 振り返り 3
  • 14. MySQL Beginners Talks 振り返り 4
  • 15. MySQL Begineersで話した 5つのMySQL運用ポイント • MySQL 5.1 or 5.5 InnoDB Plugin • my.cnfの共通化 • no-MyISAM • ログ系テーブルに注意 • モニタリング
  • 17. livedoor Blog since 2003
  • 18. livedoorBlog • 来年で10年 • 国内最大級 • 80億PV/month • 1億PV/monthを超えるblog多数 • 総トラフィック: 20+Gbps • 記事データ: 2+TB
  • 19. 構成 PC mobile PC mobile CMS APP CMS APP APP APP Spam STF Analyzer Filter Job Main Clustered memcached Queue DB DB コア 画像 ログ スパム
  • 20. Database Sharding SELECT node from blog where id = 941 App ① ② Mapping Cluster Cluster Cluster Cluster Cluster (Main DB) 1 2 3 4 5 すごく.. 古典的です..///
  • 21. dbm dbm dbm dbm dbm dbs dbs dbs dbs dbs dbs dbs dbs dbs dbs dbm dbm dbm dbm dbm dbs dbs 160cluster dbs dbs dbs dbs dbs dbs dbs dbs dbm dbm*1 dbs*2+ dbm dbm dbm dbm dbs dbs => 500 servers dbs dbs dbs dbs dbs dbs dbs dbs dbm dbm dbm dbm dbm dbs dbs dbs dbs dbs dbs dbs dbs dbs dbs
  • 22. 歴史の積み重ね • CPU: Pen4 ∼ Quad Core Xeon • Memory: 2GB ∼ 16GB • OS: FeeBSD・CentOS4.x∼5.x • サーバによって異なるmy.cnf・ MyISAMのテーブル・Index不足
  • 23.       ,,、,、、,,,';i;'i,}、,、        ヾ、'i,';¦¦i !} 'i, ゙〃         ゙、';¦i,!  'i i"i,       、__人_从_人__/し、_人_入          `、¦¦i ¦i i l¦,      、_)           ',¦¦i }i ¦ ;,〃,,     _) 集約だ∼っ!!           .}.¦¦¦¦ ¦ ! l-' 、ミ    `)          ,<.}¦¦¦ il/,-'liヾ;;ミ   '́͡V^'^Y͡V^V͡W^Y͡         .{/゙'、}¦¦¦//  .i¦ };;;ミ         Y,;-   ー、  .i¦,];;彡         iil¦¦¦¦¦liill¦¦¦¦¦¦¦¦li!=H;;;ミミ         {  く;ァソ  '';;,;'' ゙};;彡ミ          ゙i [`''' ヾ. '' ¦¦^!,彡ミ   _,,__           ゙i }  } ';;:;li, ゙iミミミ=三=-;;;;;;;;;'' ,,,,---''''''} ̄ フハ, 二゙́ ,;/;;'_,;,7'' ,-''::;;;;;;;;;;;;;'',,=''  ;;;;;;;;''''/_  / ¦ ¦ `ー--'́_,,,-',,r' `ヽ';;:;;;;;;;, '';;;-''' '''''  ,r' `V ヽニニニ二、-'{ 十 )__;;;;/
  • 25. 集約化方法 m m s s s s dbm m m dbs dbs s s s s (1) 1台のサーバに複数のmysqld (2) 1つのmysqldに複数のデータベース
  • 26. 集約化方法 (1) • Pros Cluster 1 Cluster 2 Cluster 3 Cluster 4 • レプリケーションを使いなが ら、サービスの停止なく移行 可能 • Cluster Cluster Cluster Cluster Cons 1 2 3 4 • 元のサーバの性能差やデータ mysqld (3401) mysqld (3402) mysqld (3403) mysqld (3404) 量を考慮にいれたbuffer_pool サイズの調整が必要 dbm • 複数プロセスの管理
  • 27. 集約化方法(2) • Cluster Cluster Cluster Cluster Pros 1 2 3 4 • 細かい buffer_pool の調整が必要なく、効率性も 高い • プロセスが1つなので運用の Cluster Cluster Cluster Cluster 手間は少ない 1 2 3 4 • Cons mysqld • データベース名を変更するた めのメンテナンス時間が必要 dbm
  • 28. 採用 集約化方法(2) • Cluster Cluster Cluster Cluster Pros 1 2 3 4 • 細かい buffer_pool の調整が必要なく、効率性も 高い • プロセスが1つなので運用の Cluster Cluster Cluster Cluster 手間は少ない 1 2 3 4 • Cons mysqld • データベース名を変更するた めのメンテナンス時間が必要 dbm
  • 29. 2011-09-14 未明実施 8/27 10/13-15
  • 30. 手順(前日まで) Cluster Cluster Cluster Cluster 1 2 3 4 Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) 仮db mysqld dbs
  • 31. 手順(前日まで) Cluster Cluster Cluster Cluster 1 2 3 4 レプリケーション 構築と ALTER TABLE Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) 仮db mysqld dbs
  • 32. 手順(前日まで) Cluster Cluster Cluster Cluster 1 2 3 4 レプリケーション 構築と ALTER TABLE Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) レプリケーション 仮db mysqld dbs
  • 33. 手順(当日) Cluster Cluster Cluster Cluster 1 2 3 4 Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) 仮db mysqld dbs
  • 34. 手順(当日) Cluster Cluster Cluster Cluster 1 2 3 4 Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) 仮db mysqld dbs
  • 35. 手順(当日) Cluster Cluster Cluster Cluster 1 2 3 4 Cluster Cluster Cluster Cluster 1 2 3 4 Cluster Cluster Cluster Cluster mysqld 1 2 3 4 dbm mysqld mysqld mysqld mysqld (3401) (3402) (3403) (3404) mysqldump cluster ¦ 仮db mysqld ssh dbm cat ¦ mysql ${n}_cluster dbs
  • 36. 手順(後日) Cluster Cluster Cluster Cluster 1 2 3 4 mysqld dbm mysqld 仮db dbs
  • 37. 手順(後日) Cluster Cluster Cluster Cluster 1 2 3 4 mysqld dbm mysqld mysqld 仮db dbs dbs
  • 38. 集約対象 160 cluster => 20+ cluster = 作業対象サーバ
  • 39. えーマジ 手作業!? 自動化必須 手作業が許されるのは 小学生までだよねー
  • 41. 自動化 • 実行時に外から情報を与える (コマンド引数などとして) • 事前情報からサーバ自身でなすべきこと を知る
  • 42. Matrix (表) #cluster id #work2dbm #from #to #id #work #dbm 1 1 1 10.94.18.30 10.94.14.30 51 1 2 10.94.18.31 10.94.14.31 57 1 3 10.94.18.32 10.94.14.32 65 1 4 10.94.18.33 10.94.14.33 2 2 5 10.94.18.34 10.94.14.34 39 2 6 10.94.19.30 10.94.15.30 77 2 7 10.94.19.31 10.94.15.31 91 2 8 10.94.19.32 10.94.15.32 3 3 9 10.94.19.33 10.94.15.33 29 3 10 10.94.19.34 10.94.15.34 85 3 11 10.94.14.35 10.94.16.35 4 4 12 10.94.14.36 10.94.16.36 52 4 13 10.94.14.37 10.94.16.37 78 4 14 10.94.14.38 10.94.16.38
  • 43. Matrixからの設定生成 while(my $l=<DATA>){ my ($cluster, $node) = split /s+/, $l; push @{$nodes{$node}}, $cluster; } for my $node ( sort { $a <=> $b } keys %nodes ) { open( my $fh, '>', sprintf("my_%d.cnf",$node)); print $fh $tx->render('my.cnf.tx', { clusters => $nodes{$node} }); } #from #to __DATA__ 1 1 51 1 2 2
  • 44. Matrixからの設定生成 [mysqld] innodb_buffer_pool_size = 4G innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT : for $clusters -> $cluster { [mysqld<: $~cluster.count :>] server-id = <: $cluster + 10000 :> datadir = /var/lib/mysql_<: $cluster + 13000 :> socket = /tmp/mysql_<: $cluster + 13000 :>.sock pid-file = /var/run/mysql_<: $cluster + 13000 :>.pid port = <: $cluster + 13000 :> : }
  • 45. Matrixを利用した自動化 set -e CDIR=$(cd $(dirname $0) && pwd) #id #work #dbm SRV=$(cat <<"EOF" 1 10.94.18.30 10.94.14.30 2 10.94.18.31 10.94.14.31 3 ... EOF ) IPADDR=$(ifconfig eth1 |grep inet| awk -F: '{print $2}'|awk '{print $1}') CID=$(echo "$SRV" | grep $IPADDR | awk '{print $1}') cp $CDIR/my_$CID.cnf /etc/my.cnf for datadir in $(grep datadir /etc/my.cnf|sed 's/datadir=//') do /mysql_install_db --datadir=$datadir done
  • 46. atnodes を使った一括実行 $ cpanm SSH::Batch $ atnodes ‘git clone git://./setup.git’ dbs02.[01-20].cluster ============== dbs02.01.cluster ============= .. ============== dbs02.02.cluster ============= .. $ atnodes -c 4 ‘sh ./setup/setup.sh’ dbs02.[01-20].cluster ============== dbs02.01.cluster ============= .. ============== dbs02.02.cluster ============= ..
  • 48. コマンド1つ! $ atnodes -c 10 ‘sh ./setup/copy.sh’ dbs02.[01..20].cluster ============== dbs02.01.cluster ============= .. ============== dbs02.02.cluster ============= ..
  • 51. Recreate Slave Cluster Cluster Cluster Cluster 1 2 3 4 データ mysqld 複製 dbm mysqld dbs01
  • 52. Recreate Slave Cluster Cluster Cluster Cluster 1 2 3 4 データ mysqld 複製 dbm mysqld mysqld dbs02 dbs01
  • 54. $ mysqldump --single-transaction --master-data MySQL 4.0.x の場合
  • 55. mysqldump (4.0.x) “$ mysqldump --master-data” blocks update query MySQL 5.1.x MySQL 4.0.x FLUSH LOCAL TABLES FLUSH TABLES WITH READ LOCK FLUSH TABLES WITH READ LOCK BEGIN SET SESSION TRANSACTION ISOLATION DB選択 LEVEL REPEATABLE READ テーブルからデータの読み込み START TRANSACTION WITH CONSISTENT SNAPSHOT COMMIT; SHOW MASTER STATUS SHOW MASTER STATUS UNLOCK TABLES UNLOCK TABLES; DB選択 テーブルからデータの読み込み
  • 57. MySQL mysql40dump FLUSH TABLES WITH READ LOCK SHOW MASTER/SLAVE STATUS pipe my $rh, my $wh; mysqldump fork open STDOUT, '>&', $wh exec(mysqldump --single-transaction) BEGIN while(<$rh>) { print } pipe UNLOCK TABLES m!^CREATE TABLE! データ読み込み COMMIT wait($child) exit print “CHANGE MASTER”
  • 58. mysql40dump $dbh->do('FLUSH TABLES WITH READ LOCK'); $dbh->select('SHOW MASTER STATUS'); pipe my $logrh, my $logwh; my $pid = fork if ( $pid == 0 ) { #子プロセス open STDOUT, '>&', $logwh; exec("mysqldump","--single-transaction","-- databases","..."); } while(<$logrh>){ print; if ( m!^CREATE DATABASE!) { $dbh->do('UNLOCK TABLE'); } }
  • 59. mysql40dump $ mysql40dump --master --repl -- [2012-09-25T09:00:01] Done "FLUSH TABLES WITH READ LOCK" -- [2012-09-25T09:00:01] [FROM MASTER STATUS] * CHANGE MASTER TO MASTER_HOST='10.9.41.3', MASTER_USER='repl', MASTER_PASSWORD='xxx', MASTER_LOG_FILE='mysql-bin.176', MASTER_LOG_POS=789372555; -- [2012-09-25T09:00:01] [FROM SLAVE STATUS] CHANGE MASTER TO MASTER_HOST='10.9.41.4', MASTER_USER='repl', MASTER_PASSWORD='xxx', MASTER_LOG_FILE='mysql-bin.178', MASTER_LOG_POS=103928719; -- [2012-09-25T09:00:01] [START] mysqldump --quick --add-locks -- extended-insert --single-transaction --databases tbl1 tbl2 tbl3 set FOREIGN_KEY_CHECKS=0; -- for mysql4.0 -- MySQL dump 9.11 ...DUMP DATA... CHANGE MASTER TO MASTER_HOST='10.9.41.3', MASTER_USER='repl', MASTER_PASSWORD='xxx', MASTER_LOG_FILE='mysql-bin.176', MASTER_LOG_POS=789372555; START SLAVE;
  • 60. mysql40dumpの利用例 • slave作成 # masterからslave $ mysql40dump --master --repl | ssh slave ‘cat | mysql’ # slave から slave $ mysql40dump --slave --repl | ssh slave2 ‘cat | mysql’ • 定期的なバックアップ実行 mysql40dump --master | gzip > /backup/mysql-$(date +%Y%m%d%H%M).sql.gz
  • 63. Nagios MySQL監視 • 死活監視 • レプリケーション遅延
  • 64. Nagios MySQL監視 • 死活監視 • レプリケーション遅延 • uptime
  • 65. Uptime監視 OK∼ OK∼ OK∼ Nagios Nagios Nagios 5min 5min t DOWN UP MySQL 4.0.xの再起動は速い
  • 66. Uptime監視 > 5min < 5min > 5min OK∼ NG!!1 OK∼ Nagios Nagios Nagios show status like show status like show status like 'Uptime' 'Uptime' 'Uptime' 5min 5min t DOWN UP
  • 68. スパムブログ(splog) によるシステムへの影響 • レプリケーションの遅延 • buffer_pool の効率性ダウン • パフォーマンス悪化 集約化によって影響範囲拡大
  • 71. Splogの痕跡 大量の 記事投稿?
  • 72. Splogの痕跡 バイナリログの調査 % mysqlbinlog --start-datetime ‘2012-09-21 22:50’ --end- datetime ‘2012-09-21 23:00’ mysql-bin.941 | perl -e 'while(<>){ chomp; next if m!^#!; if ( m{/*!*/;$} ) { $p .= $_; print "$pn"; $p="" } else { $p .= $_." "} }'|perl -nle 'm!^(DELETE FROM|REPLACE INTO|INSERT INTO|UPDATE)s+([^ ]+)!i && print "$1 $2"' | sort | uniq -c | sort -nr | head 43 INSERT INTO entry 33 UPDATE entry 19 INSERT INTO tag2entry 18 UPDATE tag 17 INSERT INTO category
  • 73. Splogの痕跡MySQL バイナリログの調査 5.0∼ % mysqlbinlog --start-datetime ‘2012-09-21 22:50’ --end- datetime ‘2012-09-21 23:00’ mysql-bin.941 | perl -e 'while(<>){ chomp; next if m!^#!; if ( m{/*!*/;$} ) { $p .= $_; print "$pn"; $p="" } else { $p .= $_." "} }'|perl -nle 'm!^(DELETE FROM|REPLACE INTO|INSERT INTO|UPDATE)s+([^ ]+)!i && print "$1 $2"' | sort | uniq -c | sort -nr | head 43 INSERT INTO entry 33 UPDATE entry 19 INSERT INTO tag2entry 18 UPDATE tag 17 INSERT INTO category
  • 74. 対Splog • アプリケーションエンジニアによる ツールでの監視 • サポート・パトロールチームの目視に よる監視 • オペレーションエンジニアによる システム監視 => スパム対策と共に安定稼働を実現
  • 78. HDD/SSD Performance Test HDD-RAID10 SSD-RAID1 Intel SSD 910 某Flush Device 50,000 43,117 37,500 25,000 14,153 12,500 9,440 751 0 4並列 2GB Random Read
  • 79. ソーシャルメディアの データベースにおける ストレージデバイスの 選択基準 バイト単価 > IOPS *個人的見解です

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n