db tech showcase 2015 初日、午後は二コマ目から再参戦、 ORACLE ACE の @yoku0825 氏のセッションに参加してきました。
スライドまわしが早くてついていくのが、結構つらかったですが、神速で資料を公開してくださるあたり、流石でした!
内容もさすがの人柱的な内容なので、はてなブックマークしている人たちは、感謝の意をこめて氏の Proposal を Affects me しよう!
資料がすでに公開されているので蛇足的ではあるけれども、以下、わたしの取ってきたメモも公開しておきます。
- 概要:
- 2015/04/08 ついにリリース候補版になったMySQL5.7.7。5.7は積極的を本番に入れたい理由、過去のバージョンからのアップグレードで気を付けることなど、本気の導入に向けたウォーミングアップセッション。
Speaker: 田中 翼(yoku0825) (Tsubasa Tanaka) 氏 GMOメディア株式会社
- MySQL といえば
- 軽量高速バカ?
- それは MyISAM
- これからの MySQL
- MyISAM の時代は随分前におわって
- InnoDB 優遇時代
- とある会社
- GMO - ほとんど write intensive なので 5.7 がはまるんじゃないか
- MySQL 5.7 について
- まだ GA ではない
- MariaDB は 1 年くらい behind しながらおっついてきてる感じ
最低限これだけ知ってほしい MySQL 5.7
- 16 桁ハッシュのパスワードが廃止
- 5.6 の時点で 16 桁のパスワードはつくれなくなっていた
- 接続できなくなっている
- だが trick を使えば接続はできていた
- 5.7 では完全に接続できなくなった
- 5.6 の時点で 16 桁のパスワードはつくれなくなっていた
- mysql.user.password カラムが廃止になった
- default_password_lifetime の設定
- 暗黙のデフォルトで 360 に設定されている
- password_last_changed から 360 日以上経過するとアカウントが接続できなくなる
- 0 を指定すると無効になる
- ALTER USER でも
- Bug report をあげている
- SET PASSWORD 構文の変更
- PASSWORD 関数は無効に syntax error
- SHOW GRANTS の出力結果
- パスワードハッシュの値が出力されなくなった
- IDENTIFIED BY まわりの変更
- 構文の変更
- いまのところは Warning を出してくれる
- sql_mode の変更
そもそもなんでこんなのできちゃったんだ、の類がエラーになるようになっている- sql_mode の default
- STRICT_TRANS_TABLES
- ERROR_FOR_DIVISION_BY_ZERO
- NO_ZERO_IN_DATE
- ONLY_FULL_GROUP_BY
- 誰得 ANY_VALUE 関数
- NO_AUTO_CREATE_USER
- 5.6 以降なら performance_schema.events_statement_history を有効にすればアプリが握りつぶしている warning も把握できる
- log_error_verbosity と log_warnings の間の中途半端な状態
- MySQL の conf は後勝ち
- my.cnf から古い log_warnings の設定は消しておくべき
- 暗黙、明示のテンポラリテーブルに InnoDB が使われるように
- 詳細は資料
- 一度容量を確保してしまうと mysqld を再起動するまで ibtmp1 は大きくなったままに注意
- あふれると tmp テーブルをつくれない
- 再起動しないと ibtmp1 は大きくなったまま
- default で auto extended しているのがダメ
- ストレージエンジンを MyISAM にする手もある
- log_timestamps 変数にようるログ上のタイムスタンプの UTC 化
- slow.log も general.log も、、、、
- SET GLOBAL するなどのワークアラウンドが必要
一応知ってほしい MySQL 5.7
- biglog_format の暗黙のデフォルトが STATEMENT が ROW に
- binlog 容量増加
- mysqlbinlog -vv が読みにくい
- slave 側で trigger 実行されない
- Install まわり
- mysql_install_db
- /bin の下に移動されてる
- 5.7 で C++ になった
- バイナリになったのに deprecated になった
- 5.7.6 以降では mysqld -initialize をつかう
- 初期作成ユーザ
- root@localhost のみがつくられるように
- Win かつ -skip-name-resolve 環境では注意
- mysqld -initialize
- 初期パスワードは標準エラー出力にはく
- log-error が設定されているなら標準エラー出力がそっちむく
- mysql_install_db
- sync_binlog のデフォルトが 0 => 1 に
- InnoDB のクラッシュリカバリで binlog を使う箇所がある
- sync_binlog=0 は危険な設定に
- binlog への書き出しが失敗した際に、一貫性を保つために mysqld をダウンさせるオプションが有効になっている
- InnoDB バッファプールの暖気がデフォルトで On (しかも 25%)
- mysqld 起動直後に IO 大量発生
- secure_file_priv の変更
- select into outfile, load data infile の動作を制限
- 指定されていなければユーザ権限で全てのファイルにアクセス可能
- select into outfile, load data infile の動作を制限
- 廃止されたオプション
- skip-innodb とか
- thread_concurrency
- Solaris 専用なんだぜ
- Option の前方一致補完がなくなった
- スローログ関連のしきい値が大幅に変更される、かも
勝手に性能が良くなったりするのは本家に譲る
- マルチトリガー
- select trigger とか
- generated column
- mecab
- multi source replication
ちょっと知っていると得する 5.7
- GTID のオンライン有効化のサポート
- OFF_PERMISSIVE と ON_PERMISSIVE が追加された (図が参考になる)
- enforce_gtid_consistency の取りうる値が ON, OFF, WARN の 3 種類に
- innodb_buffer_pool_size のオンライン変更も可能に
- だが本来オンラインでやるようなものではない
Affects me しよう!
- MySQL の Download page でまちがってアカウント作成しちゃった人
- 今こそ有効活用のとき !
- MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる でも紹介されている Proposal を Affects me しよう!
- 今こそ有効活用のとき !
資料