1. 概要1. 原則
マスタースレーブフローチャート 2. 実装マスターライブラリ: 192.168.3.13:3310 スレーブライブラリ: 192.168.3.14:3310 2. マスターライブラリを作成する サーバー192.168.3.13を入力します 1. イメージをインストールする docker プル mysql:8.0.26 2. 新しいディレクトリを作成する mkdir -p /home/apps/mysql-master/{config,log,data} 3. 作成して開始する docker run -d --name mysql-master \ --restart=常に\ --privileged=true \ -p 3310:3306 \ -v /home/apps/mysql-master/config:/etc/mysql/conf.d \ -v /home/apps/mysql-master/log:/var/log/mysql \ -v /home/apps/mysql-master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ マイスク:8.0.26 4. マスター基本設定の追加/変更 vim /home/apps/mysql-master/config/my.cnf 次のコンテンツを追加します [クライアント] デフォルトの文字セット=utf8 [mysql] デフォルトの文字セット=utf8 [mysqld] init_connect = '照合接続を utf8_unicode_ci に設定' init_connect='名前をutf8に設定' 文字セットサーバー=utf8 照合サーバー=utf8_unicode_ci 文字セットクライアントハンドシェイクをスキップする 名前解決をスキップ 3. スレーブインスタンスを作成するサーバー192.168.3.14を入力します 1. 上記の操作と同じ # ディレクトリを作成 mkdir -p /home/apps/mysql-slave-01/{config,log,data} # コンテナを起動します docker run -d --name mysql-slave-01 \ --restart=常に\ --privileged=true \ -p 3310:3306 \ -v /home/apps/mysql-slave-01/config:/etc/mysql/conf.d \ -v /home/apps/mysql-slave-01/log:/var/log/mysql \ -v /home/apps/mysql-slave-01/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ マイスク:8.0.26 # スレーブの基本設定を変更する vim /home/apps/mysql-slave-01/config/my.cnf # 次のコンテンツを追加します [client] デフォルトの文字セット=utf8 [mysql] デフォルトの文字セット=utf8 [mysqld] init_connect = '照合接続を utf8_unicode_ci に設定' init_connect='名前をutf8に設定' 文字セットサーバー=utf8 照合サーバー=utf8_unicode_ci 文字セットクライアントハンドシェイクをスキップする 名前解決をスキップ 4. マスタースレーブ構成1. マスター構成を追加する vim /home/apps/mysql-master/config/my.cnf サーバーID=1 # バイナリログを有効にする log-bin=mysql-bin 読み取り専用=0 # 同期する必要があるデータベース binlog-do-db=rapid-cloud binlog-do-db=ラピッドクラウドテスト # 無視するデータベース replicate-ignore-db=mysql 複製無視db=sys 複製無視DB=情報スキーマ レプリケート-無視-db=パフォーマンススキーマ 2. コンテナを再起動する docker で mysql-master を再起動する 3. スレーブ構成を追加する vim /home/apps/mysql-slave-01/config/my.cnf サーバーID=2 ログ bin = mysql bin 読み取り専用=1 binlog-do-db=ラピッドクラウド binlog-do-db=ラピッドクラウドテスト 複製無視DB=mysql 複製無視db=sys 複製無視DB=情報スキーマ レプリケート-無視-db=パフォーマンススキーマ 4. コンテナを再起動する docker で mysql-slave-01 を再起動します。 5. ユーザーを同期するためのアカウントを追加する # コンテナに入る docker exec -it mysql-master /bin/bash # メインのmysqlデータベースに入る mysql -u root -p # リモートアクセスをルートに許可します (マスター/スレーブとは関係なく、mysql へのリモート接続を容易にするためだけです) # リモートを認証する ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 権限をフラッシュします。 # バックアップ ユーザーの作成 # 最初に新しいユーザーを作成する必要があります create user 'backup'@'%' identifiered by '123456'; # 実行権限は、*.* のすべての権限を 'backup'@'%' に付与します。 # 権限をフラッシュします。 # リモートを承認 ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 権限をフラッシュします。 # マスター データベースのステータスを表示します。show master status; 6. スレーブデータベースでマスターデータベース接続を設定する # コンテナに入る docker exec -it mysql-slave-01 /bin/bash # メインのmysqlデータベースに入る mysql -u root -p マスターをmaster_host='192.168.3.13'、master_user='backup'、master_password='123456'、master_log_file='mysql-bin.000001'、master_log_pos=0、master_port=3310に変更します。 7.スレーブ同期を開始する まず、テーブル構造とデータを含むマスターデータベースのデータをスレーブデータベースにコピーします。 メインライブラリのバイナリログをクリアして、位置が0から始まるようにします。 マスターログを 'mysql-bin.000001' に消去します。 同期をオンにする # 同期を開始します。start slave; # 同期を停止します # スレーブを停止します; # 同期ステータスを確認します show slave status\G; 8. トラブルシューティング マスタースレーブ同期が達成できない場合は、次の点を確認してください。 要約:マスター データベースとスレーブ データベースは、構成ファイル内で、同期する必要があるデータベースと無視するデータベースを宣言します。また、サーバー ID は、マスター データベースが自身のデータを同期するために特定のアカウントとパスワードを承認しているものと同じにすることはできません。スレーブ データベースはこのアカウントとパスワードを使用してマスター データベースに接続し、データを同期します。 5. 参考https://www.cnblogs.com/heian99/p/12104189.html https://blog.csdn.net/lilygg/article/details/98187015 バイナリログのクリア: https://www.cnblogs.com/kiko2014551511/p/11532426.html これで、Docker で MySQL マスタースレーブ レプリケーションを実装するためのサンプル コードに関するこの記事は終了です。MySQL マスタースレーブ レプリケーションに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 数千万データを持つMySQLテーブルを最適化する実践記録
>>: CSS マスクを使用して PNG 画像のサイズを大幅に最適化します (推奨)
まず、公式ウェブサイト http://dev.mysql.com/downloads/mysql/ ...
公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...
目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...
目次1 コンテナクラウドとは何ですか? 2 Dockerの紹介3 dockerを使ってMySQLをイ...
1.リスナーを見る時計のご紹介 'vue' から { ref, reactive, ...
MIME タイプとは何ですか? 1. まず、ブラウザがコンテンツを処理する方法を理解する必要がありま...
目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...
目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...
どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...
Nginxのproxy_cacheを使用してキャッシュサーバーを構築する1: ngx_cache_...
序文この実験では、デバッグ用に2つの仮想マシン(CentOs6とRed Hat 6)を準備します。 ...
序文データベースは常に私の弱点でした。自分の経験 (python+sqlalchemy) を組み合わ...
目次1. ジョブ実行のフォールトトレランス1.1 タスクフェイルオーバー戦略1.2 ジョブ再開戦略2...
この記事では、参考までに、シンプルな広告ウィンドウを実装するためのjsの具体的なコードを紹介します。...
カスタムイメージに関するよくある質問データディスクを表示するにはどうすればいいですか? df コマン...