Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順

Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順

1. CentOS 7.9 20にDockerをインストールする

1. yum-utilsツールをインストールする

yum をインストール -y yum-utils

2. Dockerの依存関係ソースを設定する

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

注意: CentOS が yum コマンドを使用して直接インストールする Docker バージョンは 1.13.1 です。これは、古いバージョンの Docker の最後のバージョンであるため、新しいバージョンの Docker-CE (Community Edition) をインストールするにはリポジトリを構成する必要があります。 Docker-EE(エンタープライズエディション)は有料ですが、読者は自分で理解することができます。ここではCEコミュニティエディションを使用します。

3. Dockerをインストールする

yum -y で docker-ce をインストールします

4. インストールされているバージョンを確認する

ドッカー -v
docker バージョン

画像.png

5. サポート設定のバージョンを確認する

yum list インストール済み | grep docker 

画像.png

6. MySQL8イメージを取得する

docker プル mysql:8

注: mysql:5.7 は MySQL バージョンが 5.7 であることを意味します。

Dockerイメージを表示

Docker イメージ

画像.png

2. MySQL クラスターをデプロイする (マスター 1 つとスレーブ 2 つ)

1. マスタースレーブMySQL構成とデータファイル保存ディレクトリを作成する

# マスターサービスの設定ディレクトリとデータディレクトリを作成します mkdir -p /usr/local/mysqlData/master/cnf
mkdir -p /usr/local/mysqlData/master/data

# スレーブサーバー1の設定ディレクトリとデータディレクトリを作成します。mkdir -p /usr/local/mysqlData/slave/cnf
mkdir -p /usr/local/mysqlData/slave/data

# スレーブサーバー2の設定ディレクトリとデータディレクトリを作成します mkdir -p /usr/local/mysqlData/slave2/cnf
mkdir -p /usr/local/mysqlData/slave2/data

スレーブ サーバー構成を 2 つ作成する理由は、MySQL で構成されたサーバー ID を繰り返すことができないためです。

画像.png

2. メインサーバーの設定ファイルを設定する

vim /usr/local/mysqlData/master/cnf/mysql.cnf

設定ファイルは次のとおりです

[mysqld]
## server_id を設定します。一意である必要があることに注意してください。server-id=1
## バイナリログを有効にする
ログ bin = mysql bin
## binlog キャッシュ binlog_cache_size=1M
## binlog 形式 (混合、ステートメント、行、デフォルトの形式はステートメント)
binlog_format=混合
##文字エンコードをutf8mb4に設定する
文字セットサーバー = utf8mb4
照合サーバー = utf8mb4_unicode_ci
init_connect = '名前をutf8mb4に設定'
[クライアント]
デフォルトの文字セット = utf8mb4
[mysql]
デフォルトの文字セット = utf8mb4

3. サーバーから設定ファイルを設定する

# スレーブサーバー 1 番 vim /usr/local/mysqlData/slave/cnf/mysql.cnf
# スレーブサーバー2 vim /usr/local/mysqlData/slave2/cnf/mysql.cnf

設定ファイルは以下のとおりです(1番のサーバIDは2に設定、2番のサーバIDは3に設定、重複は不要)

[mysqld]
## server_id を設定します。一意である必要があることに注意してください。server-id=2
## バイナリログを有効にする
ログ bin = mysql スレーブ bin
## relay_log 設定 リレーログ relay_log=edu-mysql-relay-bin
## 関数またはストアドプロシージャを同期する必要がある場合は、log_bin_trust_function_creators=true
## binlog キャッシュ binlog_cache_size=1M
## binlog 形式 (混合、ステートメント、行、デフォルトの形式はステートメント)
binlog_format=混合
##文字エンコードをutf8mb4に設定する
文字セットサーバー = utf8mb4
照合サーバー = utf8mb4_unicode_ci
init_connect = '名前をutf8mb4に設定'
スレーブスキップエラー=1062
[クライアント]
デフォルトの文字セット = utf8mb4
[mysql]
デフォルトの文字セット = utf8mb4

4. マスタースレーブMySQLミラーを作成する

# マスターサーバーのインスタンス化 docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 

# スレーブサーバー 1 をインスタンス化します。 docker run -itd -p 3308:3306 --name slaver -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 

# スレーブサーバー 2 をインスタンス化します。 docker run -itd -p 3309:3306 --name slaver2 -v /usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8

パラメータの説明

-p はコンテナによって公開されるポート、ホスト(物理マシン)ポートを指定します: docker インスタンス ポート
-p 3307:3306 は物理マシンのポート 3307 をインスタンスのポート 3306 にマッピングします。

-v はストレージボリュームをコンテナにマウントし、コンテナ内のディレクトリにマウントします。
-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d は、新しく作成された構成フォルダをインスタンスの /etc/mysql/conf.d にマッピングします。
-v /usr/local/mysqlData/master/data:/var/lib/mysql データフォルダのマッピング

-eはコンテナ内で使用できる環境変数を指定します
-e MYSQL_ROOT_PASSWORD=123456 MySQLルートアカウントのパスワードを123456に設定する

5. 作成されたインスタンスを表示する

ドッカーps -a 

画像.png

6. MySQL接続ユーザーを作成する

# ユーザー reader を作成し、reader にパスワードを設定します
'reader' によって識別されるユーザー reader を作成します。
# リーダー同期権限を付与する GRANT REPLICATION SLAVE ON *.* to 'reader'@'%';
権限のフラッシュ;

注: 他のユーザーの場合、リモート接続設定は自己設定されます

7. メインサーバーの接続情報を取得する

#MySQL 接続情報 SHOW MASTER STATUS;

#docker でマスターインスタンスのアドレスを取得するために新しい接続を開きます。inspect --format='{{.NetworkSettings.IPAddress}}' master

画像.png

スレーブサーバーはマスターサーバーに接続します(両方のスレーブサーバーが次の操作を実行します)

# 接続パラメータを設定します。master を master_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259 に変更します。
# 同期を開始します。start slave;
# 成功したかどうかを確認します show slave status\G

# 両方とも「はい」の場合、成功を意味します。
# スレーブIO実行中: はい
# スレーブSQL実行中: はい

# 失敗した場合は、接続を停止し、他のアカウントのパスワード、アドレス、POS、およびその他のパラメータを確認する必要があります。# 接続を停止します。一度成功した場合は、stop slave コマンドを使用する必要はありません。

画像.png

3. 結果

メインサーバーはコマンドを実行する

スレーブホストを表示します。 

画像.png

2 つのスレーブ サーバーの ID とポートは、マスター サーバーから照会できます。 MySQL の展開を完了します。

これで、MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の Docker デプロイメントの実装手順に関するこの記事は終了です。MySQL8 クラスターの Docker デプロイメントに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • .Net6 プロジェクトを Docker にデプロイする
  • Docker を使用して Microsoft Sql Server を展開するための詳細な手順
  • Docker で MySQL をデプロイする詳細なプロセス (Docker でデプロイされる一般的なアプリケーション)
  • Linux システム Docker への ASP.NET Core アプリケーションのデプロイのプロセス分析
  • Docker に MySQL をデプロイする例
  • Linux CentOS の Docker に Asp.Net Core (.Net6) をデプロイする
  • docker を使用して Asp.net コア アプリケーションをデプロイするための完全な手順
  • DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

<<:  CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

>>:  ウェブデザインのためのオンライン開発ツール10選の紹介

推薦する

Win7 の VMware 仮想マシンに Linux7.2 をインストールするインターネット アクセス構成チュートリアル

参考までに、win7システム上のVMware仮想マシンにlinux7.2インターネットアクセス構成を...

MySQL ジョイントインデックス(複合インデックス)の実装

共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...

自分のブログを構築しながら学んだこと

<br />ブログを始めて 1 年、私はブログの内外で多くのことを個人的に学びました。ま...

Vue でシンプルな無限ループスクロールアニメーションを実装する例

この記事では主に、Vue でシンプルな無限ループスクロールアニメーションを実装し、みんなで共有する例...

ドラッグアンドドロップによる並べ替えの詳細を実現する js

目次1. はじめに2. 実装3. HTML ドラッグ アンド ドロップ API を使用しないのはなぜ...

モバイルブラウザが位置をサポートしない場合の解決策: 修正

具体的な方法は以下の通りです。 CSSコードコードをコピーコードは次のとおりです。 .wap_bot...

AngularJSループオブジェクトプロパティで動的列を実装するアイデアの詳細な説明

動的な列を実現するための Angularjs ループ オブジェクト プロパティ利点: オブジェクトを...

CentOS7 に YUM 経由で MySQL 5.7 をインストールする詳細な手順

1. インストールパッケージを保存する場所に移動しますcd /home/lnmp 2. MySQL ...

mysql8.0.11をインストールしてrootパスワードを変更し、navicat for mysqlに接続するアイデアの詳細な説明

1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...

JavaScript配列の組み込みメソッドの詳細な説明

目次1. Array.at() 2. Array.copyWithin() 3. 配列.entrie...

2018 年にリリースされる Apache Spark 2.4 の新機能は何ですか?

この記事は、2018 年 9 月 19 日に Adob​​e Systems Inc で開催された ...

HTML フォーム コンポーネントのサンプル コード

HTML フォームは、さまざまな種類のユーザー入力を収集するために使用されます。次のコードは、HTM...

HTMLの基礎知識:ウェブページの基礎知識

HTML は Hypertext Markup Language の略です。これは、実際のプレゼンテ...

Mysql5.7 サービスを開始できません。グラフィカル ソリューション チュートリアル

p>「サービス」で手動で起動すると、 コンソールから起動します: 次に、...\MySQL S...

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード /*-------------------------------- 2つ以上のフィール...