Mysql マスタースレーブ同期構成構成の準備:
1. 2つのmysqlをインストールする
[root@localhost /]# mkdir -p /opt/docker/mysql1/conf/ [root@localhost /]# mkdir -p /opt/docker/mysql1/logs/ [root@localhost /]# mkdir -p /opt/docker/mysql1/data/
[root@localhost /]# docker run -d -p 6894:3306 --name mysql1 \ ディレクトリは/etc/mysql/ です。 -v /opt/docker/mysql1/logs:/logs \ -v /opt/docker/mysql1/data:/var/lib/mysql \ --privileged=true \ -e MYSQL_ROOT_PASSWORD=qtykGhC29eP4Smpmysql:5.7
[root@localhost docker]# cp -r /opt/docker/mysql1/ /opt/docker/mysql2/
[root@localhost docker]# rm -f /opt/docker/mysql2/data/auto.cnf
[root@localhost docker]# docker run -d -p 6895:3306 --name mysql2 \ ディレクトリは/etc/mysql/ です。 -v /opt/docker/mysql2/logs:/logs \ -v /opt/docker/mysql2/data:/var/lib/mysql \ --privileged=true \ -e MYSQL_ROOT_PASSWORD=qtykGhC29eP4Smpmysql:5.7 2. MySQL設定ファイルを書く
[root@localhost docker]# vim /opt/docker/mysql1/conf/my.cnf
[mysqld] # マスターデータベースの構成 server-id=1 # サービス ID の一意性 log-bin=mysql1-log # バイナリログを有効にする binlog-format=ROW # ログモード replicate-do-db=db_docker # 複製するデータの名前 # replicate-ignore-db=db_docker # 複製する必要のないデータの名前
[root@localhost docker]# vim /opt/docker/mysql2/conf/my.cnf
[mysqld] # ライブラリから設定 server-id=2 # サービス ID の一意性 log-bin=mysql2-log # バイナリ ログを有効にする binlog-format=ROW # ログ モード binlog-do-db=db_docker # コピーするデータの名前 # binlog-ignore-db=db_docker # コピーする必要のないデータの名前
[root@localhost docker]# docker を再起動してmysql1 [root@localhost docker]# docker を再起動してmysql2を実行します 3. データを初期化する
-- データベースを作成します CREATE DATABASE `db_docker`; db_docker を使用します。 -- テーブルを作成する CREATE TABLE `t_docker` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) デフォルト NULL, 主キー ( `id` ) ) エンジン = INNODB AUTO_INCREMENT = 0 デフォルト文字セット = utf8; メインライブラリのバイナリログを表示します。
mysql> マスターステータスを表示します。 +------------------+----------+--------------+------------------+------------------+ | ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+------------------+ | mysql-bin.000001 | 2223 | | | | +------------------+----------+--------------+------------------+------------------+ スレーブバイナリログを構成する
マスターを変更 MASTER_HOST="192.168.101.59", # ホストアドレス メインサーバーのIP Master_Port=6894、# ポート MASTER_USER="root", # アカウント MASTER_PASSWORD="qtykGhC29eP4Smp", # パスワード MASTER_LOG_FILE="mysql-bin.000001", # メインライブラリバイナリファイル名は実際の状況に応じて記入されます MASTER_LOG_POS=377; # メインライブラリバイナリファイルの位置は実際の状況に応じて記入されます
mysql>スレーブを起動します。 スレーブ ライブラリ スレッドの基本パラメータのステータス情報。 MySQL 8.0.22 以降では、非推奨となった SHOW SLAVE STATUS の代わりに SHOW REPLICA STATUS を使用してください。 MySQL 8.0.22 より前のバージョンでは、 SHOW SLAVE STATUS を使用します。このステートメントには、 REPLICATION CLIENT 権限 (または非推奨の SUPER 権限) が必要です。
mysql> スレーブステータスを表示 \G; ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 192.168.101.59 マスターユーザー: ルート マスターポート: 6894 接続再試行: 60 マスターログファイル:mysql-bin.000001 読み取りマスターログ位置: 2223 リレー ログ ファイル: 98394ee2fb48-relay-bin.000004 リレーログ位置: 320 リレーマスターログファイル: mysql-bin.000001 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 2223 リレーログスペース: 534 Until_Condition: なし ログファイルまで: ログ位置まで: 0 マスターSSL許可: いいえ マスターSSLCAファイル: マスターSSLCAパス: マスターSSL証明書: マスターSSL暗号: マスターSSLキー: マスターより遅れている秒数: 0 Master_SSL_Verify_Server_Cert: いいえ 最終IOエラー番号: 0 最後のIOエラー: 最終SQLエラー番号: 0 最後のSQLエラー: Replicate_Ignore_Server_Ids: マスターサーバーID: 1 マスター_UUID: aa58ab20-f500-11eb-aa65-0242ac110002 マスター情報ファイル: /var/lib/mysql/master.info SQL_遅延: 0 SQL_残り遅延: NULL Slave_SQL_Running_State: スレーブはすべてのリレーログを読み取りました。さらに更新を待機しています。 マスター再試行回数: 86400 マスターバインド: 最終IOエラータイムスタンプ: 最終SQLエラータイムスタンプ: マスターSSL証明書: マスターSSLCrlパス: 取得済み_Gtid_Set: 実行されたGtidセット: 自動位置: 0 Replicate_Rewrite_DB: チャンネル名: マスター TLS バージョン: 4. その他のMySQL関連コマンド
mysql>読み取りロック付きのテーブルをフラッシュします。
mysql>テーブルのロックを解除します。
mysql> スレーブを停止します。
mysql> スレーブをリセットします。 MySQL ノート
mysql コンテナ: コンテナに入る docker exec -it mysql2 /bin/sh #mysql2 コンテナ名はコンテナ ID にもできます mysqlにログイン mysql -u ルート -pqtykGhC29eP4Smp mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは9です サーバーバージョン: 5.7.35-log MySQL コミュニティサーバー (GPL) Copyright (c) 2000、2021、Oracle およびその関連会社。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 マイSQL> my.cnf 設定の説明 [mysqld] # メイン データベース構成 # 一意のサーバー ID を指定します。0 にすることもできますが、サーバーによって拒否されるため、有効な値は 1 ~ 4294967295 です。デフォルト値 1 # 公式サイト https://dev.mysql.com/doc/refman/5.7/en/replication-options.html サーバーID=1 # バイナリ ログを有効にします。バイナリ ファイル名はパスにすることができます (例: /logs/mysql/log)。ただし、ディレクトリ ファイルに権限を付与する必要があります。付与しないと、MySQL に書き込み権限がないため、エラーが発生します。 ログ bin = mysql1 ログ # ログ記録モードは 3 つあります # STATEMENT では、ログ記録はステートメントベースになります。 # ROW は行ベースでログ記録を行います。これがデフォルト設定です。 # MIXED を指定すると、ログ記録に混合形式が使用されます。最初の 2 つのモードの間# 公式ウェブサイト https://dev.mysql.com/doc/refman/5.7/en/binary-log-setting.html binlog 形式 = ROW # コピーするデータベースの名前。複数のデータベースを指定するには、このオプションの複数のインスタンスを使用する必要があります。 # データベース名にはカンマを含めることができるため、カンマ区切りのリストを指定すると、そのリストは単一のデータベースの名前として扱われます。 # 複数のインスタンス: # レプリケートするdb=db_docker1 # レプリケートするdb = db_docker2 レプリケートするdb=db_docker #複製する必要のないデータ名。上記と同じ設定 # replicate-ignore-db=db_docker #複製する必要のないデータ名 [mysqld] # スレーブデータベースの構成は上記と同じです。 server-id=2 # サービス ID の一意性 log-bin=mysql2-log # バイナリログを開く binlog-format=ROW # ログモード binlog-do-db=db_docker # コピーするデータの名前 # binlog-ignore-db=db_docker # コピーする必要のないデータの名前 auth.cnf ファイル ファイル内容サーバUUID
[自動] サーバーUUID=aa58ab20-f500-11eb-aa65-0242ac110002
致命的なエラー: マスターとスレーブの MySQL サーバー UUID が同じであるため、スレーブ I/O スレッドが停止します。レプリケーションが機能するには、これらの UUID が異なる必要があります。 公式サイトのバイナリログ設定: https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html MySQL マスタースレーブ同期設定の詳細に関するこの記事はこれで終わりです。MySQL マスタースレーブ同期設定の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: docker compose helloworld を使い始めるための詳細なプロセス
ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...
目次導入説明名前の競合私有財産要約する導入シンボル変数を作成する最も簡単な方法は、Symbol() ...
1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...
知らせ! ! ! uid が (a,b,c,null) に含まれないユーザーから * を選択します。...
拡張版です。質問とSQL文は以下の通りです。ユーザー テーブルを作成し、id、name、gender...
最近プロジェクトが中断され、RageFrame の研究は一時的に終了しました。この記事では、シングル...
この記事の例では、参考までに簡単な計算機を実装するためのJavaScriptの具体的なコードを共有し...
目次01 sql_slave_skip_counter パラメータ02 スレーブスキップエラーパラメ...
コード:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC &...
1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...
数日前、友人と Node.js の epoll とリクエスト処理に関する知識を交換しました。今日は、...
目次js ディープコピーデータ保存方法浅いコピー/深いコピーとは何か一般的なディープコピーの実装1....
必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...
目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...
1. setUp関数の最初のパラメータpropsセットアップ(プロパティ、コンテキスト){}最初のパ...