dockerでMySQLのマスタースレーブレプリケーションをどのようにデプロイするか?
Docker内でMySQLのマスター・スレーブレプリケーションをデプロイするためには、次の手順を実行する必要があります。
- ネットワークを作成する(任意):
- ドッカーのネットワークmysql-netを作成する
- MySQLのマスターノードコンテナを起動します。
- docker run -d –name mysql-master –network mysql-net -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql を実行します。
- MySQLのスレーブコンテナを起動する:
- docker run -d –name mysql-slave –network mysql-net -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysqlを実行します。
- マスターノードのコンテナでバイナリログとマスター・スレーブ・レプリケーション機能を有効にします。
- docker exec -it mysql-master bash
mysql -u root -p
全てのデータベースのREPLICATION SLAVE権限を ‘slave_user’@’%’ に付与する IDENTIFIED BY ‘password’;
PRIVILEGES をフラッシュする;
READ LOCK を持つテーブルをフラッシュする;
MASTER の状態を表示する; - FileとPositionの値をメモしてください。
- マスタースレーブ複製をノードコンテナから設定します。
- docker exec -it mysql-slave bashコマンドを使用して、mysql-slaveコンテナに入ります。次に、mysql -u root -pコマンドを使用してMySQLにrootユーザーとしてログインします。その後、CHANGE MASTER TO MASTER_HOST=’mysql-master’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE='[File]’, MASTER_LOG_POS=[Position];というコマンドを実行して、レプリケーションの設定を更新し、START SLAVE;コマンドを実行してスレーブを起動します。
- ファイルとポジションを、親ノードの該当する値で置き換えてください。
現在、MySQLのマスタースレーブレプリケーションを成功させました。データベースにアクセスするには、マスターノードのコンテナの3306ポートまたはスレーブノードのコンテナの3307ポートに接続できます。