複数の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 テストデータベース等作成して確認
感謝致します。