CentOS7.3 WordPressのDBサーバをMySQLからMariaDBへ移行

シェアする

先日から、構築していたMariaDBが、そこそこ使える状態になってきたので、今までのMySQLからMariaDBに移行することにしました。

移行するデータベースの環境

下記に、簡単なデータベースに関する環境です。

種目 パッケージ バージョン HA構成
移行元 MySQL Community Server 5.6.36 mysqlmha
移行先 MariaDB 10.2.6 Galera Cluster
with Galera Load Balancer

長らく、MySQLを利用していましたが、今後のMariaDBの将来に期待して、移行することにしました。

データベースの移行

今回のデータベース移行は、予め、MariaDBの環境を用意して、そこに、データベースをリストアするので、既存環境を変更する事がないため、いつでも戻せるので安心して行なえます。(自宅サーバの強み?ですね。)

移行元サーバでの操作

# cd /tmp
# mysqldump --user=root --password=rootpass \
> --quote-names \
> --lock-all-tables \
> --flush-logs \
> --master-data=2 \
> --hex-blob \

wpdb > dump.sql

参考URL
http://qiita.com/ryounagaoka/items/7be0479a36c97618907f

オプションの簡単な説明

--quote-name
  create table文、insert文のテーブル名や列名を「'(シングルクォート)」で囲む。
--lock-all-tables
  全てのデータベースのテーブルにロックをかけてからダンプを行なう。「--single-transaction」も自動的に有効になる。
  場合によっては不要。--opt(デフォルト有効)に含まれる--lock-tablesにする。
--flush-logs
  ダンプの前に全てのログをフラッシュする。
--master-data=2
  change master to文をコメントアウトした状態でダンプする。--master-data=1はコメントアウトしない。
--hex-blob
  バイナリーデータをHEXリテラルとしてダンプする。

移行先サーバでの操作

 ダンプしたデータを移行先サーバに持ってきて、リストアを行ないます。

# cd /tmp
# sftp 移行元サーバ名
sftp> cd /tmp
sftp> lcd /tmp
sftp> get dump.sql
Fetching /tmp/dump.sql to dump.sql
/tmp/dump.sql
sftp> bye <LF>
# mysql -u root -p
Enter password: rootpass
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.2.6-MariaDB MariaDB Server
 
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> create database wpdb;
Query OK, 1 row affected (0.09 sec)
 
MariaDB [(none)]> exit
Bye
# mysql -u root -prootpass -D wpdb < dump.sql

WordPress用のDBユーザーを作成します。

# mysql -u root -p
Enter password: rootpass
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.2.6-MariaDB MariaDB Server
 
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   
MariaDB [(none)]> use wpdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
MariaDB [wpdb]> select user, host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+
3 rows in set (0.00 sec)
 
MariaDB [wpdb]> create user 'wpuser'@'192.168.1.175' identified by 'wpuserpass';
Query OK, 0 rows affected (0.08 sec)
 
MariaDB [wpdb]> select user, host from mysql.user;
+--------+---------------+
| user   | host          |
+--------+---------------+
| root   | 127.0.0.1     |
| wpuser | 192.168.1.175 |
| root   | ::1           |
| root   | localhost     |
+--------+---------------+
4 rows in set (0.00 sec)
 
MariaDB [wpdb]> grant all privileges on wpdb.* to 'wpuser'@'192.168.1.175' with grant option;
Query OK, 0 rows affected (0.11 sec)
 
MariaDB [wpdb]> show grants for 'wpadmin'@'192.168.1.175';
+----------------------------------------------------------------------------------+
| Grants for wpuser@192.168.1.175                                                  |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wpuser'@'192.168.1.175' IDENTIFIED BY PASSWORD '*6...E6F' |
| GRANT ALL PRIVILEGES ON `wpdb`.* TO 'wpuser'@'192.168.1.175' WITH GRANT OPTION   |
+----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
 
MariaDB [wpdb]> exit
Bye

WordPress本体のパラメータ変更

WordPressのパラメータでDB接続先を変更します。
その他のパラメータについては、移行元のDBと同じですので、設定を変更する必要はないはずです。

# vim /usr/share/wordpress/wp-config.php <LF>
  :
/** MySQL hostname */
define('DB_HOST', '192.168.1.175');
  :

これで、新しいサーバへの移行が完了です。
正常であるかどうかは、あまり、確認してないので、使っていくうちに問題があれば、都度、対応します。

今日から、このブログのDBはMariaDBです。

ちなみに、MySQLサーバは、せっかく作った環境なので、一年ぐらいはモスボール化です。