見出し画像

MariaDB|ナレッジベース「MySQLと並行してMariaDBをインストールする」(私家版和訳)

Maria DBのナレッジベース記事「Installing MariaDB Alongside MySQL」の私家版和訳です。元記事は多分、過去10年以内にリリースされたんでは無いかな? 2020-10-08時点では、Maria DBはstable 10.5.5だし、CentOSの最新Stable版は2020-06-15時点では、8.2.2004。ということは元記事は2011-12-20リリースのCentOS 6.2ベース?…情報自体が古いわね。参考程度でお願いします。

MySQLと並行してMariaDBをインストールする

MariaDBは、MySQLの代わりにドロップインでインストールできますが、MySQLと一緒にインストールすることもできます。(例えば、データベース/アプリケーションを1つずつ移行したい場合などに便利です)。

ここでは、既存のMySQLインストールの近くにMariaDBをインストールする手順を説明します。

  • ・最新版(mariadb-5.5.24-linux-x86_64.tar.gz - この記事の執筆時点)が入っているコンパイル済バイナリのtar.gzをダウンロードし、任意のディレクトリに展開してください。この記事では、ディレクトリを/optとします。
ログイン・プロンプトのシステムバナーを確認
[root@mariadb-near-mysql ~]# cat /etc/issue
CentOS release 6.2 (Final)

「mysql*」で始まる、インストール済RPMパッケージを表示
[root@mariadb-near-mysql ~]# rpm -qa mysql*
mysql-5.1.61-1.el6_2.1.x86_64
mysql-libs-5.1.61-1.el6_2.1.x86_64
mysql-server-5.1.61-1.el6_2.1.x86_64

「mysqld」でのgrep結果に関する、全ユーザーの全プロセスを階層表示
[root@mariadb-near-mysql ~]# ps axf | grep mysqld
 2072 pts/0    S+     0:00          \_ grep mysqld
 1867 ?        S      0:01 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock ...
 1974 ?        Sl     0:06  \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql ...
  • ・以下のように、データディレクトリmariadb-dataとシンボリックリンクmariadbを作成します。:
ディレクトリ作成
[root@mariadb-near-mysql opt]# mkdir mariadb-data

シンボリックリンク作成
[root@mariadb-near-mysql opt]# ln -s mariadb-5.5.24-linux-x86_64 mariadb

[root@mariadb-near-mysql opt]# ls -al
total 20
drwxr-xr-x.  5 root root 4096 2012-06-06 07:27 .
dr-xr-xr-x. 23 root root 4096 2012-06-06 06:38 ..
lrwxrwxrwx.  1 root root   27 2012-06-06 07:27 mariadb -> mariadb-5.5.24-linux-x86_64
drwxr-xr-x. 13 root root 4096 2012-06-06 07:07 mariadb-5.5.24-linux-x86_64
drwxr-xr-x.  2 root root 4096 2012-06-06 07:26 mariadb-data
  • ・グループmariadbとユーザーmariadbを作成し、正しい所有権を設定します:
グループ「mariadb」を「システムアカウント」として新規作成
[root@mariadb-near-mysql opt]# groupadd --system mariadb

アカウント「mariadb」を、「システムアカウント」、passwdコメント「MariaDB Server」、ホームディレクトリ「/opt/mariadb」、所属グループ「mariadb」として新規作成
[root@mariadb-near-mysql opt]# useradd -c "MariaDB Server" -d /opt/mariadb -g mariadb --system mariadb

所有者「mariadb」グループ「mariadb」
[root@mariadb-near-mysql opt]# chown -R mariadb:mariadb mariadb-5.5.24-linux-x86_64/
[root@mariadb-near-mysql opt]# chown -R mariadb:mariadb mariadb-data/
  • ・サポートファイルから/opt/mariadb-dataに、my.cnfを新規作成します:
ファイルのコピー
[root@mariadb-near-mysql opt]# cp mariadb/support-files/my-medium.cnf mariadb-data/my.cnf

所有者「mariadb」グループ「mariadb」
[root@mariadb-near-mysql opt]# chown mariadb:mariadb mariadb-data/my.cnf
  • ・ファイル/opt/mariadb-data/my.cnfを編集し、カスタムパス、socket、port、user、そして最も重要なdatadirとbasedirを追加します。ファイルには少なくとも以下のような記述が必要です:
[client]
port        = 3307
socket      = /opt/mariadb-data/mariadb.sock

[mysqld]
datadir         = /opt/mariadb-data
basedir         = /opt/mariadb
port        = 3307
socket      = /opt/mariadb-data/mariadb.sock
user            = mariadb
  • ・サポートファイルから適切な場所に、init.dスクリプトをコピーします:
ファイルのコピー
[root@mariadb-near-mysql opt]# cp mariadb/support-files/mysql.server /etc/init.d/mariadb

属性「実行可能」を追加
[root@mariadb-near-mysql opt]# chmod +x /etc/init.d/mariadb
  • /etc/init.d/mariadbを編集して、以下のように、mysqlmariadbに置き換えます:
- # Provides: mysql
+ # Provides: mariadb

- basedir=
+ basedir=/opt/mariadb

- datadir=
+ datadir=/opt/mariadb-data

- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"

一番厄介なのは、このファイルへの最後の変更です。mariadbに1つのcnfファイルだけを使用するように、指示する必要があります。startセクションの、$bindir/mysqld_safeの後に、--defaults-file=/opt/mariadb-data/my.cnfを追加します。行は次のようになります:

# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &

wait_for_ready()関数内のmysqladminコマンドにも同じ変更を加えて、mariadb startコマンドが適切にserverの起動をlistenできるようにする必要があります。wait_for_ready()関数の、$bindir/mysqladminの後に、--defaults-file=/opt/mariadb-data/my.cnfを追加します。行は次のようになります:

wait_for_ready () {
[...]
    if $bindir/mysqladmin --defaults-file=/opt/mariadb-data/my.cnf ping >/dev/null 2>&1; then
  • ・my.cnfファイルを引数として明示的に指定することで、mysql_install_dbを実行します:
「/opt/mariadb」に移動
[root@mariadb-near-mysql opt]# cd mariadb

スクリプトの実行
[root@mariadb-near-mysql mariadb]# scripts/mysql_install_db --defaults-file=/opt/mariadb-data/my.cnf
  • ・これで、MariaDBを起動できます
「/opt/」で起動
[root@mariadb-near-mysql opt]# /etc/init.d/mariadb start
Starting MySQL...                                          [  OK  ]
  • ・システム起動時にMariaDBを起動させます:
「/etc/init.d」に移動
[root@mariadb-near-mysql opt]# cd /etc/init.d

サービス「mariadb」を、登録
[root@mariadb-near-mysql init.d]# chkconfig --add mariadb 

登録したサービス「mariadb」を、Runレベル3で、自動起動させる
[root@mariadb-near-mysql init.d]# chkconfig --levels 3 mariadb on
  • ・両方のインスタンスが実行されていることをテストします:
コマンドラインから(デフォルトのsocketで)実行
[root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();"
+-----------+
| VERSION() |
+-----------+
| 5.1.61    |
+-----------+

コマンドラインから(指定したmariadbのsocketで)実行
[root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock
+----------------+
| VERSION()      |
+----------------+
| 5.5.24-MariaDB |
+----------------+

MariaDBのアップグレードはどうするのか?

/opt/mariadb-data内にmariadb.socketmy.cnfファイル、databasesを配置することで、MariaDBバージョンをアップグレードしたい場合、以下のようにするだけで済む:

  • ・現在のバージョンに近い/opt内のアーカイブから新バージョンを展開する
  • ・MariaDBをstopする
  • mariadbを変更して、新しいディレクトリを指すようにする
  • ・MariaDBをstartする
  • ・upgradeスクリプトを実行する…但し、ソケット・オプション--socket=/opt/mariadb-data/mariadb.sockを提供する必要があることを忘れないように

この記事が気に入ったらサポートをしてみませんか?