Top Banner
1 MySQL Casual #2
25

MySQL Casual LT : MySQL Upgrade 5.0 to 5.5

Jul 03, 2015

Download

Documents

oranie Narut
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

1

MySQL Casual#2

Page 2: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

2

自己紹介

• id:oranie

• @oranie

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

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

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

Page 3: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

LTテーマ

MySQL5.0→5.5への

アップデートについて

Page 4: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデートについて

・アップデートのメリット(5.0→5.5)

・新機能が色々

・InnoDB周り性能アップ!!

・但し、デメリットもあるので、

        実サービスで運用しているなら慎重に。

・アップデートすべきかどうかの見極めなどは、現在の使い方や、状況、システムの重要度などと鑑みて、詳しくは

Page 5: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

鍵本 P471以降を見ましょう。

Page 6: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデートについて

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

・僕はなんでアップデートした?

・サービスログの解析用DBで速い方が嬉しかった。

・元データも再取得が容易に可能+万が一でも多少の誤差も許せる解析+最悪サーバ落ちたらすぐ上げ直せばOK、などで性能重視でガンガンアップデート。

Page 7: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデート手法

・手法は公式RPMかソースかyumで。

・どれが良いかは今or好きな管理手法で決めて。

・どれにも一長一短はあるよね。

Page 8: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデート手法

次からは、

・CentOS5系で元々の5.0.7がインストールされている

・大元のサーバは一度mysql-serverをダウン出来る

という前提でremiレポジトリを使ってyumでお手軽にやる場合を想定。

それ以外の場合でインストール方法どうするの?とかは

Page 9: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

鍵本P31以降を見ましょう。

Page 10: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

5.0.7→5.1 アップデート手法

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

・これは5.5に上げる為の5.1なので、別のマシンにあらかじめ入れておいて、無事5.5まで上がるのを確認してからやると楽&安全。

 →周りにマシンが無い?EC2+S3使うと楽っすよ。

Page 11: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

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

Page 12: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデート・データ遷移イメージ図

 

MySQL 5.0.7 MySQL 5.1 MySQL 5.5

mysqldumpによる移行

mysql_upgradeによる移行

Page 13: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

安全なアップデート手順イメージ図

 実環境

MySQL 5.0.7→5.5アップデート対象DB

MySQL 5.1 MySQL 5.5

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

5.5に上げる踏み台

本番に移行する為のチェックDB

Page 14: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

もっと安全(冗長?)なアップデート手順イメージ図

 実環境

MySQL 5.0.7→5.5アップデート対象DB

MySQL 5.0→5.1

MySQL 5.1→5.5

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

5.0.7

5.1

5.1

5.5

Page 15: MySQL Casual LT  : MySQL Upgrade  5.0 to 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

・多分エラーとかも起きる。こんな感じ。→

Page 16: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

# 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 OKRunning 'mysql_fix_privilege_tables'...OK

Page 17: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

5.1アップデート手法

  一部はmysql_upgradeだけでは解決しておらず、結局コマンドを実行するかdump取って入れ直ししろとの表示だった。

● でも指定されたコマンド打っても治らないテーブルもあった><

・なので、場合によっては初めからdump入れた方が早いかも。

  ・諸作業が終わったらmysql_checkを実行して、問題無いか確認する。

#mysqlcheck -h localhost -u root -p -a -o -Aな感じで。   (-a:テーブルを分析 -o:テーブルの最適化、-A:すべてのデータベース内のす

べてのテーブルをチェック )

  実行すると

Page 18: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

# 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

Page 19: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

5.0.7→5.1 アップデート手法

・データ量が多かったらmysql_upgradeを繰り返すこの手法が良いかも。(ファイルコピーだけで割と済むので

  ・データ量が少ないなら素直にダンプの方が互換性高いはずなので効率的かも

– AWSとかで大量INSERT結構きつい

– mysql_upgradeによるTableのrepairとかcheckも結構時間掛かります><

– メモリに全部乗っかっていれば割と速かった。

– ので、この辺はケースバイケースで。

・次に5.1→5.5へ。これも念のため初めから5.5入った別マシンでやると良いと思う。安全第一( ゚Д゚)σ

Page 20: MySQL Casual LT  : MySQL Upgrade  5.0 to 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やる。

Page 21: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

アップデート後の補足

・で、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

Page 22: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

おまけ: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から。

Page 23: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

おまけ: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)

Page 24: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

色々と参考にさせて頂いたサイト

MySQL公式サイト

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

ありがとうございましたm(_ _)m

Page 25: MySQL Casual LT  : MySQL Upgrade  5.0 to 5.5

以上

発表終了

ありがとうございました!

m(_ _)m