[データベースのアップグレード]

ダウンタイムが2~3分程度(データサイズによる)で済むデータベースのマイナーアップグレードのメモ書きです。


①  mysql-5.1.32-linux-i686-icc-glibc23からmysql-5.1.34-linux-i686-icc-glibc23へのアップグレード

② 最新のMYSQLをダウンロードしてきて、/usr/localに展開する。
  http://dev.mysql.com/downloads/mysql/5.1.html
Linux (non RPM, Intel C/C++ compiled, glibc-2.3) downloads
Linux (x86) 5.1.36 113.3M
Linux (AMD64 / Intel EM64T) 5.1.36 116.3M
Linux (IA64) 5.1.36 139.6M

③ lsコマンドで確認した状態。mysqlはシンボリックリンクなので最新のバイナリーをシンボリックリンクの切り替えで更新する。

[root@MYSQL01 local]# ls -l /usr/local/mysql*
lrwxrwxrwx 1 root root 35 7月 14 14:42 /usr/local/mysql -> mysql-5.1.34-linux-i686-icc-glibc23

/usr/local/mysql-5.1.32-linux-i686-icc-glibc23:
合計 148
-rwxrwxr-x 1 root mysql 19071 2月 14 19:22 COPYING
-rwxrwxr-x 1 root mysql 5139 2月 14 19:22 EXCEPTIONS-CLIENT
-rwxrwxr-x 1 root mysql 8769 2月 14 19:22 INSTALL-BINARY
-rwxrwxr-x 1 root mysql 1410 2月 14 19:22 README
drwxrwxr-x 2 root mysql 4096 2月 14 19:22 bin
drwxrwxr-x 4 root mysql 4096 3月 18 10:57 data
drwxrwxr-x 2 root mysql 4096 2月 14 19:20 docs
drwxrwxr-x 2 root mysql 4096 2月 14 19:20 include
drwxrwxr-x 3 root mysql 4096 2月 14 19:21 lib
drwxrwxr-x 4 root mysql 4096 2月 14 19:21 man
drwxrwxr-x 9 root mysql 4096 2月 14 19:22 mysql-test
drwxrwxr-x 2 root mysql 4096 2月 14 19:22 scripts
drwxrwxr-x 27 root mysql 4096 2月 14 19:22 share
drwxrwxr-x 5 root mysql 4096 2月 14 19:22 sql-bench
drwxrwxr-x 2 root mysql 4096 2月 14 19:22 support-files

/usr/local/mysql-5.1.34-linux-i686-icc-glibc23:
合計 156
-rwxrwxr-x 1 mysql mysql 19071 4月 1 08:52 COPYING
-rwxrwxr-x 1 mysql mysql 5139 4月 1 08:52 EXCEPTIONS-CLIENT
-rwxrwxr-x 1 mysql mysql 8769 4月 1 08:52 INSTALL-BINARY
-rwxrwxr-x 1 mysql mysql 1410 4月 1 08:52 README
drwxrwxr-x 2 mysql mysql 4096 7月 14 14:38 bin
drwxrwxr-x 11 root mysql 4096 7月 14 14:42 data
drwxrwxr-x 4 mysql mysql 4096 7月 14 08:53 data_original
drwxrwxr-x 2 mysql mysql 4096 4月 1 08:51 docs
drwxrwxr-x 2 mysql mysql 4096 4月 1 08:51 include
drwxrwxr-x 3 mysql mysql 4096 4月 1 08:51 lib
drwxrwxr-x 4 mysql mysql 4096 4月 1 08:51 man
drwxrwxr-x 10 mysql mysql 4096 4月 1 08:52 mysql-test
drwxrwxr-x 2 mysql mysql 4096 4月 1 08:52 scripts
drwxrwxr-x 27 mysql mysql 4096 4月 1 08:52 share
drwxrwxr-x 5 mysql mysql 4096 4月 1 08:52 sql-bench
drwxrwxr-x 2 mysql mysql 4096 4月 1 08:52 support-files
[root@MYSQL01 local]#

④ 既存で動作しているmysqlのサービスを一時停止する。

[root@MYSQL01 local]# /etc/init.d/mysql stop
Shutting down MySQL. [ OK ]

⑤ /usr/local/mysql-5.1.32-linux-i686-icc-glibc23/dataをフォルダー毎
新しいMYSQLのデータフォルダーにコピーする。
※データフォルダーやログが別にある時はそちらもコピーしておく。(my.cnf確認)

⑥ データコピーが終わったら既存のMYSQLはサービス停止時間を最小限に抑える為に再開しておく。

[root@MYSQL01 local]# /etc/init.d/mysql start
Starting MySQL. [ OK ]
[root@MYSQL01 local]# ls -l

⑦ 新しいデータベース用に準備したオプションファイルを明示的に指定して、新しいMYSQLも起動する。
./bin/mysqld_safe --defaults-file=/etc/my_05.1.34.cnf &

-------------------my_05.1.34.cnf---------------
port = 3307
socket = /tmp/mysql5.1.34.sock
basedir=/usr/local/mysql-5.1.34-linux-i686-icc-glibc23
datadir=/usr/local/mysql-5.1.34-linux-i686-icc-glibc23/data
slow_query_log=/usr/local/mysql-5.1.34-linux-i686-icc-glibc23/data/slow_query.log
------------------------------------------------

※事前に新しいMYSQLのフォルダーオーナーをmysqlなどのユーザーに変更しておく。

⑧  ローカルソケットとportを指定して、MYSQLに接続する。
何も指定しないとDefaultのオプションファイルが読み込まれ3306に古いMYSQLに接続されてしまう。(/etc/my.cnf)

./mysql -u root -p -P 3307 --socket=/tmp/mysql5.1.34.sock

⑨ 接続出来る事が確認出来たら、以下のように新規導入したMYSQLのアップグレード状況を"mysql_upgrade"
にて確認。不足している、システムテーブルはこのスクリプトにて補完される。

---------------------------------------------------------------------------------------
[root@MYSQL01 bin]# ./mysql_upgrade -u root -p -P 3307 --socket=/tmp/mysql5.1.34.sock
Enter password:
Looking for 'mysql' as: ./mysql
Looking for 'mysqlcheck' as: ./mysqlcheck
Running 'mysqlcheck'...
Running 'mysqlcheck'...
WINDOWS.TABLE004_Brokerage OK
WINDOWS.TABLE004_Channel OK
WINDOWS.TABLE004_ConfidenceTerm OK
WINDOWS.TABLE004_DTCompany OK
WINDOWS.TABLE004_DTForeignExchange OK
WINDOWS.TABLE004_DTForeignstock OK
WINDOWS.TABLE004_HandlingItem OK
WINDOWS.TABLE004_HowToOrder OK
WINDOWS.TABLE004_InfoService OK
WINDOWS.TABLE004_InitialPublicOffering OK
WINDOWS.TABLE004_SearchTerm OK
WINDOWS.TABLE004_SecuritiesCompany OK
WINDOWS.TABLE004_Support OK
WINDOWS.TABLE004_TabSort OK
WINDOWS.TABLE007DTOfBank OK
WINDOWS.TABLE007InfoOfBank OK
WINDOWS.TABLE007ItemDT OK
WINDOWS.TABLE005CommodityExchange OK
WINDOWS.TABLE005DTOfCompany OK
WINDOWS.TABLE005FinancialScale OK
WINDOWS.TABLE005GuaranteeMoney OK
WINDOWS.TABLE005HandlingCommodity OK
WINDOWS.TABLE005HowToOrder OK
WINDOWS.TABLE005InformationSupport OK
WINDOWS.TABLE005Item OK
WINDOWS.TABLE005Margin OK
WINDOWS.TABLE005MobileService OK
WINDOWS.TABLE005Others OK
WINDOWS.TABLE005SearchTerm OK
WINDOWS.TABLE005Sort OK
WINDOWS.T_TEST OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.general_log
Error : You can't use locks with log tables.
status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
mysql.slow_log
Error : You can't use locks with log tables.
status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
test.M01 OK
test.STUDY OK
test.STUDY2 OK
test.T01 OK
test.T_SiteResponse OK
test.company OK
test.innodb_monitor OK
Running 'mysql_fix_privilege_tables'...
OK
[root@MYSQL01 bin]#

⑩ 特にエラーが無ければ、古いMYSQLと入れ替える為にシンボリックリンクを切り替えて
MYSQLを停止 → シンボリックリンク切り替え → MYSQLを起動。

[root@MYSQL01 local]# /etc/init.d/mysql stop
Shutting down MySQL. [ OK ]
[root@MYSQL01 local]# ls -l

[root@MYSQL01 local]# ls -l
lrwxrwxrwx 1 root root 35 7月 14 14:42 mysql -> mysql-5.1.32-linux-i686-icc-glibc23
drwxrwxr-x 13 root mysql 4096 2月 14 19:22 mysql-5.1.32-linux-i686-icc-glibc23
drwxrwxr-x 14 mysql mysql 4096 7月 14 14:12 mysql-5.1.34-linux-i686-icc-glibc23

[root@MYSQL01 local]# rm mysql

[root@MYSQL01 local]# ln -s mysql-5.1.34-linux-i686-icc-glibc23 mysql

lrwxrwxrwx 1 root root 35 7月 14 14:42 mysql -> mysql-5.1.34-linux-i686-icc-glibc23
drwxrwxr-x 13 root mysql 4096 2月 14 19:22 mysql-5.1.32-linux-i686-icc-glibc23
drwxrwxr-x 14 mysql mysql 4096 7月 14 14:12 mysql-5.1.34-linux-i686-icc-glibc23

[root@MYSQL01 local]# /etc/init.d/mysql start
Starting MySQL. [ OK ]
[root@MYSQL01 local]# ls -l

⑪ MYSQLのオプションファイルは指定しなくても、オリジナル(/etc/my.cnf)が読み込まれport 3306にて接続
出来る。この時点でデータベース基本アップグレードは終了。

[root@MYSQL01 local]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.1.34-log MySQL Community Server (GPL)

⑫ 最終確認として、Version確認、アカウント確認、接続確認などを行う。
最終的にエラーログにエラーが書き込まれて無ければ無事終了。

mysql> select version();
+------------+
| version() |
+------------+
| 5.1.34-log |
+------------+
1 row in set (0.00 sec)

mysql> select user,host,password from mysql.user;
+-----------------+-------------------------+-------------------------------------------+
| user | host | password |
+-----------------+-------------------------+-------------------------------------------+
| root | localhost | *D5B72F886E3918D73A1AAAAD8F6C62EC6C4DFFFF |
| root | MYSQL01.local | *D5B72F886E3918D73A1AAAAD8F6C62EC6C4DFFFF |
| root | 127.0.0.1 | *D5B72F886E3918D73A1AAAAD8F6C62EC6C4DFFFF |
| my_user | 192.168.0.72 | *16320B8A6B1F40A0D6924311E03EEEE6379AAAA2 |
| my_user | 192.168.0.115 | *16320B8A6B1F40A0D6924311E03EEEE6379AAAA2 |
| my_user | PC08001.local | *16320B8A6B1F40A0D6924311E03EEEE6379AAAA2 |
| my_user | PC06013.local | *16320B8A6B1F40A0D6924311E03EEEE6379AAAA2 |
+-----------------+-------------------------+-------------------------------------------+
20 rows in set (0.00 sec)

mysql> show full processlist;
+----+-----------------+-----------+--------------------+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+--------------------+---------+------+-------+-----------------------+
| 10 | root | localhost | information_schema | Query | 0 | NULL | show full processlist |
| 28 | my_user | localhost | TEST | Sleep | 5414 | | NULL |
+----+-----------------+-----------+--------------------+---------+------+-------+-----------------------+
2 rows in set (0.01 sec)

mysql>

mysql> status;
--------------
mysql Ver 14.14 Distrib 5.1.34, for pc-linux-gnu (i686) using readline 5.1

Connection id: 10
Current database: information_schema
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.34-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 3 hours 13 min 56 sec

Threads: 2 Questions: 8919 Slow queries: 936 Opens: 619 Flush tables: 1 Open tables: 64 Queries per second avg: 0.766
--------------

mysql> exit

Comments are closed.

Post Navigation