狠狠撸

狠狠撸Share a Scribd company logo
MySQL Casual
    #2




               1
自己绍介

            ?       id:oranie
                ?    @oranie

? 渋谷の緑色のグループ会社で、主にサーバ側のなんか
  色々やる簡単なお仕事しています。

? study2studyという名前で、ミーハーに色々やる勉強会を
  不定期にやってます。

? 「カジュアル」な発表です。一例なので、多少の間違いは
  カジュアルに考えて下さい!


                                2
LTテーマ




MySQL5.0→5.5への
アップデートについて
アップデートについて

?アップデートのメリット(5.0→5.5)
  ?新機能が色々
  ?InnoDB周り性能アップ!!
  ?但し、デメリットもあるので、
        実サービスで運用しているなら慎重に。
  ?アップデートすべきかどうかの見極めなどは、現在の使い
  方や、状況、システムの重要度などと鑑みて、詳しくは
键本 笔471以降を见ましょう。
アップデートについて

?実サービスじゃなかったらガンガン上げて、実サービスにも反
  映しようぜ!

?僕はなんでアップデートした?
  ?サービスログの解析用DBで速い方が嬉しかった。
  ?元データも再取得が容易に可能+万が一でも多少の誤差
  も許せる解析+最悪サーバ落ちたらすぐ上げ直せばOK、な
  どで性能重視でガンガンアップデート。
アップデート手法




?手法は公式RPMかソースかyumで。
  ?どれが良いかは今or好きな管理手法で決めて。
  ?どれにも一长一短はあるよね。
アップデート手法

次からは、
?CentOS5系で元々の5.0.7がインストールされている
?大元のサーバは一度mysql-serverをダウン出来る
という前提でremiレポジトリを使ってyumでお手軽にやる場合を
  想定。
それ以外の場合でインストール方法どうするの?とかは
键本笔31以降を见ましょう。
5.0.7→5.1 アップデート手法


 ?データそのまま使うパターンならデータ互換性など踏み台
 の為5.1で一度起動してmysql_upgradeによるチェック+リペア。
 次に5.5に上げる。

  ?これは5.5に上げる為の5.1なので、別のマシンにあらかじめ
 入れておいて、無事5.5まで上がるのを確認してからやると楽
 &安全。
 →周りにマシンが無い?EC2+S3使うと楽っすよ。
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
アップデート?データ遷移イメージ図

 
                  mysqldumpによる
                       移行




    MySQL 5.0.7    MySQL 5.1 MySQL 5.5
                   mysql_upgrade
                    による移行
安全なアップデート手順イメージ図

                         データ移行環境
           実環境
                          (AWSなど)




                      MySQL 5.1   MySQL 5.5
    MySQL 5.0.7→5.5
    アップデート対象DB
                      5.5に上げる 本番に移行する
                         踏み台  為のチェックDB
もっと安全(冗長?)なアップデート手順イメージ図

            実環境
                         データ移行環境
                          (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
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
   ?多分エラーとかも起きる。こんな感じ。→
# mysql_upgrade -u root -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
Running 'mysqlcheck with default connection arguments
mysql.columns_priv                        OK
mysql.db                                OK
mysql.func                              OK
mysql.help_category
error : Table upgrade required. Please do "REPAIR TABLE `help_category`" or dump/reload to fix it!
mysql.help_keyword
error : Table upgrade required. Please do "REPAIR TABLE `help_keyword`" or dump/reload to fix it!
mysql.help_relation                      OK
mysql.help_topic
error : Table upgrade required. Please do "REPAIR TABLE `help_topic`" or dump/reload to fix it!
mysql.host                              OK
mysql.proc
error : Table upgrade required. Please do "REPAIR TABLE `proc`" or dump/reload to fix it!
mysql.procs_priv                         OK
mysql.tables_priv                        OK
mysql.time_zone                           OK
mysql.time_zone_leap_second                  OK
mysql.time_zone_name
error : Table upgrade required. Please do "REPAIR TABLE `time_zone_name`" or dump/reload to fix it!
mysql.time_zone_transition                 OK
mysql.time_zone_transition_type              OK
mysql.user                              OK
slow_log.LOG_ANALYZE_RESOURCE
error : Table rebuild required. Please do "ALTER TABLE `LOG_ANALYZE_RESOURCE` FORCE" or dump/reload to fix it!
slow_log.LOG_ANALYZE_TOTAL_EVERY_TIME
error : Table rebuild required. Please do "ALTER TABLE `LOG_ANALYZE_TOTAL_EVERY_TIME` FORCE" or dump/reload to fix it!
slow_log.MASTER_CHANNEL
error : Table rebuild required. Please do "ALTER TABLE `MASTER_CHANNEL` FORCE" or dump/reload to fix it!
slow_log.log_table_history
error : Table rebuild required. Please do "ALTER TABLE `log_table_history` FORCE" or dump/reload to fix it!

Repairing tables
mysql.help_category                   OK
mysql.help_keyword                    OK
mysql.help_topic                     OK
mysql.proc                          OK
mysql.time_zone_name                   OK
5.1アップデート手法

  一部はmysql_upgradeだけでは解決しておらず、結局コマン
  ドを実行するかdump取って入れ直ししろとの表示だった。
    ●
        でも指定されたコマンド打っても治らないテーブルもあった><
  ?なので、場合によっては初めからdump入れた方が早いか
  も。
  ?諸作業が終わったらmysql_checkを実行して、問題無いか
  確認する。
  #mysqlcheck -h localhost -u root -p -a -o -Aな感じで。
   (-a:テーブルを分析 -o:テーブルの最適化、-A:すべてのデータベース内のす
  べてのテーブルをチェック )
  実行すると
# mysqlcheck -h localhost -u root -p -a -o -A
Enter password:
mysql.columns_priv                          Table is already up to date
mysql.db                                 OK
mysql.func                                Table is already up to date
mysql.help_category                             OK
mysql.help_keyword                              OK
mysql.help_relation                        OK
mysql.help_topic                           OK
mysql.host                                Table is already up to date
mysql.proc                                Table is already up to date
mysql.procs_priv                           Table is already up to date
mysql.tables_priv                          Table is already up to date
mysql.time_zone                             Table is already up to date
mysql.time_zone_leap_second                      Table is already up to date
mysql.time_zone_name                            Table is already up to date
mysql.time_zone_transition                      Table is already up to date
mysql.time_zone_transition_type                  Table is already up to date
mysql.user                                OK
slow_log.LOG_ANALYZE_RESOURCE                             OK
slow_log.LOG_ANALYZE_TOTAL_EVERY_TIME                          OK
slow_log.MASTER_CHANNEL                              OK
slow_log.log_table_history                  OK
5.0.7→5.1 アップデート手法

  ?データ量が多かったらmysql_upgradeを繰り返すこの手法が
  良いかも。(ファイルコピーだけで割と済むので
  ?データ量が少ないなら素直にダンプの方が互換性高いは
  ずなので効率的かも
    – AWSとかで大量INSERT結構きつい
    – mysql_upgradeによるTableのrepairとかcheckも結構時間掛かり
        ます><
    – メモリに全部乗っかっていれば割と速かった。
    – ので、この辺はケースバイケースで。
 ?次に5.1→5.5へ。これも念のため初めから5.5入った別マシ
 ンでやると良いと思う。安全第一( ?Д?)σ
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-server
mysql-serverを5.5に。
で、5.1と同じようにmysql_upgradeやる。
アップデート後の補足

?で、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
おまけ: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から。
おまけ: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)
色々と参考にさせて頂いたサイト

MySQL公式サイト

「MySQL 5.5 アップデート」
で検索して表示された全てのサイト


ありがとうございましたm(_ _)m
以上
    発表終了
ありがとうございました!
     m(_ _)m

More Related Content

MySQL Casual LT : MySQL Upgrade 5.0 to 5.5