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デザインの経験:ナビゲーションシステムをシンプルにする

推薦する

JavaScript を使用して簡単なアルゴリズムを実行する方法

目次質問1件2つの方法3 実験結果と考察質問1件ご存知のとおり、 Pycharm 、 IDLE 、 ...

Ubuntu での mysql のインストールと使用 (一般版)

Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

ダイナミックな波効果を実現するSVG+CSS3

ベクトル波 <svg viewBox="0 0 560 20" class...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...

カルーセルバナーの自動回転効果を実現する純粋な CSS

さっそくコードを見てみましょう * { マージン: 0; パディング: 0; } 。容器 { マージ...

Navicat を仮想マシン MySQL に接続する際によくあるエラーと解決策

質問1 解決するサービスを開始します: service mysqld start; /sbin/ip...

Navicatは機能ソリューション共有を作成できません

初めて MySQL FUNCTION を書いたとき、エラーが何度も発生しました。 Err] 1064...

Windows 上の MySQL バージョン 5.7 でエンコードを UTF-8 に変更する方法

序文MySQLの勉強を始めたばかりで、公式サイトから最新バージョン5.7.14をダウンロードしました...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

Linux で Nginx ロード バランシングを使用して複数の Tomcat を構成する方法

Linux に nginx と複数の tomcat をインストールする方法はここでは紹介しません。不...

Centos8でdockerがインストールできない問題の解決方法

問題 [root@zh ~]# [root@zh ~]# [root@zh ~]# yum -y d...

Nginx 502 Bad Gateway エラーの原因と解決策

Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思いま...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...