MySQL Casual LT : MySQL Upgrade 5.0 to 5.5

16,934 views

Published on

1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
16,934
On SlideShare
0
From Embeds
0
Number of Embeds
8,373
Actions
Shares
0
Downloads
23
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

MySQL Casual LT : MySQL Upgrade 5.0 to 5.5

  1. 1. MySQL Casual #2 1
  2. 2. 自己紹介 • id:oranie • @oranie• 渋谷の緑色のグループ会社で、主にサーバ側のなんか 色々やる簡単なお仕事しています。• study2studyという名前で、ミーハーに色々やる勉強会を 不定期にやってます。• 「カジュアル」な発表です。一例なので、多少の間違いは カジュアルに考えて下さい! 2
  3. 3. LTテーマMySQL5.0→5.5へのアップデートについて
  4. 4. アップデートについて・アップデートのメリット(5.0→5.5) ・新機能が色々 ・InnoDB周り性能アップ!! ・但し、デメリットもあるので、        実サービスで運用しているなら慎重に。 ・アップデートすべきかどうかの見極めなどは、現在の使い 方や、状況、システムの重要度などと鑑みて、詳しくは
  5. 5. 鍵本 P471以降を見ましょう。
  6. 6. アップデートについて・実サービスじゃなかったらガンガン上げて、実サービスにも反 映しようぜ!・僕はなんでアップデートした? ・サービスログの解析用DBで速い方が嬉しかった。 ・元データも再取得が容易に可能+万が一でも多少の誤差 も許せる解析+最悪サーバ落ちたらすぐ上げ直せばOK、な どで性能重視でガンガンアップデート。
  7. 7. アップデート手法・手法は公式RPMかソースかyumで。 ・どれが良いかは今or好きな管理手法で決めて。 ・どれにも一長一短はあるよね。
  8. 8. アップデート手法次からは、・CentOS5系で元々の5.0.7がインストールされている・大元のサーバは一度mysql-serverをダウン出来るという前提でremiレポジトリを使ってyumでお手軽にやる場合を 想定。それ以外の場合でインストール方法どうするの?とかは
  9. 9. 鍵本P31以降を見ましょう。
  10. 10. 5.0.7→5.1 アップデート手法 ・データそのまま使うパターンならデータ互換性など踏み台 の為5.1で一度起動してmysql_upgradeによるチェック+リペア。 次に5.5に上げる。 ・これは5.5に上げる為の5.1なので、別のマシンにあらかじめ 入れておいて、無事5.5まで上がるのを確認してからやると楽 &安全。 →周りにマシンが無い?EC2+S3使うと楽っすよ。
  11. 11. 5.0.7→5.1 アップデート手法・順番として5.0.7が入っているので、まず ・データバックアップ→データファイルコピー+dumpデータを 別場所に。コピーする手順は、 1.MySQL サーバーをシャットダウンし、エラーが発生していないことを確認してください。 2.すべてのデータファイルを (ibdata ファイルと .ibd ファイル) 安全な場所にコピーしてくださ い。 3.すべての ib_logfile ファイルを安全な場所にコピーしてください。 4.my.cnf 設定ファイルを安全な場所にコピーしてください。 5.InnoDB テーブルのすべての .frm ファイルを安全な場所にコピーしてください。全て公式リファレンスより。mysqldumpは色々あるので省きます。鍵ほn(ry
  12. 12. アップデート・データ遷移イメージ図  mysqldumpによる 移行 MySQL 5.0.7 MySQL 5.1 MySQL 5.5 mysql_upgrade による移行
  13. 13. 安全なアップデート手順イメージ図  データ移行環境 実環境 (AWSなど) MySQL 5.1 MySQL 5.5 MySQL 5.0.7→5.5 アップデート対象DB 5.5に上げる 本番に移行する 踏み台 為のチェックDB
  14. 14. もっと安全(冗長?)なアップデート手順イメージ図  実環境 データ移行環境 (AWSなど) 5.0.7 5.1 MySQL 5.0.7→5.5 アップデート対象DB 5.1 5.5 MySQL MySQL 5.0→5.1 5.1→5.5
  15. 15. 5.0.7→5.1 アップデート手法念のため5.0.7→5.1に行く手順の説明 ・今のVerをアンインストール→公式RPMorソースインストー ル ※yumでは色々なレポジトリ見たんですが、 5.1配布している所が直近で見当たりませんでした。 ・5.1でmy.cnfの設定を行い、起動後にmysql_upgradeを実行 する。   # mysql_upgrade -u root -p ・多分エラーとかも起きる。こんな感じ。→
  16. 16. # mysql_upgrade -u root -pEnter password:Looking for mysql as: mysqlLooking for mysqlcheck as: mysqlcheckRunning mysqlcheck with default connection argumentsRunning mysqlcheck with default connection argumentsmysql.columns_priv OKmysql.db OKmysql.func OKmysql.help_categoryerror : Table upgrade required. Please do "REPAIR TABLE `help_category`" or dump/reload to fix it!mysql.help_keyworderror : Table upgrade required. Please do "REPAIR TABLE `help_keyword`" or dump/reload to fix it!mysql.help_relation OKmysql.help_topicerror : Table upgrade required. Please do "REPAIR TABLE `help_topic`" or dump/reload to fix it!mysql.host OKmysql.procerror : Table upgrade required. Please do "REPAIR TABLE `proc`" or dump/reload to fix it!mysql.procs_priv OKmysql.tables_priv OKmysql.time_zone OKmysql.time_zone_leap_second OKmysql.time_zone_nameerror : Table upgrade required. Please do "REPAIR TABLE `time_zone_name`" or dump/reload to fix it!mysql.time_zone_transition OKmysql.time_zone_transition_type OKmysql.user OKslow_log.LOG_ANALYZE_RESOURCEerror : Table rebuild required. Please do "ALTER TABLE `LOG_ANALYZE_RESOURCE` FORCE" or dump/reload to fix it!slow_log.LOG_ANALYZE_TOTAL_EVERY_TIMEerror : Table rebuild required. Please do "ALTER TABLE `LOG_ANALYZE_TOTAL_EVERY_TIME` FORCE" or dump/reload to fix it!slow_log.MASTER_CHANNELerror : Table rebuild required. Please do "ALTER TABLE `MASTER_CHANNEL` FORCE" or dump/reload to fix it!slow_log.log_table_historyerror : Table rebuild required. Please do "ALTER TABLE `log_table_history` FORCE" or dump/reload to fix it!Repairing tablesmysql.help_category OKmysql.help_keyword OKmysql.help_topic OKmysql.proc OKmysql.time_zone_name OK
  17. 17. 5.1アップデート手法  一部はmysql_upgradeだけでは解決しておらず、結局コマン ドを実行するかdump取って入れ直ししろとの表示だった。 ● でも指定されたコマンド打っても治らないテーブルもあった>< ・なので、場合によっては初めからdump入れた方が早いか も。  ・諸作業が終わったらmysql_checkを実行して、問題無いか 確認する。 #mysqlcheck -h localhost -u root -p -a -o -Aな感じで。   (-a:テーブルを分析 -o:テーブルの最適化、-A:すべてのデータベース内のす べてのテーブルをチェック )  実行すると
  18. 18. # mysqlcheck -h localhost -u root -p -a -o -AEnter password:mysql.columns_priv Table is already up to datemysql.db OKmysql.func Table is already up to datemysql.help_category OKmysql.help_keyword OKmysql.help_relation OKmysql.help_topic OKmysql.host Table is already up to datemysql.proc Table is already up to datemysql.procs_priv Table is already up to datemysql.tables_priv Table is already up to datemysql.time_zone Table is already up to datemysql.time_zone_leap_second Table is already up to datemysql.time_zone_name Table is already up to datemysql.time_zone_transition Table is already up to datemysql.time_zone_transition_type Table is already up to datemysql.user OKslow_log.LOG_ANALYZE_RESOURCE OKslow_log.LOG_ANALYZE_TOTAL_EVERY_TIME OKslow_log.MASTER_CHANNEL OKslow_log.log_table_history OK
  19. 19. 5.0.7→5.1 アップデート手法 ・データ量が多かったらmysql_upgradeを繰り返すこの手法が 良いかも。(ファイルコピーだけで割と済むので  ・データ量が少ないなら素直にダンプの方が互換性高いは ずなので効率的かも – AWSとかで大量INSERT結構きつい – mysql_upgradeによるTableのrepairとかcheckも結構時間掛かり ます>< – メモリに全部乗っかっていれば割と速かった。 – ので、この辺はケースバイケースで。 ・次に5.1→5.5へ。これも念のため初めから5.5入った別マシ ンでやると良いと思う。安全第一( ゚Д゚)σ
  20. 20. 5.1→5.5 アップデート手法・まず5.5にアップデートする為、remiレポジトリを使ってyumによ るアップデート。GPGキーをインポート# rpm -import http://rpms.famillecollet.com/RPM-GPG-KEY-remiリポジトリファイルを追加# cd /etc/yum.repos.d# wget http://rpms.famillecollet.com/remi-enterprise.repoでレポジトリの設定#yum update –enablerepo=remi mysql-servermysql-serverを5.5に。で、5.1と同じようにmysql_upgradeやる。
  21. 21. アップデート後の補足・で、5.5インストールして起動しようとすると結構起動できないと かがあると思います。 →変わったor廃止になったオプションをmy.cnfに書いていると か。代表的なのは「default-character-set=utf8」とか →ログ見てダメな設定をチクチク潰しましょう。※何が変わったかとかはsakaikさんのブログで日本語の解説一 覧で載っています!http://d.hatena.ne.jp/sakaik/20100414/mysql533obsol公式サイトには英語で一覧が。http://dev.mysql.com/doc/refman/5.5/en/news-5-5-0.html
  22. 22. おまけ:mysql_upgradeコマンドについて※公式リファレンス:http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.htmlのコピペで す。--help :ヘルプ--basedir=path:基準パス。MySQLがインストールされているディレクトリを指す。--datadir=path:データ ディレクトリへのパス。--debug-check:プログラムが終了する際、いくつかのデバッグ情報を出力する--debug-info, -T:デバッグ情報とメモリとCPU使用率の統計プログラムの出力--default-auth=plugin:使用するクライアント側の認証プラグイン。5.5.1から。
  23. 23. おまけ:mysql_upgradeコマンドについて②--force:既にmysql_upgrade実行していても無視して実行する。(mysql_upgrade_infoに書かれている内 容を無視する)--plugin-dir=path:クライアント側の認証プラグインのディレクトリパス--tmpdir=path, -t path:一時ファイルの作成に使用するディレクトリのパス名。(何の一時ファイルか は?--upgrade-system-tables, -s:データテーブルはアップグレードしないで、システムテーブルをアップグ レードする。--user=user_name, -u user_name:ユーザ名--verbose:冗長モード。 プログラムの動作についてさらに情報をプリントアウトする。--write-binlog:バイナリログ有効モード。デフォルト設定。(逆に出したく無い時は--skip-write-binlog)
  24. 24. 色々と参考にさせて頂いたサイトMySQL公式サイト「MySQL 5.5 アップデート」で検索して表示された全てのサイトありがとうございましたm(_ _)m
  25. 25. 以上 発表終了ありがとうございました! m(_ _)m

×