Created
June 27, 2012 13:04
-
-
Save debility-zz/3003955 to your computer and use it in GitHub Desktop.
mysqlcf log 20120627
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MySQL Casual Talks Fukuoka | |
--- | |
@Spring_MT はじめに | |
発表すること(内容じゃなくて)をcasualに | |
情報共有≠事業価値の欠損 | |
--- | |
@Spring_MT 新しいMySQLサイトを作るときのMySQL(大規模風味) | |
[資料] http://www.slideshare.net/blueskyblue/my-sql-casualinfukuokavol1 | |
5.5 InnoDB UTF8 複数DBかつレプリケーション | |
DATETIMEよりTIMESTAMP使用できるなら一般的には使用するべき | |
UNIXTIMEを整数値で保存しても今のところ何の得もない | |
アプリ側でGMTに揃えてDATETIME型で保存してる<まだ解は出てない | |
DBわける前提なので基本JOINしない(ただし要件による) | |
Replication | |
master1/slave4 | |
レプリケーション遅延->気付きにくい->開発では故意にレプリを遅延させる | |
-> pt-slave-delay Percona Toolkitの中のツールの一つ | |
Percona Toolkit < Maatkit Toolkitの後継 | |
MySQL5.6からはCHANGE MASTER TOコマンドでMASTER_DELAYオプション指定できる(秒単位) | |
Sharding(マスタ分割) | |
AUTO_INCREMENT -> 使わない(使えない) | |
-> sequenceテーブル(id入ってる1行だけのテーブル)を作る | |
-> UPDATEでインクリメント生成したIDは接続ベースでサーバ内で保持される | |
Index | |
HandlerSocket | |
MySQLDBへのアクセスを高速化するためのプラグイン | |
http://engineer.dena.jp/2010/08/handlersocket-plugin-for-mysql.html | |
-> 単純なread/writeを高速にできる -> トランザクションはない | |
回数多いとか負荷かかりそうなやつとかを別ポート切ってHandlerSocketに飛ばす | |
DMY_PTHREAD_FASTMUTEX < Fedora16に入れる場合にconfigure optionから消す | |
# PHP -> http://code.google.com/p/php-handlersocket/ | |
パフォーマンス出るよ(memcachedより上) | |
MHA | |
http://myhome.munetika.mydns.jp/ossdbwiki/index.php/MySQL-MHA%E3%81%AE%E5%B0%8E%E5%85%A5 | |
master/slaveのズレを解消して自動でフェイルオーバ | |
障害 -> master切り替え -> 通知まで一連の処理をしてくれる | |
手動切り替えにも対応 | |
トラフック多いサーバでも2-5秒で切り替え完了(De事例) | |
Q4M | |
MySQLストレージエンジンとして実装されているMessage Queue | |
MySQL5.1系だけが対応 | |
トランザクションはない | |
http://restmq.com/ | |
INSERT ... ON DUPLICATE KEY UPDATE | |
UNIQUEかPKで重複あったらUPDATE, なかったらINSERT | |
utf8mb4 < utf-8使うなら | |
http://d.hatena.ne.jp/hhelibex/20120110/1326179698 | |
--- | |
@matsukena 最近のバックアップ事情 | |
[資料] http://www.slideshare.net/yokoninaritai/mysql-casial01-13470120 | |
MySQLバックアップ&レストア | |
mysqldump | |
標準 | |
論理バックアップ | |
データ大きいと時間かかる | |
--single-transactionでトランザクション | |
--order-by-primaryでリストア早く | |
--force -> viewで使用してるtable削除しちゃうユーザがいるから | |
--quote-name -> table名に特殊文字使うユーザがいるため | |
-- default-charactor-set=binary | |
-- hex-blob 16進でデータ入ってるのをdump | |
リストア高速化するために(InnoDB) | |
- 基本的にI/Oを減らしてる | |
- バイナリログOFF | |
- Double Write OFF --skip-innodb-doublewrite | |
- InnoDBログファイル 書き込まない | |
- InnoDBバッファプール 他に多く割り当てたら | |
- リストア終わったら必ず設定戻して再起動 | |
ibbackup & innobackup | |
InnoDBのHotbackup | |
バイナリコピーでの物理バックアップ | |
有償 | |
xtrabackup & innobackupex | |
ibbackup & innobackupみたいなOSS | |
無償 | |
http://www.slideshare.net/riywo/tcpdump-xtrabackup-mysql-casual-talks-1 | |
Mydumper | |
マルチスレッドのMySQLバックアップツール | |
論理バックアップ | |
5.5.22以前ではコンパイル通らなかった | |
http://www.mydumper.org/ | |
LVMスナップショット | |
http://www.submit.ne.jp/1211 | |
InnoDBホットバックアップ利点欠点 | |
いつでもバックアップできる | |
OSに依存しない | |
スナップショット | |
スナップショット領域を事前に確保 | |
瞬時にスナップショットとれる | |
運用まわりの話 | |
ちゃんと別サーバにバックアップとってますか | |
バックアップの世代管理できていますか | |
ちゃんとリストアできますか | |
--- | |
@koichi222 Amon2でMySQLを使う | |
Amon2 | |
http://search.cpan.org/~tokuhirom/Amon2-2.09/lib/Amon2/Manual/Tutorial.ja.pod | |
Amon2::DBI | |
DBIの薄いラッパー | |
http://d.hatena.ne.jp/tokuhirom/20110719/1311064040 | |
プラグインをロードして使う | |
UTF8フラグ関連のオプションを適切に設定する | |
-> mysql_enable_utf8を自動で有効にしてくれる | |
-> 通常DBIから取り出すとutf-8フラグがオフ | |
簡単なSQL生成機能 | |
$dbh->insert($table, \%row); | |
selectとかは用意されてない | |
条件が複雑になってくるとしんどい | |
-> SQL::Interp | |
-> SQLとbind変数に分けて生成してくれる | |
http://search.cpan.org/~markstos/SQL-Interp-1.21/lib/SQL/Interp.pm | |
ネストしたトランザクションの管理 | |
RaiseErrorがデフォルトで有効 | |
--- | |
@matsumana BKA JOINについて | |
[資料] http://www.slideshare.net/matsumana0101/mysql-casual-talks-lt-20120627 | |
JOINアルゴリズムあれこれ | |
Nested Loop JOIN | |
Merge JOIN | |
Hash JOIN | |
MySQLにはNested Loop JOINしかない | |
Block Nested Loop Join | |
5.6.3m6からBatched Key Access Joinが登場 | |
http://nippondanji.blogspot.jp/2009/01/mysql60join-bka.html | |
--- | |
@akimicyu カジュアルにパーティショニング | |
[資料] http://www.slideshare.net/akimicyu/my-sql-13470549 | |
設定したルールに従ってデータをパーティションする仕組み | |
MySQLでは5.1から利用可能 | |
メリット | |
大量データによる性能劣化防止 | |
アプリ側で設定ルールを意識する必要がない | |
デメリット | |
パーティショニングされたテーブルでは外部キー参照不可 | |
使いどころ | |
ユーザの行動ログ | |
- 特にユーザ間相互作用 | |
時系列に沿って大量データが生成されるもの | |
古いデータを選択的に削除したいもの | |
PARTISION p01 VALUES LESS THAN(10) | |
PARTISION p02 VALUES LESS THAN(10) | |
PARTISION p03 VALUES LESS THAN(10) | |
EXPLAIN PARTISIONS ... で効率的にパーティショニングが生きているかを評価 | |
shardingとも併用可 | |
- ユーザIDでshardingしつつ時系列パーティショニング | |
運用中のテーブルをパーティショニングするのは結構大変 | |
- 設計段階で考慮しておいた方がいい | |
- 運用中DBをshardingするよりはcasual | |
--- | |
@RKajiyama ロードマップの話 or NoSQLネタ | |
MySQL製品担当のかた | |
多数決でロードマップの話に決定->NoSQLはのちほど | |
5.6主な変更点 | |
オプティマイザ: パフォーマンス&スケーラビリティ | |
パフォーマンス・スキーマ: より詳細な統計情報 | |
InnoDB: トランザクションスループット向上 | |
レプリケーション: さらなる可用性とデータの整合性 | |
「NotOnlySQL」オプション | |
Binary Log Group Commit | |
Global Transaction Identifiers | |
-> トランザクションログにID振られる -> Masterこけたときにどっちのslaveが最新か調べやすいとか | |
MySQL Workbench | |
MySQL Utilities -> MHAの後任 | |
--- | |
@ayakomuro カジュアルにバックアップ | |
[資料] http://www.slideshare.net/popowa/mysql-cacual | |
バックアップしてますか? | |
物理バックアップ | |
mysqlbackup(InnnoDB) | |
mysqlhotcopy(MyISAM) | |
論理バックアップ | |
mysqldump | |
データベースの状態 -> hot,warm,cold | |
スナップショットでのバックアップ -> Veritas/LVM/ZFS | |
フルvs増加性バックアップ | |
注意すること -> スケジュール,圧縮,暗号化 | |
mysqldumpのオプション | |
--xml, --debug-info, --force, --dump-slave | |
--- | |
@zabbiozabbio 256分の1の不純な感情 | |
(よいこはマネしちゃいけない話 なんだけど大丈夫なのでこっそり公開) | |
http://nakedsecurity.sophos.com/2012/06/13/anatomy-of-a-bug-the-mysql-authentication-disaster-patch-now/ | |
と実演 | |
memcmpが原因 | |
環境依存が強い | |
MySQL公式バイナリなら大丈夫 -> http://twitter.com/RKajiyama/status/217958264825069568 | |
--- | |
@kitakoh 多分役に立たないもといメッチャ役に立つauto_incrementの話 | |
普通にINSERT | |
idを指定してINSERT -> の後は最大値の次にINSERTされる | |
歯抜けのuser_idを指定 -> 歯抜け部分に入る | |
全行deleteしてINSERT -> 最後に使った値の次の値 | |
TRUNCATEしてINSERT -> 1に巻き戻る(MySQL5.5 4.Xでは巻き戻らないとの話も) | |
idが最大の状態でINSERT -> ERRORになる | |
シーケンス値はALTER文で指定できるので操作可能 | |
ALTER TABLE tbl auto_increment = 10; | |
SHOW CREATE TABLE tbl; | |
複合キーでauto_increment -> 複合キーで重複しないようにauto_incrementしてくれる(MyISAMのみ使える) | |
--- | |
@RKajiyama(再登場) MySQLでNoSQL | |
「ブームに乗り遅れるな」 | |
2種類のmemcached連携 | |
MySQL Server 5.6の場合 | |
プラグインとしてmemcachedインターフェースを追加 | |
アプリからの接続先はMySQLサーバ | |
データ格納先はInnoDBテーブル | |
トランザクション利用可能 | |
Memcachedプロトコルで会話できる | |
MySQL Cluster 7.2の場合 | |
memcachedにNDB API用ドライバを追加 | |
アプリからの接続先はmemcached | |
データ格納先はデータノード上のndbclusterテーブル | |
トランザクション利用可能 | |
レプリケーション利用可能 | |
スキーマ定義 -> kvsのデータをmappingしてRDBに整理してくれる | |
http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/ | |
http://dev.mysql.com/tech-resources/articles/nosql-to-mysql-with-memcached.html | |
--- | |
@yyamasaki1 私がMySQLを始めた理由 | |
技術的に面白い | |
- プラガブルストレージエンジン | |
OSSである | |
ソースコードが公開されているので | |
- 自由に改造できる | |
- 問題を自力で解決できる | |
- (お金を払えば)ソースコードレベルのサポートが受けられる | |
フリー(自由)ソフトウェアである | |
http://www.amazon.co.jp/%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%A8%E8%87%AA%E7%94%B1%E3%81%AA%E7%A4%BE%E4%BC%9A-%E2%80%95Richard-M-Stallman%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4%E9%9B%86-%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%89%E3%83%BBM%E3%83%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%9E%E3%83%B3/dp/4756142818 | |
--- | |
大事な話 | |
日本オラクルのMySQL部門社員募集中 -> MySQLが好きならおk | |
gumiさんも社員募集中ですよ -> pythonのひととか | |
10xlabも -> インフラの人はもうおなかいっぱい気味とか ぜいたくなまことにけしk |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment