Upload
yoku0825
View
92.351
Download
4
Embed Size (px)
Citation preview
MySQL 5.7の罠があなたを狙っている
Traps of MySQL 5.7 are aiming you2015/08/22
yoku0825YAPC::Asia 2015
This slide was updated at
2016/01/13!!1/74
Chiba.pmの⽅から来まし
た2/74
Chiba.pmの “m” は
3/74
MySQLの”M” :)
4/74
※諸説あります
5/74
\こんにちは/
yoku0825@とある企業のDBAオラクれない-ポスグれない-マイエスキューエる-
家に帰ると妻の夫-せがれの⽗-ムスメの⽗-
Twitter: @yoku0825Blog: ⽇々の覚書MyNA ML: ⽇本MySQLユーザ会
6/74
MySQL 5.7について
2013年4⽉に5.7.1-m11(Development Milestone Release, ベータ版)2015年8⽉に5.7.8-rc2(Realease Candidate, リリース候補版)2015/08/22現在、GA(General Available, ⼀般公開版)はまだ2015/10/21 MySQL 5.7.9 GA Released!!
7/74
本編に⼊る前に
8/74
みなさんに呪いをかけます
9/74
知らないと致命傷、でも知ってれば予防できる(は
ず)10/74
このトークを聞いた⼈は
11/74
このトークを聞いていない⼈に
12/74
MySQL 5.7の罠をひとつでも伝えてあげてください
13/74
伝えないと︖
14/74
https://vicky2183.wordpress.com/2010/05/14/postgresql-vs-mysql/
15/74
本編16/74
余計なお世話なパラメーター多い
17/74
default̲password̲lifetimeは 5.7.11からデフォルト0 にな
りました
2016/01/13 updated
18/74
default̲password̲lifetime= 360
19/74
パスワード変更から *360⽇* でアカウントがロック
される20/74
アップグレードから
21/74
360⽇後に襲ってくる
22/74
_⼈⼈⼈⼈⼈⼈_> 突然の死 < ̄Y^Y^Y^Y^ ̄
23/74
log̲timestamps= UTC
24/74
エラーログ, スローログ, ジェネラルログ全部 UTC
25/74
show̲compatibility̲56= OFF
26/74
SHOW STATUSSHOW
VARIABLES27/74
*performance̲schema* のSELECT権限が必要になる
28/74
performance̲schemaを *OFFにすると
SHOW VARIABLESできない*
29/74
レプリケーションスレーブに注意 (FIXED by 5.7.9)
REPLICATION SLAVE権限の *他に* SELECT ON performance̲schema.* が必要
mysql> show slave status\G*************************** 1. row ***************************.. Last_IO_Errno: 1142 Last_IO_Error: The slave I/O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master. Error: SELECT command denied to user 'replicator'@'172.17.0.13' for table 'global_variables'..
30/74
binlog̲format= ROW
31/74
1ステートメントで100万⾏DELETEするバッチがあったとするじゃろ︖
32/74
100万⾏の削除前のイメージが全てバイナリーログにあがががが
33/74
binlogへの書き込みはDisk Fullで エラーになってく
れない34/74
sql̲mode
mysql56> SELECT @@sql_mode\G*************************** 1. row ***************************@@sql_mode: NO_ENGINE_SUBSTITUTION1 row in set (0.00 sec)
mysql57> SELECT @@sql_mode\G*************************** 1. row ***************************@@sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION1 row in set (0.00 sec)
35/74
16桁ハッシュの古いパスワード形式の廃⽌
36/74
もう残ってませんよね︖ 10年前 ですよ
37/74
log̲error̲verbosityとlog̲warnings
38/74
同じ変数を2つのパラメーターがいじる
39/74
しかも 値がズレてる (log̲warnings + 1 = log̲error̲verbosity)
40/74
混在していた場合、通常のオプションと同じく 後勝ち で設定される。
41/74
古いlog̲warningsの記述はmy.cnfから取り除いておくべき
value notes warnings errors
log-warnings = 0log-error-verbosity = 1
No No Yes
log-warnings = 1log-error-verbosity = 2
No Yes Yes
log-warnings >= 2log-error-verbosity >= 3
Yes Yes Yes
42/74
internal̲tmp̲disk̲storage̲engine= InnoDB
43/74
テンポラリーテーブルは排他ロック不要
44/74
ロールバックはするけどクラッシュリカバリーは不要
45/74
テンポラリーテーブル専⽤の
ibtmp1 ファイルを作成する
46/74
⼀度容量を確保してしまう
と47/74
mysqldを再起動するまで 領域は解放されない
48/74
binlogへの書き込みは(略)
49/74
innodb̲buffer̲pool̲load̲at̲startup= ON
50/74
起動時のバッファプール暖気ON
51/74
mysqld起動直後に 全⼒で .ibdファイルの読み込みが
⾛る52/74
この処理が終わるまでの間にトラフィックが突っ込んでくるとかなり悲惨
53/74
secure̲file̲priv= /var/lib/mysq-files
(rpm, debのみ)
54/74
LOAD DATA INFILEがこのディレクトリ外からできなくなる
55/74
innodb̲buffer̲pool̲sizeのオンライン変更をサポー
ト︕︕1
56/74
バッファプールを⼤きくするときは 更新がブロックさ
れる57/74
本当は断続的に SELECTもブロックしてる
58/74
オンラインって何だっけ
59/74
validate̲password プラグインがデフォルトで有効 (rpm)
60/74
デフォルトでは 8⽂字以上、英⼤⽂字⼩⽂字数字記号の4種類 が必須
61/74
パスワードを変更するまでプラグインの無効化どころか条件の確認もできない
62/74
そんな都合の良い⽂字列ぱっと思いつかないよ︕
63/74
Do̲you̲love̲MySQL57? でこの条件を満たすのでご活
⽤ください
64/74
5.6の暗黙のデフォルトとなるべく同じにするためのタレ
[mysqld]sql_mode= NO_ENGINE_SUBSTITUTIONsecure_file_priv= ""binlog_format= STATEMENTinnodb_buffer_pool_dump_at_shutdown= 0innodb_buffer_pool_load_at_startup= 0innodb_buffer_pool_dump_pct= 100loose-default_password_lifetime= 0### Remove log_warnings!!loose-log_error_verbosity= 3loose-log_timestamps= SYSTEMloose-internal_tmp_disk_storage_engine= MyISAMloose-show_compatibility_56= ON
65/74
秘伝のタレ以外
16桁ハッシュおとなしく41桁ハッシュに更新を
mysql.user.passwordスクリプトはバージョン判定を
validate̲passwordプラグインDo_you_love_MySQL57? で乗り切ってUNINSTALL PLUGIN
validate_password
66/74
全部知ってた⼈︖
67/74
⽇本語の5.7の情報はそう多くない
68/74
こんな状態で最初のMySQLが5.7だったら
69/74
⼼が⿊くなっちゃう
©Yappo70/74
このトークを聞いた⼈は
71/74
このトークを聞いていない⼈に
72/74
MySQL 5.7の罠をひとつでも伝えてあげてください
73/74
よろしくおねがいします :)
https://vicky2183.wordpress.com/2010/05/14/postgresql-vs-mysql/
74/74