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

推薦する

Docker を使用して Django プロジェクトをデプロイする方法の例

また、Dockerを使用してDjangoプロジェクトをデプロイするのも非常に簡単です。とても良いです...

tinyMCEの使い方と体験の詳細な説明

tinyMCE の使用方法の詳細な説明初期化TinyMCE を初期化するときは、ページの HEAD ...

Vue+Element UI でサマリーポップアップウィンドウを実装するプロセス全体

シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...

Vueのv-onパラメータの問題についてお話しましょう

Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...

JS関数の継承について学ぶ記事

目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...

Linux tac コマンドの実装例

1. コマンドの紹介tac (cat の逆順) コマンドは、ファイルの内容を行単位で逆順に出力します...

JavaScript を使用して userAgent を通じていくつかの一般的なブラウザを判別する方法

序文通常、h5 ページを作成するときは、WeChat、QQ、Weibo などのエコシステム内でトラフ...

Windows 10 と MySQL 5.5 のインストールとインストールなしの使用の詳細なチュートリアル (画像とテキスト)

この記事では、Windows 10環境でのMySQL 5.5のインストールと使用方法を紹介します。リ...

WeChatミニプログラムでトークンの有効期限を処理する方法

目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...

MySQL IFNULL判定問題の解決方法

問題: mybatis によって返される null 型のデータが消え、フロントエンドの表示にエラーが...

Docker+nextcloudで個人用クラウドストレージシステムを構築

1. Dockerのインストールと起動 yum で epel-release をインストールします ...

インストールされていないバージョンの MySQL を使用する手順とパスワードを忘れた場合の解決策

最初のステップは、圧縮されたパッケージを対応するディスクに解凍することです。 2 番目の手順は、cm...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...

js で 0ms 遅延タイマーを実装するいくつかの方法

目次キューマイクロタスク非同期/待機メッセージチャネルやっと付録ここ二日間、「タイムリーな setT...

メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。

コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...