mysql5.6をソースビルドしてマスター・スレーブで動かす[前編]

#はじめに
MySqlのソースビルドが5.6から色々変わってきているようでしたので備忘録までに。
尚、マスター側だけ見れば単一構成での運用にも対応します。
実際のレプリケーションの作業は[後編](http://qiita.com/Fu3nori/items/4cab8060c892999adbea)をご覧下さい

#MySqlソースビルド・マスター側

##マスター側インストール

`wget mysql5.6のダウンロードアドレス
tar zxvf mysqlのダウンロードアーカイブ.tar.gz
cd 解凍してできたディレクトリ
yum install bison
yum install gcc
yum install gcc-c++
yum install ncurses-devel
yum install cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 
-DMYSQL_TCP_PORT=3306 \ 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/tmp/mysql_master.sock 
make
make install`

##マスタ側設定開始
`groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql
./scripts/mysql_install_db --datadir=/usr/local/mysql/data --user=mysql`

##マスタ側権限付与と設定ファイル設置

`chown -R mysql.mysql /usr/local/mysql
cp ./support-files/my-default.cnf /usr/local/mysql/my.cnf `

#MySqlソースビルド・スレーブ側	
`wget mysql5.6のダウンロードアドレス
tar zxvf mysqlのダウンロードアーカイブ.tar.gz 
cd 解凍してできたディレクトリへ
yum install bison
yum install gcc
yum install gcc-c++
yum install cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql_slave \ 
-DMYSQL_TCP_PORT=13306 \ 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/tmp/mysql_slave.sock 
make
make install`

##スレーブ側設定開始
`groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql
./scripts/mysql_install_db --datadir=/usr/local/mysql/data --user=mysql `

##スレーブ側権限付与と設定ファイル設置
`chown -R mysql.mysql /usr/local/mysql_slave // スレーブ側
my.cnfの設置
cp ./support-files/my-default.cnf /usr/local/mysql_slave/my.cnf 
`

#マスター側のmy.cnf書式	
	[mysqld]
	log-bin =mysql-bin
	basedir = /usr/local/mysql
	datadir = /usr/local/mysql/data
	port = 3306
	server_id = 1
	socket = /tmp/mysql_master.sock
	pid-file=/usr/local/mysql/data/mysqld.pid

	[client]
	port=3306
	socket = /tmp/mysql_master.sock

#スレーブ側のmy.cnf書式	
	[mysqld]
	basedir = /usr/local/mysql_slave
	datadir = /usr/local/mysql_slave/data
	port = 13306
	server_id = 13306
	socket = /tmp/mysql_slave.sock
	pid-file=/usr/local/mysql_slave/data/mysqld.pid

	[client]
	port=13306
	socket = /tmp/mysql_slave.sock

##マスター側のMySQL起動スクリプト設置	
`cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld_master` 

##マスター側のMysql起動スクリプト編集
`vi /etc/init.d/mysqld_master`

###マスタの書式283行目を書き換え
Before
`$bindir/mysqld_safe --datadir="$datadir"--pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &`
After
`$bindir/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf >/dev/null 2>&1 &`

##スレーブ側のMySQL起動スクリプト設置	
`cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld_slave` 

##スレーブ側のMySQL起動スクリプト編集	
`vi /etc/init.d/mysqld_slave`

###スレーブの書式283行目を書き換え
Before
`$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &`

After
`$bindir/mysqld_safe --defaults-file=/usr/local/mysql_slave/my.cnf >/dev/null 2>&1 &`

# サービスへの登録
## マスター側のサービス登録
`chkconfig --add mysqld_master
chkconfig mysqld_master on`

## スレーブ側のサービス登録
`chkconfig --add mysqld_slave
chkconfig mysqld_slave on`

# クライアント接続
※当然の事ですが、マスター・スレーブ双方のユーザーパスワードは個別に設定しておくように。
## マスターへの接続
`mysql -u root`
こちらは既にパスを通してあるのでこれで良い。

## スレーブへの接続
`/usr/local/mysql_slave/bin/mysql -u root -P 13006`
誤操作を避ける為、パスは通していないので上の通り明示的にパスとポートを指定してあげる。