Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

107,514 views

Published on

2015/08/22 YAPC::Asia Tokyo 2015 Lightning Talk
2016/01/13 update about default_password_lifetime will be 0

Published in: Technology

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

×