0
MySQL 5.7の罠が
あなたを狙っている
Traps of MySQL 5.7 are aiming you
2015/08/22
yoku0825
YAPC::Asia 2015
Chiba.pmの
⽅から来まし
た
1/72
Chiba.pm
の “m” は
2/72
MySQL
の”M” :)
3/72
※諸説あ
ります
4/72
\こんにちは/
yoku0825@とある企業のDBA
オラクれない-
ポスグれない-
マイエスキューエる-
家に帰ると
妻の夫-
せがれの⽗-
ムスメの⽗-
Twitter: @yoku0825
Blog: ⽇々の覚書
MyNA ML: ⽇本M...
MySQL 5.7について
2013年4⽉に5.7.1-m11(Development Milestone
Release, ベータ版)
2015年8⽉に5.7.8-rc2(Realease Candidate, リリース候
補版)
2015/...
本編に⼊
る前に
7/72
みなさんに呪
いをかけます
8/72
知らないと致命
傷、でも知ってれ
ば予防できる(は
ず)
9/72
このトークを
聞いた⼈は
10/72
このトークを
聞いていない
⼈に
11/72
MySQL 5.7の罠
をひとつでも伝え
てあげてください
12/72
伝えない
と︖
13/72
 
https://vicky2183.files.wordpress.com/2010/05/
postgresql̲versus̲mysql.jpg
14/72
本編
15/72
余計なお世話
なパラメータ
ー多い
16/72
default̲password̲lifetime=
360
17/72
パスワード変更か
ら 360⽇ でアカ
ウントがロックさ
れる
18/72
アップグレ
ードから
19/72
360⽇後に
襲ってくる
20/72
_⼈⼈⼈⼈⼈⼈_
> 突然の死 <
 ̄Y^Y^Y^Y^ ̄
21/72
log̲timestamps=
UTC
22/72
エラーログ, スロ
ーログ, ジェネラ
ルログ全部 UTC
23/72
show̲compatibility̲56=
OFF
24/72
SHOW STATUS
SHOW
VARIABLES
25/72
performance̲schema
のSELECT権限が必要に
なる
26/72
performance̲schema
を OFFにするとSHOW
VARIABLESできない
27/72
レプリケーションスレーブに注意
REPLICATION SLAVE権限の 他に SELECT ON
performance̲schema.* が必要
mysql> show slave statusG
*********************...
binlog̲format=
ROW
29/72
1ステートメントで
100万⾏DELETE
するバッチがあっ
たとするじゃろ︖
30/72
100万⾏の削除前
のイメージが全て
バイナリーログに
あがががが
31/72
binlogへの書き込
みはDisk Fullで
エラーになってく
れない
32/72
sql̲mode
mysql56> SELECT @@sql_modeG
*************************** 1. row ***************************
@@sql_mode: NO_ENGINE_...
16桁ハッシュ
の古いパスワー
ド形式の廃⽌
34/72
もう残ってま
せんよね︖ 10
年前 ですよ
35/72
log̲error̲verbosity
とlog̲warnings
36/72
同じ変数を2つ
のパラメータ
ーがいじる
37/72
しかも 値がズレてる
(log̲warnings + 1 =
log̲error̲verbosity)
38/72
混在していた場
合、通常のオプシ
ョンと同じく 後勝
ち で設定される。
39/72
古いlog̲warningsの記述はmy.cnfから取り除いておく
べき
value notes warnings errors
log-warnings = 0
log-error-
verbosity = 1
No No Yes
log-w...
internal̲tmp̲disk̲storage̲engine=
InnoDB
41/72
テンポラリー
テーブルは排
他ロック不要
42/72
ロールバックはす
るけどクラッシュ
リカバリーは不要
43/72
テンポラリーテー
ブル専⽤の
ibtmp1 ファイル
を作成する
44/72
⼀度容量を確
保してしまう
と
45/72
mysqldを再起
動するまで 領域
は解放されない
46/72
binlogへの書
き込みは
(略)
47/72
innodb̲buffer̲pool̲load̲at̲startup=
ON
48/72
起動時のバッ
ファプール暖
気ON
49/72
mysqld起動直後
に 全⼒で .ibdファ
イルの読み込みが
⾛る
50/72
この処理が終わるま
での間にトラフィッ
クが突っ込んでくる
とかなり悲惨
51/72
secure̲file̲priv= /
var/lib/mysq-files
(rpm, debのみ)
52/72
LOAD DATA
INFILEがこのデ
ィレクトリ外から
できなくなる
53/72
innodb̲buffer̲pool̲size
のオンライン変更をサポー
ト︕︕1
54/72
バッファプールを
⼤きくするときは
更新がブロックさ
れる
55/72
本当は断続的
に SELECTも
ブロックしてる
56/72
オンラインっ
て何だっけ
57/72
validate̲password
プラグインがデフォル
トで有効 (rpm)
58/72
デフォルトでは 8
⽂字以上、英⼤⽂
字⼩⽂字数字記号
の4種類 が必須
59/72
パスワードを変更す
るまでプラグインの
無効化どころか条件
の確認もできない
60/72
そんな都合の良い
⽂字列ぱっと思い
つかないよ︕
61/72
Do̲you̲love̲MySQL57?
でこの条件を満たすのでご活
⽤ください
62/72
5.6の暗黙のデフォルトとなるべく同じにするためのタレ
[mysqld]
sql_mode= NO_ENGINE_SUBSTITUTION
secure_file_priv= ""
binlog_format= STATEMENT
innodb...
秘伝のタレ以外
16桁ハッシュ
おとなしく41桁ハッシュに更新を
mysql.user.password
スクリプトはバージョン判定を
validate̲passwordプラグイン
Do_you_love_MySQL57? で乗り切ってUNIN...
全部知っ
てた⼈︖
65/72
⽇本語の5.7の
情報はそう多
くない
66/72
こんな状態で
最初のMySQL
が5.7だったら
67/72
⼼が⿊くなっ
ちゃう
©Yappo
68/72
このトークを
聞いた⼈は
69/72
このトークを
聞いていない
⼈に
70/72
MySQL 5.7の罠
をひとつでも伝え
てあげてください
71/72
よろしくおね
がいします :)
72/72
Upcoming SlideShare
Loading in...5
×

MySQL 5.7の罠があなたを狙っている

374

Published on

2015/08/22 YAPC::Asia Tokyo 2015 Lightning Talk

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
374
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "MySQL 5.7の罠があなたを狙っている"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×
×
SlideShare is now LinkedIn SlideShare
Learn More