MariaDB 10.2のインストールと初期セットアップ

今回は、<b>ほぼ自分向け</b>でもありますが、MariaDBのインストール手順を書き起こしていきたいと思います。
え？インストールなんて「yum install MariaDB-server」だけで良いんじゃないの？
っていうそこのアナタｍ９！！
<b>ほぼ自分向け</b>ですから！

# インストール環境
OS … CentOS 7.4
DB … MariaDB 10.2.x(最新バージョン)

# いざ、インストール
## yum リポジトリの追加
<a href="https://downloads.mariadb.org/mariadb/repositories/">リポジトリジェネレータ</a>を使い、リポジトリのエントリ情報を取得し、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/151109/ef292ec2-f525-1710-d004-22e6393358b1.png)

/etc/yum.repos.d/にMariaDB.repoという名前で保存してください。

```shell
$ cat /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.2 CentOS repository list - created 2017-12-15 08:42 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```
## インストール
・既存のMariaDBがインストールされていれば削除します

```shell
$ yum -y remove MariaDB-server MariaDB-client
```

・MariaDBのインストール

```shell
$ yum -y install MariaDB-server MariaDB-client
```

## データディレクトリの作成
インストールが完了したら、データファイルを配置する先を準備します。
（今回の例では、/export/mariadbをデータファイルの配置先とします。）

```shell
mkdir /export/mariadb
chown mysql:mysql /export/mariadb
```

ちなみに、yumでインストールが完了すると、mysqlグループとユーザーが作成されていますので、
データファイルの配置先をデフォルト以外に設定したい場合は上記手順のような感じで
mysqlユーザーが所有者となっているディレクトリを作成してください。
デフォルトの `/var/lib/mysql/data` 配下で良い場合は何もしなくて結構です。

## 設定ファイルのコピー
`/usr/share/mysql` 配下に `my-XXXXX.cnf` というファイルが幾つか存在します。
デフォルトで用意されたmy.cnfのサンプルです。
インストールするサーバーのスペックや利用するサービス等の規模によって適宜選択し、
`/etc`の直下にコピーしましょう。

```shell-session
# ls -l /usr/share/mysql/my*.cnf
-rw-r--r-- 1 root root  4920  9月 25 15:39 /usr/share/mysql/my-huge.cnf
-rw-r--r-- 1 root root 20441  9月 25 15:39 /usr/share/mysql/my-innodb-heavy-4G.cnf
-rw-r--r-- 1 root root  4907  9月 25 15:39 /usr/share/mysql/my-large.cnf
-rw-r--r-- 1 root root  4920  9月 25 15:39 /usr/share/mysql/my-medium.cnf
-rw-r--r-- 1 root root  2846  9月 25 15:39 /usr/share/mysql/my-small.cnf
# cp -p /usr/share/mysql/my-small.cnf /etc/my.cnf.d/server.cnf
```

my.cnfのコピーが完了したら、ざっくりの設定項目を変更します。

```shell-session
[mysqld]
datadir = /export/mariadb
innodb_data_home_dir = /export/mariadb
innodb_log_group_home_dir = /export/mariadb
innodb_buffer_pool_size = #トータルのメモリの半分～7割程度に
transaction-isolation = READ-COMMITTED # トランザクション分離レベル
innodb_flush_method=O_DIRECT # ファイルへのフラッシュ方法
# REDOログ関係
innodb_log_file_size = # innodb_buffer_pool_size の 25%に
innodb_log_buffer_size = # innodb_log_file_sizeの50%に（※要検証）
innodb_log_files_in_group = 2 # １グループあたりのログファイルの数（※要検証）
innodb_page_size = 16K # innodbページサイズ（デフォルト16K）
innodb_io_capacity = 2000 # I/O効率化
innodb_flush_neighbors = 0 # I/O効率化
character-set-server = utf8mb4 # キャラクターセット
```

他の項目は適宜環境に合わせて変更してください。

## サービスの起動

```shell-session
# systemctl start mariadb.service
```
## サービスの正常性確認

```shell-session
# systemctl status mariadb.service
```
## 自動起動の設定

```shell-session
# systemctl enable mariadb.service
```
## 初期設定ツールの実行
```shell-session
# mysql_secure_installation
```

```shell
-Enter current password for root(enter for none):
(初期のrootのパスワードを聞かれるのでそのままEnter)
-Set root password?[Y/n]
(新しいrootパスワードを設定)
-Remove anonymous users?[Y/n]
(anonymousユーザーを削除するか聞かれるのでYes)
-Disallow root login remotely?[Y/n]
(rootユーザーのリモートアクセスを許可するか聞かれるのでNo)
-Remove test database and access to it?[Y/n]
testデータベース消す？って聞かれるのでYes
-Reload privilege tables now?[Y/n]
設定読み込み直す？って聞かれるのでYes
```
で完了です。

## Spiderストレージエンジンのインストール

```shell-session
# mysql -uroot -p < /usr/share/mysql/install_spider.sql
```
これで一通りの準備が完了します。