CentOSにMariaDB 10をインストール

CentOS 6.5
MariaDB 10.1.19

現在MariaDB 5.5が稼働しているDBサーバー内で、最新バージョンの10.1.19を並行稼働させることを目標とする。


<やろうとしていること>

  • 稼働中MariaDBのポート番号: 3306
  • 新バージョンのポート番号: 3307
  • 稼働中MariaDBのインストール先: /usr/local/mariadb-5.5.x
  • 新バージョンのインストール先: /usr/local/mariadb-10.1.19
  • 稼働中MariaDBのサーバー用my.cnf: /etc/my.cnf
  • 新バージョンのサーバー用my.cnf: /var/db/mariadb10/my.cnf
  • 稼働中MariaDBのソケットファイル: /var/run/mariadb/mariadb.sock
  • 新バージョンのソケットファイル: /var/run/mariadb/mariadb10.sock
  • サーバープロセスの実行UNIXユーザーはどちらも mariadb ユーザー


最近では yum で簡単にインストールできるようだが、今回はバージョンアップで上書きしたいわけではなく、別ポートを使って並行稼働させたいので、以前と同じようにソースコードからインストールすることにした。

コンパイルに必要なツール類をインストール

$ yum install cmake
$ yum install bison

ソースコードをダウンロード、コンパイル準備

https://downloads.mariadb.org/mariadb/10.1.19/

$ cd /usr/local/src/
$ gzip -d mariadb-10.1.19.tar.gz
$ tar xf mariadb-10.1.19.tar
$ cd mariadb-10.1.19

コンパイルとインストール

$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.1.19 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make
# ↑かなり時間がかかるので、複数コア使わせた方が良い。
$ make install
$ chown -R mariadb /usr/local/mariadb-10.1.19

環境構築

$ mkdir -p /var/db/mariadb10/data
$ cp /usr/local/mariadb-10.1.19/support-files/my-small.cnf /var/db/mariadb10/my.cnf
$ vim /var/db/mariadb10/my.cnf

[mysqld]
user = mariadb  # プロセスの実行ユーザーを設定
port = 3307  # 旧バージョンとポートをずらす
socket = /var/run/mariadb/mariadb10.sock  # ソケットのパスも別にする

#...

[mysqld_safe]
log-error = /var/log/mariadb10/mysqld.log  # ログの出力先をずらす
pid-file = /var/run/mariadb/mariadb10.pid  # PIDファイルの出力先をずらす

# :wq

$ /usr/local/mariadb-10.1.19/scripts/mysql_install_db --defaults-file=/var/db/mariadb10/my.cnf --basedir=/usr/local/mariadb-10.1.19 --datadir=/var/db/mariadb10/data 

起動、終了確認

$ /usr/local/mariadb-10.1.19/bin/mysqld_safe --defaults-file=/var/db/mariadb10/my.cnf --basedir=/usr/local/mariadb-10.1.19 --datadir=/var/db/mariadb10/data &
$ /usr/local/mariadb-10.1.19/bin/mysqladmin --defaults-file=/var/db/mariadb10/my.cnf shutdown

クライアント設定

# 個人ユーザーに変更
$ alias mariadb=/usr/local/mariadb-10.1.19/bin/mysql  # ~/.bash_profile に書くべし
$ vim ~/.my.cnf
[client]
port = 3307
socket = /var/run/mariadb/mariadb10.sock

# 起動
$ su -
$ /usr/local/mariadb-10.1.19/bin/mysqld_safe --defaults-file=/var/db/mariadb10/my.cnf --basedir=/usr/local/mariadb-10.1.19 --datadir=/var/db/mariadb10/data &
$ exit

# rootパスワード設定
$ /usr/local/mariadb-10.1.19/bin/mysqladmin -u root password ********

# 接続確認
$ mariadb -u root -p

データ移行

# ~/.my.cnf を一時的に古い環境設定に変更してから mysqldump を実行する
$ /usr/local/mariadb-5.5.xx/bin/mysqldump testdb -u testuser -p >dump.sql

# ~/.my.cnf を新しい環境設定に変更してインポートする
$ mariadb -u root -p
MariaDB[none]> CREATE DATABASE testdb CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB[none]> GRANT ALL PRIVILEGES ON testdb.* TO testuser@localhost identified by '********' WITH GRANT OPTION;
MariaDB[none]> GRANT ALL PRIVILEGES ON testdb.* TO testuser@"%" identified by '********' WITH GRANT OPTION;
MariaDB[none]> exit

$ mariadb testdb -u testuser -p < dump.sql


リモート接続する場合は iptables で新の方のポートも通してやること。

ひとまずこれで環境構築は終わり、基本的な動作確認までは取れた。