読者です 読者をやめる 読者になる 読者になる

恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

複数のmysqlインストール、レプリケーション

業務内で1台のサーバーに複数のmysqlをインストールとそれらをレプリケーションを行ったのでメモ。


まずはデフォルトのポートでmysqlインストール

//必要モジュールインストール
yum -y install \
make.x86_64 \
cmake.x86_64 \
gcc.x86_64 \
gcc-c++.x86_64 \
ncurses.x86_64 \
ncurses-devel.x86_64 \
bison.x86_64 \
libaio-devel.x86_64


mv /etc/my.cnf /etc/my.cnf.bak
mv /usr/lib64/mysql /usr/lib64/mysql_bak


tar zxfv mysql-5.5.23.tar.gz
cd /usr/local/src/mysql-5.5.23


cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
make
make install


mkdir /usr/local/mysql/etc
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql:mysql ./data

//my.cnf環境に合わせ編集
vi /usr/local/mysql/etc/my.cnf


./scripts/mysql_install_db --defaults-file=/usr/local/mysql/etc/my.cnf

/usr/local/mysql/support-files/mysql.server start


次に別ポートを使用してmysqlインストール

cd /usr/local/src/mysql-5.5.23
rm CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysqls/mysql01 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
make
make install

mkdir /usr/local/mysqls/mysql01/etc
cd /usr/local/mysqls/mysql01
chown -R root:mysql .
chown -R mysql:mysql ./data


//my.cnf環境に合わせ編集
//上とは別ポートを指定、socket,ログファイル名なども別のものを指定
vi /usr/local/mysqls/mysql01/etc/my.cnf

./scripts/mysql_install_db --defaults-file=/usr/local/mysqls/mysql01/etc/my.cnf

/usr/local/mysqls/mysql01/support-files/mysql.server start


今回は上記でインストールしたmysqlをそれぞれ別サーバーのスレイブに設定するため、下記の流れを実行しました。

//マスター側の書き込みを止め、dumpを取得しスレイブ側にインポート
//マスター側
mysql> FLUSH TABLES WITH READ LOCK;

mysqldump -u {user} -p{password} --host={IP} --port={port num} --default-character-set=binary {table_name} > data.dump

scp data.dump {user}@{IP}:{PATH}

//スレイブ側
mysql {table_name} < data.dump


//マスターのbinファイル、ポジション確認、メモっておく
//マスター側
mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |              |                  |
+------------------+----------+--------------+------------------+

//スレイブの設定行う
//スレイブ側
mysql> 
CHANGE MASTER TO
Master_Host = '{master_host}',
Master_User = '{user}',
Master_Port = {port},
Master_Password = '{password}',
Master_Log_File='mysql-bin.000001',
Master_Log_Pos=107;

mysql> start slave;

下記確認
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
        Seconds_Behind_Master: 0

//マスターの書き込み禁止解除
//マスター側
mysql> UNLOCK TABLES

テストデータベース等作成して確認



感謝致します。



f:id:ogataka50:20131022194609j:plain