MariaDBセットアップ

#MariaDBサーバのセットアップ（備忘録）

不具合の調査を進めて行く内に、MariaDBの方が機能的に充実しておりこちらの方が良い事が分かる。
→参考　MariaDBとMySQLとの比較
　http://www.xyxon.co.jp/lineup/mariadb/comparison.html

インストール手順
→参考　【俺メモ】CentOS7にMariaDBのインストールまで（そのあとNode.jsや）
　http://qiita.com/nullpointer_t/items/63e4c91688e24a0ac97c

　http://qiita.com/akito1986/items/98a8430d936b293cb354

　http://okdtsk.hateblo.jp/entry/20111219/1324249008

→参考　ユーザ情報はフルバックアップでは含まれない？！
　http://blog.livedoor.jp/ese_admin/archives/52027714.html


###１．yumリポジトリファイル追加
	sudo touch /etc/yum.repos.d/MariaDB.repo
	echo '[mariadb]' | sudo tee -a /etc/yum.repos.d/MariaDB.repo
	echo 'name = MariaDB' | sudo tee -a /etc/yum.repos.d/MariaDB.repo
	echo 'baseurl = http://yum.mariadb.org/10.1/centos7-amd64' | sudo tee -a /etc/yum.repos.d/MariaDB.repo
	echo 'gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB' | sudo tee -a /etc/yum.repos.d/MariaDB.repo
	echo 'gpgcheck=1' | sudo tee -a /etc/yum.repos.d/MariaDB.repo


###２．インストール
	sudo yum install MariaDB-server MariaDB-client -y

	sudo yum install MariaDB-Galera-server MariaDB-client galera -y
 
※どちらかのコマンドを選択してインストールするべきで、こちらは不要だった
→１つ目のコマンドで、Galeraもインストールされた
→既にインストール済みということで新たにインストールは発生しなかった模様


###３．設定ファイル変更
http://okdtsk.hateblo.jp/entry/20111219/1324249008

/usr/share/mysql/*.cnf
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
wsrep.cnf

####３－１
※最小構成の設定ファイルに追記するか。。。

	echo '' | sudo tee -a /usr/share/mysql/my-small.cnf
	echo '[client]' | sudo tee -a /usr/share/mysql/my-small.cnf
	echo 'default-character-set = utf8' | sudo tee -a /usr/share/mysql/my-small.cnf
	echo '' | sudo tee -a /usr/share/mysql/my-small.cnf

	echo '[mysqld]' | sudo tee -a /usr/share/mysql/my-small.cnf
	echo 'character-set-server = utf8' | sudo tee -a /usr/share/mysql/my-small.cnf
	echo 'skip-character-set-client-handshake' | sudo tee -a /usr/share/mysql/my-small.cnf

※中規模構成の設定ファイルへ変更することに。↓３－２



	[client]
		：
	default-character-set=utf8			←追加（キャラクタセットutf-8）
		：
	[mysqld]
		：
	#  Error log				←追加（エラーログ関係）
	log_error="/var/log/mysql/mysqld.log"
	log_warnings=1

	#  Query log				←追加（クエリログ関係）
	general_log = ON
	general_log_file="/var/log/mysql/sql.log"

	#  Binary log				←追加（バイナリログ関係）
	log_bin="/var/log/mysql/bin.log"
	log_bin_index="/var/log/mysql/bin.list"
	max_binlog_size=100M
	expire_logs_days=7
	sync_binlog=1
	binlog_format=mixed

	#  Slow Query log			←追加（遅延ログ関係）
	slow_query_log=1
	slow_query_log_file="/var/log/mysql/slow.log"
	log_queries_not_using_indexes
	log_slow_admin_statements
	long_query_time=5
		：
	plugin-load = handlersocket.so											←追加（ＤＢアクセス高速化プラグイン）
	#plugin-load = handlersocket.so;semisync_master.so;semisync_slave.so	←追加（分散システム構成にする場合が含まれるので、コメントアウト）

	lower_case_table_names=1												←追加（テーブル名等を大小文字で区別しない）

	character-set-server = utf8												←追加（キャラクタセットutf-8）
	#skip-character-set-client-handshake									←追加（キャラクタセットを端末に依存させないので、コメントアウト）
		：
	[mysql]
		：
	default-character-set=utf8
		：


####３－２．ユーザ追加

username@localhost(権限:SELECT,UPDATE,DELETE)

```
GRANT SELECT,INSERT,UPDATE,DELETE ON (table_name).* TO'username'@'localhost' IDENTIFIED BY '';
```

####３－３．データベース追加
```
mysql -u root -p < Filename.dump
mysql -u root -p mysql < Filename-name.dump
```
####３－４．用途にあわせて環境ファイル設定編集

```
sudo cp -p [対象環境].cnf /etc/my.cnf.d/server.cnf
```

####３－５．その他
##### ・出力先フォルダの作成

```
/var/log/mysql
```

###４．MariaDBサービス自動起動設定と起動
	sudo systemctl enable mariadb
	sudo systemctl start mariadb


###５．初期設定
	sudo mysql_secure_installation

```
Set root password? [Y/n] y
New password: 
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
```

	





##※総括
・サイトの情報は、ＯＳ、バージョン、記事日付に注意する。
　→MySQLとmariaDBは基本的には全く同じと見て良い
　→ＯＳが違うとディレクトリの位置やコマンドが違う
　→バージョンが違ったりすると、廃止されて使えない方法だったりする場合がある。
　→記事の日付が古いと、記事の情報が正しいとは言えないが、参考にはなる。
・ログ出力に関する設定を環境ファイルで色々と設定出来るが、設定名や組み合わせを間違えると動かなくなる。
・設定情報は、コマンドの入力でも可能ではあるが、恒久的に有効なのか、一時的に有効なのかの違いがあるのに対し、
　環境ファイルであれば、現在の設定状況を正確に把握することが出来るので、環境ファイルで設定をするように
　するべき。（但し、変更直後、ログ内容を確認してエラーが無いことを確認する）
・うまく行かない時に、例えばソケットファイルを作成しておくという解決策が提示されていたりするが、
　本来自動で事が起こるものであるのなら、自動的に起こらない原因を追究するべき