Docker で MySQL マスターとスレーブをデプロイする方法

Docker で MySQL マスターとスレーブをデプロイする方法

画像をダウンロード

MySQLイメージの選択

docker 検索 mysql 

ここに画像の説明を挿入

MySQL 5.7 イメージをダウンロード

docker プル mysql:5.7

mysql イメージを表示

Docker イメージ

ここに画像の説明を挿入

MySQLマスタースレーブを構築する

マスター

docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

奴隷

docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

マスターによって外部にマップされるポート番号は3307で、スレーブによって外部にマップされるポート番号は3308です。

コンテナを表示

ドッカーps 

ここに画像の説明を挿入

接続テスト

ここに画像の説明を挿入
ここに画像の説明を挿入

マスターの設定

コンテナに入るには次の 2 つの方法があります。

docker exec -it 1b166e12ad6b /bin/bash #1b166e12ad6bはコンテナIDです
docker exec -it mysql-master /bin/bash #mysql-masterはコンテナ名です

/etc/mysql/my.cnf設定ファイルを変更する

テキストエディタで /etc/mysql/my.cnf を開きます。 

ここに画像の説明を挿入

vimコマンドが見つかりませんでした。docker内にvimツールをインストールしてください。vimをインストールするには、次の2つのコマンドを入力してください。

apt-getアップデート
apt-get で vim をインストール

インストールが完了したら、my.cnf設定ファイルを変更します。

テキストエディタで /etc/mysql/my.cnf を開きます。

[mysqld]
## server-id=100 は同じ LAN 内で一意である必要があります。  
## バイナリログ機能を有効にすると、任意のログ(キー)を取得できます
ログビン=マスタービン
binlog-format=ROW // バイナリログ形式。行、ステートメント、混合の 3 種類があります。

設定後、MySQLを再起動します。

サービスmysqlの再起動

再起動するとDockerコンテナが停止します。コンテナを再起動するには次のコマンドを使用します。

ドッカーps -a 

ここに画像の説明を挿入

docker で MySQL マスターを起動します

データベース同期アカウントを作成する

mysql-masterコンテナに入る

docker exec -it 1b166e12ad6b /bin/bash

MySQLにログインし、スレーブホストの同期アカウントを承認します。

mysql -uroot -p123456

'123456' によって識別されるユーザー 'slave'@'%' を作成します。
*.* のレプリケーション スレーブ、レプリケーション クライアントを 'slave'@'%' に付与します。 

ここに画像の説明を挿入

この時点でマスター構成は完了です

奴隷

マスターと同様のコマンドを使用してコンテナに入ります

docker exec -it mysql-slave /bin/bash

my.cnf設定ファイルを変更し、vimコマンドをインストールすることを忘れないでください

テキストエディタで /etc/mysql/my.cnf を開きます。

[mysqld]
## server_id を設定します。一意である必要があることに注意してください。server-id=101  
## スレーブが他のスレーブのマスターとして使用される場合にバイナリログを有効にする log-bin=mysql-slave-bin   
## relay_log 設定 リレーログ relay_log=mysql-relay-bin  
read_only=1 ## 読み取り専用に設定します。この項目が設定されていない場合、スレーブは読み取りと書き込みが可能です。

MySQLを再起動する

サービスmysqlの再起動

コンテナを起動する

docker で MySQL スレーブを起動する

マスタースレーブレプリケーションを有効にする

まず、2つのターミナルを開き、マスターコンテナとスレーブコンテナに入り、MySQLを入力します。

mysql-master 操作

mysql -uroot -p123456
マスターステータスを表示します。 

ここに画像の説明を挿入

mysql-スレーブ操作

注: master_log_file='', master_log_pos= をマスターマシンで表示した結果に変更することを忘れないでください。

mysql -uroot -p123456

マスターを、master_host='10.0.3.2'、master_user='slave'、master_password='123456'、master_port=3307、master_log_file='master-bin.000001'、master_log_pos=617 に変更します。

スレーブを起動します。

スレーブステータスを表示 \G; 

ここに画像の説明を挿入

テスト成功

mysql-master 操作

データベース dockertest を作成します。 

ここに画像の説明を挿入

mysql-スレーブ操作

ここに画像の説明を挿入

マスター上に作成されたデータベースがスレーブ上に表示され、成功が証明されます。

記事参照リンク

詳しい情報については、

これで、Docker で MySQL をマスターとスレーブとしてデプロイする方法についての記事は終了です。Docker で MySQL をデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker環境でMySQLを実行し、Binlogを有効にしてマスタースレーブ同期を構成する方法
  • DockerとCanalをベースにMySQLのリアルタイム増分データ転送を実現
  • Docker で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード
  • DockerでMySQLマスタースレーブ環境を構築する方法の詳しい説明
  • Docker はデータ量の問題を解決するために MySQL の binlog ログを開きます

<<:  MySQL COUNT関数の使用と最適化

>>:  Webデザインの経験:ナビゲーションシステムをシンプルにする

推薦する

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

Javascriptでオブザーバーモードを実装する方法を教えます

目次オブザーバーパターンとは何ですか?シナリオシミュレーションコードの実装コードのリファクタリング要...

Vueはカルーセルのフレームレート再生を実装します

この記事の例では、カルーセルのフレームレート再生を実現するためのVueの具体的なコードを参考までに共...

CocosCreatorでクールなレーダーチャートを描く方法

目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...

Vue プロジェクトでブラウザ キャッシュ設定を無効にする例

プロジェクトをリリースするときに、キャッシュをクリーンアップする必要があるという問題に遭遇することが...

MySQL ディープ ページング (数千万のデータを素早くページ分割する方法)

目次序文場合最適化まとめ序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク ...

DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明

序文MySQL データのインポートとエクスポートは mysqldump コマンドで解決できることは誰...

Dockerがプライベート倉庫Harborを構築する手順

港Harborは、エンタープライズレベルのプライベートDockerイメージリポジトリを構築するための...

Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)

解決すべき問題主にコンポーネント間のクロスレベル通信用なぜディスパッチとブロードキャストを自分で実装...

Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

1. マックヴラン前回のブログ投稿で紹介した Docker コンテナのホスト間通信を実現するための ...

webpack-dev-server のコア概念とケースの詳細な説明

webpack-dev-server コアコンセプトWebpack の ContentBase と ...

LinuxベースのSelenium環境を構成し、操作を実装する

1. Linux で Selenium を使用する1. Chromeをインストールする次のコマンドを...

MySQLの認可コマンド grant の使い方のまとめ

MySQL 認証コマンド grant の使用方法:この記事の例は MySQL 5.0 以降で実行され...

userdel コマンドを使用して Linux ユーザーを削除する方法の詳細なチュートリアル

セルデルとは何かuserdel は、ユーザーを削除するための低レベルのツールです。 Debian で...