LoginSignup
6
8

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-05-06

はじめに

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

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
誤操作を避ける為、パスは通していないので上の通り明示的にパスとポートを指定してあげる。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8