RADL ひよっこエンジニアの備忘録 2年目 奮闘記
reddit.epicplugins.com 
want to join? in seconds

MySQLからMariaDBへ移行する際に気をつけること。

MySQLからMariaDBへ移行する際に気をつけること・・・書ききれないくらいあるのですが

とりあえず今自分が直面していてすぐに解決しなくてはいけない問題を紹介します。

         / ̄ ̄ ̄\
         /        \
      /   ─   ─  ヽ
       |   (●)  (●)  |
      \   (__人__) __,/   えっと、今日はですね・・・
      /   ` ⌒´   \
    _/((┃))______i | キュッキュッ
 .. / /ヽ,,⌒)  ̄ ̄ ̄ ̄ ̄(,,ノ \
 /  /_________ヽ..  \
 
           / ̄ ̄ ̄\
         / ─    ─ \   
       /  (●)  (●) ヽ
        |    (__人__)    |    MySQLからMariaDBへ移行する際に
        \   ` ⌒´  __,/     気をつけることについてです。
        /            \
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  トン
    _(,,)  MySQLから  (,,)_
    /  | MariaDBへ移行 ! |  \
  /    |__________」   \

MySQLのデータをMariaDBへ持って行き、MariaDB上で何か適当なDBを1つ drop database を行ってみると

下記エラーが出て、レプリケーション(同期)が切れます!

Last_SQL_Error: Query caused different errors on master and slave.     
Error on master: message (format)='Failed to open mysql.event' error code=1545 ; 
Error on slave: actual message='no error', error code=0. Default database: 'hogehoge'. Query: 'drop database hogehoge

他にも、warningsが出るので異変に気づくはずです。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| hogehogetest1      |
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> drop database hogehogetest1;
Query OK, 1 row affected, 2 warnings (0.40 sec)

MariaDB [(none)]> show warnings;
+-------+------+--------------------------------------------------------------+
| Level | Code | Message                                                      |
+-------+------+--------------------------------------------------------------+
| Error | 1728 | Cannot load from mysql.proc. The table is probably corrupted |
| Error | 1545 | Failed t
o open mysql.event                                   |
+-------+------+--------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]>

あちゃ~・・・

しかし、この状況を打破する魔法のコマンドがあるのです。

mysql_upgrade

もしくは

mysql_upgrade --upgrade-system-tables

* –upgrade-system-tablesオプションを使えば、全DBの全テーブル内にチェックが走らず、mysqlDBの全テーブルチェックだけで済む。

これをMariaDBのマスター側で行えば、あら不思議、治っちゃいます。

            ___
       /      \
      /ノ  \   u. \ !?
    / (●)  (●)    \ 
    |   (__人__)    u.   | 本番で運用しているDBにこのコマンド
     \ u.` ⌒´      /  ぶっこまないといけないんだけど・・・
    ノ           \
  /´               ヽ

         ____
 怖い   /       \!??
      /  u   ノ  \  絶対、予期しない出来事が起きて
    /      u (●)  \  障害発生するんだよなぁ・・・
    |         (__人__)|  ボクやりたくないお
     \    u   .` ⌒/
    ノ           \
  /´               ヽ
とりあえず、ペルコナのツール(Percona Toolkit for MySQL)使って最終検証だ!

   / ̄ ̄\
 /   _ノ  \
 |   ( ●)(●)
. |     (__人__). rm、 問題起こすなよ、マジで。
  |     ` ⌒´ノr川 ||
.  |         },.!  ノ’
.  ヽ        r / .|
   ヽ     ノノ ノ
   /     / ./
   |      /
    |    i´

コメントを残す