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

推薦する

Linux lessコマンド例の詳細な説明

ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...

Ubuntu 20.04 ベスト設定ガイド (初心者向け)

1. システム構成1. sudoパスワードをオフにするsudo コマンドを使用するたびにパスワード...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

XHTML CSS ページをプリンタ ページに変換する

<br />これまで、Web ページのプリンタ対応バージョンを作成するには、印刷したとき...

MySQLにおける(JOIN/ORDER BY)文のクエリ処理と最適化方法

EXPLAIN ステートメントは、MySQL クエリ ステートメント プロセスと EXPLAIN ス...

MySql 5.7.21 無料インストール バージョンの構成方法 (Win10 の場合)

1.インストールしたい場所に解凍し、my.iniファイルを作成します。 my.iniの内容は次のと...

Vue はユーザーのログイン状態を維持します (さまざまなトークン保存方法)

目次クッキーの設定方法クッキーのデメリット: LocalStorage と SessionStora...

ECMAscript の新機能の紹介

目次1. 関数パラメータのデフォルト値1.1 関数パラメータのデフォルト値の指定1.2 分離割り当て...

npmとcnpmを混在させる際の落とし穴の詳細な説明

目次原因理由NPM の紹介: CNPM の紹介:より良い方法方法の改善npm と cnpm を一緒に...

DockerコンテナはホストのMySQL操作にアクセスする

背景:インターフェイスを提供する Flask プロジェクトがあり、これは Docker コンテナを使...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...

Firefox の CSS を使用してデータを盗む

0x00 はじめに数か月前、Firefox に脆弱性 (CVE-2019-17016) があること...