DockerでMySQLクラスタを構築する方法
Docker MySQLクラスタを構築するには、次の手順に従ってください。
- 各ノードに Docker Engine をインストールする:Docker をインストールする
- MySQLコンテナを接続するためのDockerネットワークを作成する
- docker networkの作成 mysql-cluster
- 各ノードにMySQLコンテナインスタンスを作成することで、MySQLインスタンスを作成します。
- docker run -d -p 3306:3306 –name mysql-node1 –net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql && docker run -d -p 3307:3306 –name mysql-node2 –net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql && docker run -d -p 3308:3306 –name mysql-node3 –net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql
- 各ノードにMySQLコンテナを作成し、それらをmysql-clusterネットワークに接続します。各コンテナは異なるポート番号(3306、3307、3308)を使用します。
- MySQLクラスタを設定する:各MySQLコンテナにログインし、クラスタ機能を有効にするために設定ファイルを編集してください。
- mysql-node1コンテナ上でvimを使用して/etc/mysql/mysql.conf.d/myssqld.cnfファイルを編集することができます:“`
docker exec -it mysql-node1 bash
vim /etc/mysql/mysql.conf.d/mysqld.cnf
“` - 設定ファイル内の以下のパラメータを変更する:
- server-id=1
log-bin=mysql-bin
log_slave_updates=1
enforce_gtid_consistency=1
gtid_mode=ON
binlog_format=ROW - 次にコンテナを再起動します:
- docker restart mysql-node1
- 他のノードでも同様の手順を実行するが、server-idを異なる値(2,3)に設定する。
- 创建集群用户:在其中一个节点上创建集群用户并授予相应的权限。
- docker exec -it mysql-node1 bash
mysql -uroot -ppassword - MySQL コマンドラインに入ったら、次のコマンドを実行してください。
- CREATE USER ‘cluster’@’%’ IDENTIFIED BY ‘password’; GRANT REPLICATION SLAVE ON *.* TO ‘cluster’@’%’; FLUSH PRIVILEGES;
- “password”の部分は実際のパスワードに置き換えてください。
- それぞれのノードでマスターおよびスレーブのレプリケーション設定を行う:配置マスタースレーブ・レプリケーション
- docker exec -it mysql-node1 bash
mysql -uroot -ppassword - MySQL コマンドラインに入ったら、次のコマンドを実行します。
- SHOW MASTER STATUS;
- File と Position の値をメモします。
- 他のノードで以下のコマンドを実行する:
- docker exec -it mysql-node2 bash
mysql -uroot -ppassword - MySQLコマンドプロンプトに入ったら、以下のコマンドを実行する(FileとPositionを、前の手順で取得した値に置き換える)。
- CHANGE MASTER TO MASTER_HOST=’mysql-node1′, MASTER_USER=’cluster’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’ファイル’, MASTER_LOG_POS=場所;
START SLAVE; - 上記の手順を繰り返して、他のノードを従ノードとして設定する。
- 検証クラスター:任意のノードで検証を実行できます。
- docker exec -it mysql-node1 bash
mysql -uroot -ppassword - MySQLのコマンドラインに入ったら、以下のコマンドを実行してください:
- SHOW STATUS LIKE ‘wsrep_cluster_size’;
- クラスタサイズが3以上であれば、クラスタが適切に設定されていることを示します。
上記までの手順で、Docker MySQLクラスターのセットアップが完了します。使用するコマンド中のパスワードやその他のパラメーターを、ご自身の環境に合わせて置き換えてください。また、さらに構成や調整が必要な場合は、適宜追加してください。