Mysql casual talks vol4

5,280 views

Published on

Mysql casual talks vol4

Published in: Technology, Education
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,280
On SlideShare
0
From Embeds
0
Number of Embeds
2,413
Actions
Shares
0
Downloads
14
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Mysql casual talks vol4

  1. 1. MySQL5.6 プロダクション投入 2013/04/17 Kenji Matsuo 113年4月17日水曜日
  2. 2. 自己紹介 • Kenji Matsuo • @matsukena • FreakOutでインフラエンジニアをやっ てます。 • 福岡から東京にきてまだ4ヶ月です。 213年4月17日水曜日
  3. 3. アジェンダ • セットアップ • どうやって切り替えを行った? • はまったポイント • 今後やりたい事 313年4月17日水曜日
  4. 4. セットアップ 413年4月17日水曜日
  5. 5. パッケージ • MySQL-shared- compat-5.6.10-1.el6.x86_64 • MySQL-server-5.6.10-1.el6.x86_64 • MySQL-devel-5.6.10-1.el6.x86_64 • MySQL-client-5.6.10-1.el6.x86_64 513年4月17日水曜日
  6. 6. 素直に本家から rpmを持ってきて インストール 613年4月17日水曜日
  7. 7. class mysql { case $::operatingsystemrelease { /^5/: { $release = "rhel5" package { } [ /^6/: { "MySQL-client", $release = "el6" "MySQL-devel", } "MySQL-shared-compat", } ]: } ensure => "5.6.10-1.$release", }  package { "MySQL-server": ensure => "5.6.10-1.$release", require => [ File["/var/lib/mysql/ibdata"], File["/var/lib/mysql/iblog"], ], } 713年4月17日水曜日
  8. 8. my.cnf 813年4月17日水曜日
  9. 9. • performance_schema = off • table_cache → table_open_cache • explicit_defaults_for_timestamp • innodb_additional_mem_pool_sizeを 削除 913年4月17日水曜日
  10. 10. どうやって 切り替えを行った? 1013年4月17日水曜日
  11. 11. 変更前 1113年4月17日水曜日
  12. 12. 変更途中 1213年4月17日水曜日
  13. 13. 変更後 1313年4月17日水曜日
  14. 14. はまったポイント 1413年4月17日水曜日
  15. 15. mysqlデータベース内のInnoDBで 作成されたtableが壊れる。 1513年4月17日水曜日
  16. 16. • ibdata1やib_logfileを削除して、 再起動するといきなり出た。 • エラーメッセージ [Warning] InnoDB: Cannot open table mysql/slave_master_info from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/ doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem. [Warning] Info table is not ready to be used. Table mysql.slave_master_info cannot be opened. [ERROR] Error in checking mysql.slave_master_info repository info type of TABLE. [ERROR] Error creating master info: Error checking repositories. [ERROR] Failed to create or recover replication info repository. 1613年4月17日水曜日
  17. 17. まず、該当のテーブルを消す! use mysql; DROP TABLE IF EXISTS `innodb_index_stats`; DROP TABLE IF EXISTS `innodb_table_stats`; DROP TABLE IF EXISTS `slave_master_info`; DROP TABLE IF EXISTS `slave_relay_log_info`; DROP TABLE IF EXISTS `slave_worker_info`; でも、.ibdは残っているのでこれも消す! rm -rf /var/lib/mysql/mysql/innodb_index_stats.ibd rm -rf /var/lib/mysql/mysql/innodb_table_stats.ibd rm -rf /var/lib/mysql/mysql/slave_master_info.ibd rm -rf /var/lib/mysql/mysql/slave_relay_log_info.ibd rm -rf /var/lib/mysql/mysql/slave_worker_info.ibd 1713年4月17日水曜日
  18. 18. mysql_system_tablesから再作成!! use mysql; source /usr/share/mysql/mysql_system_tables.sql; 1813年4月17日水曜日
  19. 19. Testが通らなくなる。 1913年4月17日水曜日
  20. 20. 詳細は、 oranieさんのblogに 書いてあります。 2013年4月17日水曜日
  21. 21. Test::mysqlでmysql_install_dbして いるところで、エラーになった。 エラーメッセージがなにもでない。 2113年4月17日水曜日
  22. 22. 427 # ---------------------------------------------------------------------- 428 # This will be the default config file 429 # ---------------------------------------------------------------------- 430 431 $config_file= "$basedir/my.cnf"; 432 433 my $cfg_template= find_in_basedir($opt,"file","my-default.cnf", 434 "share","share/mysql","support-files"); 435 -e $cfg_template or cannot_find_file("my-default.cnf"); 436 437 $copy_cfg_file= $config_file; 438 if (-e $copy_cfg_file) 439 { 440 $copy_cfg_file = s/my.cnf/my-new.cnf/; 441 # Too early to print warning here, the user may not notice 442 } 443 open (TEMPL, $cfg_template) or error("Could not open config template"); 444 open (CFG, "> $copy_cfg_file") or error("Could not open config file"); 445 while (<TEMPL>) 446 { 447 # Remove lines beginning with # *** which are template comments 448 print CFG $_ unless /^# ***/; 449 } 450 close CFG; 451 close TEMPL; 2213年4月17日水曜日
  23. 23. Testで いままでとおってた insertが エラーになる。 2313年4月17日水曜日
  24. 24. デフォルトのsql_modeの設定が5.5 までは空だったのに5.6からは指定さ れていた。 /usr/my.cnfに明示的に書かれてい た。 2413年4月17日水曜日
  25. 25. 5.5系 mysql> SELECT @@GLOBAL.sql_mode; +-------------------+ ¦ @@GLOBAL.sql_mode ¦ +-------------------+ ¦ ¦ +-------------------+ 1 row in set (0.00 sec) 5.6系 mysql> SELECT @@GLOBAL.sql_mode; +--------------------------------------------+ ¦ @@GLOBAL.sql_mode ¦ +--------------------------------------------+ ¦ STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION ¦ +--------------------------------------------+ 1 row in set (0.00 sec) 2513年4月17日水曜日
  26. 26. GTIDがOnだと、 レプリケーションが 組めない 2613年4月17日水曜日
  27. 27. • 環境 mysql5.5(Master) + mysql5.6(Slave) • エラーメッセージ root@localhost[(none)]> show slave statusG [...] Last_IO_Error: The slave IO thread stops because the master has GTID_MODE OFF and this server has GTID_MODE ON 2713年4月17日水曜日
  28. 28. GTIDの設定 log-bin log-slave-updates gtid-mode=ON enforce-gtid-consistency GTIDを使用するには、レプリケーションを組む サーバ全体でGTIDを有効にする必要がある。 2813年4月17日水曜日
  29. 29. GTIDの利用を断念 root@localhost[(none)]> show global variables like %gtid%; +--------------------------+----------------------------------------------+ ¦ Variable_name ¦ Value ¦ +--------------------------+----------------------------------------------+ ¦ enforce_gtid_consistency ¦ OFF ¦ ¦ gtid_executed ¦ 9ee58062-864d-11e2-a94b-003048b3b452:1-64049 ¦ ¦ gtid_mode ¦ OFF ¦ ¦ gtid_owned ¦ ¦ ¦ gtid_purged ¦ ¦ +--------------------------+----------------------------------------------+ 5 rows in set (0.00 sec) 2913年4月17日水曜日
  30. 30. -p オプションを つけてるとwarningに 3013年4月17日水曜日
  31. 31. • エラーメッセージ Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 476849 Server version: 5.6.10-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type help; or h for help. Type c to clear the current input statement. root@localhost[(none)]> 3113年4月17日水曜日
  32. 32. mysql_config_editorが 便利 3213年4月17日水曜日
  33. 33. • 暗号化されたパスワードが 「.mylogin.cnf」に書かれるので、 「.my.cnf」に平文のパスワード書かなく てもいいから安心。 $ mysql_config_editor set --user=admin --password Enter password: <パスワード手入力> $ mysql_config_editor print --all [client] user = admin password = ***** 3313年4月17日水曜日
  34. 34. セクションも指定できる。 mysql_config_editor set --login-path=mysqldump --user=root --password Enter password: <パスワード手入力> $ mysql_config_editor print --all [client] user = admin password = ***** [mysql] user = admin password = ***** [mysqladmin] user = root password = ***** 3413年4月17日水曜日
  35. 35. mysqldumpでエラー 3513年4月17日水曜日
  36. 36. • mysql5.6 から mysql5.5のdump をとるときにerrorになる。 • エラーメッセージ mysqldump: Couldnt execute SELECT @@GTID_MODE: Unknown system variable GTID_MODE (1193) 3613年4月17日水曜日
  37. 37. --set-gtid-purgedをoffにすればいい あまり無いと思いますが、あえて5.5系とかの dumpをとる場合は、このオプションを付ける事 でgtidを使用した環境からのダンプファイルに以 下内容が出力されなくなります。 SET @@GLOBAL.GTID_PURGED=71803be2-7816-11e2-8c99-5254003e1cec:1-665; 3713年4月17日水曜日
  38. 38. 今後の予定 3813年4月17日水曜日
  39. 39. • GTIDをON • MHAの導入 3913年4月17日水曜日
  40. 40. ご清聴ありがとう ございました。 4013年4月17日水曜日

×