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