MySQl 4.1.xへのアップグレードガイド
1.
以前のMySQLバージョンからのアップグレード
4.0.24以前のバージョンからアップグレードするユーザーは、まずMySQL 4.0.25をインストールしてください。
もし、すでに4.0.25を稼動させている場合は、このセクションをスキップし、次のセクションに進んでください。
Code Listing 1.1: 単純アップグレード |
# emerge -av --buildpkg "<mysql-4.1"
|
2.
現行データのバックアップ
どのデータベース管理者にとっても、もっとも重要な作業の一つにデータのバックアップがあります。
では、やってみましょう。
Code Listing 2.1: すべてのデータベースをダンプする |
# mysqldump \
-uroot \
--password= \
-hlocalhost \
--all-databases \
--opt \
--allow-keywords \
--flush-logs \
--hex-blob \
--master-data \
--max_allowed_packet=16M \
--quote-names \
--result-file=BACKUP_MYSQL_4.0.SQL
|
コマンドを実行するとBACKUP_MYSQL_4.0.SQLというファイルが存在しているはずで、
これが後でデータを復元するのに使われます。このデータはSQL(the Standard Query Language)の
MySQL方言で書かれています。
また、取得したバックアップが稼動するかどうか見ておいたほうがよいでしょう。
3.
最新のバージョンからのアップグレード
もし、ステップ#1をスキップしたならば、現在インストールされているバージョンのバックアップパッケージ
(データではなく、データベースサーバーのもの)を作成します。
Code Listing 3.1: バイナリーパッケージバックアップ |
# quickpkg dev-db/mysql
|
今度は現在のバージョンと全てのデータをきれいに削除します。
Code Listing 3.2: MySQLのアンインストール |
# /etc/init.d/mysql stop
# emerge -C mysql
# tar cjpvf ~/mysql.$(date +%F_%H-%M).tar.bz2 /etc/mysql/my.cnf /var/lib/mysql/
# ls -l ~/mysql.*
# rm -rf /var/lib/mysql/ /var/log/mysql
|
Note:
ここでは二つの異なるバックアップがなければなりません。
一つはSQLのバックアップでMySQLの各バージョン間で互換性があるものと、
もう一つはデータベースを素早く戻すためのものです。
これについてはこのドキュメントの後半でより詳しく触れます。
|
古いMySQLを削除した後に新しいバージョンをインストールできます。
MySQLに対してリンクしているパッケージのリビルドのためrevdep-rebuildが必要です。
Code Listing 3.3: バイナリーのアップデート |
# emerge -av ">mysql-4.1"
# dispatch-conf
# revdep-rebuild
|
インストールした新バージョンのMySQLを設定し、デーモンをリスタートさせましょう。
Code Listing 3.4: MySQL 4.1ベースの設定 |
# emerge --config =mysql-4.1.<micro_version>
# /etc/init.d/mysql start
|
最後にステップ2で作成したバックアップをインポートすることができます。
Important:
標準の/etc/mysql/my.cnfファイルでは、標準でバイナリでのログ出力(log-bin)が設定されています。これは、データを更新する単一トランザクション毎に記録します。もしとても大きなデータベース(たとえば1GB)を扱った場合、これはとても早くディスクスペースを消費する、きわめて大きなファイルを作成することになります。ディスクスペースがあまりないのでしたら、バイナリでのログ出力を無効にした方がよいでしょう。
|
Code Listing 3.5: SQLバックアップをインポートする |
# cat BACKUP_MYSQL_4.0.SQL \
| mysql \
-uroot \
--password= \
-hlocalhost \
--max_allowed_packet=16M
# mysql_fix_privilege_tables \
--defaults-file=/etc/mysql/my.cnf \
--user=root \
--password=
|
MySQLをリスタートし、期待どおり万事うまくいって、4.1.x バージョンでの稼動が可能です。
Code Listing 3.6: MySQL インスタンスのリスタート |
# /etc/init.d/mysql restart
|
アップグレード手順のなかで何か問題が生じた場合、
GentooのBugzillaに問題を報告してください。
4.
古いMySQL 4.0に戻すには
MySQL 4.1 に何か不満があれば、MySQL 4.0 に戻すことが可能です。
Code Listing 4.1: 以前の状態に戻す |
# /etc/init.d/mysql stop
# emerge -C mysql
# rm -rf /var/lib/mysql/ /var/log/mysql
# emerge --usepkgonly "<mysql-4.1"
# tar -xjpvf mysql.[tag] -C /
# /etc/init.d/mysql start
|
5.
直接アップグレードの方法、ただしサポートされおらず危険
ある条件によっては次メジャーバージョンにそのままアップグレードすることができます。
以下で何をしているのか理解し、あなたのシステムに適するか考えた上であれば、
ちょっとした要領で、MySQL 4.1 に直接アップグレードできます。
Code Listing 5.1: 直接アップグレード |
# quickpkg dev-db/mysql
# /etc/init.d/mysql stop
# tar -cjpvf ~/mysql.$(date +%F_%H-%M).tar.bz2 /etc/mysql/my.cnf /var/lib/mysql/
# ls -l ~/mysql.*
# export MYSQL_STRAIGHT_UPGRADE=1
# emerge -av ">mysql-4.1"
# unset MYSQL_STRAIGHT_UPGRADE
# dispatch-conf
# revdep-rebuild
# /etc/init.d/mysql start
# mysql_fix_privilege_tables --defaults-file=/etc/mysql/my.cnf \
-uroot --password=
# mysql --database=mysql -uroot --password= < /tmp/new_pieces.sql
# /etc/init.d/mysql restart # just to be sure
|
グッドラック!何かあっても、私たちが何も注意してない、なんていわないでね;-)
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|