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 を使い始めるための詳細なプロセス
目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...
目次導入使用シナリオソースコード分析要約する導入Vue は、コンポーネントをステートレスかつインスタ...
目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...
目次1. typeof演算子2. インスタンスオブ演算子3. typeof と instanceof...
最近、MySQL を使っています。Linux での mysql-installation という記事...
プロジェクトで発生した不規則な絵画壁のレイアウト問題は、次のように分析されます。 1.img dis...
目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...
この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...
このデータベースをダウンロードするには、多くの時間とトラフィックがかかります。踏み込んだ落とし穴で時...
1. 依存パッケージをインストールする yum -y インストール gcc-c++ ncurses-...
/******************** * キャラクターデバイスドライバー**********...
目次1. クロスドメインフィルタ CorsFilter 1.1 設定例1.2 パラメータの説明2. ...
nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー、メール プ...
hk_test(ユーザー名、パスワード) に値を挿入 ('qmf1', '...
まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...