MySQLデュアルマスターを設定する方法
まえがき
特徴: デュアルマスター構成では、2 つの mysql ノードが互いのマスター ノードとスレーブ ノードになります。ノード A とノード B はお互いのマスター ノードです。
mysql をインストールする手順をスキップします
1. Mysql 構成ファイル
(1)ノード A 構成
# 设置server-id,两节点必须不一样 server-id = 100 # 开启bin_log,模式为ROW,允许最大日志为1G log_bin = mysql-bin binlog_format = ROW max_binlog_size = 1024M # mysql5.7的版本不需要配置log-slave-updates=1 # log-slave-updates = 1 # 实现数据库宕机恢复后,自动同步缺少的数据 relay_log = mysql-relay-bin # 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,... auto_increment_offset = 2 auto_increment_increment = 2 # 开启gtid gtid_mode = ON enforce_gtid_consistency = 1 # 忽略不需要同步的schema replicate-ignore-db = mysql replicate-ignore-db = information_schema replicate-ignore-db = performance_schema replicate-ignore-db = sys
(2)ノード B 構成
ノード A と異なる構成のみがリストされています
# 设置server-id,两节点必须不一样 server-id = 200 # 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,... auto_increment_offset = 1 auto_increment_increment = 2
2. ノード A をノード B のマスターとして構成します (マスター/スレーブ モード)
ノード A がマスターであり、ノード B ですは奴隷です。
(1) ノードAにログインし、スレーブ(ノードB)で使用するアカウントを作成します。
# 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100, grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100'; flush privileges;
(2) ノードAのマスター情報を確認します
下図に示すように、ノードAのbin_logログはmysql-bin.000001で、場所は154
です。# 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用! reset master; # 查看master信息 show master status; +------------------+----------+--------------+------------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------------------------------------+ | mysql-bin.000001 | 154 | | | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5 | +------------------+----------+--------------+------------------+---------------------------------------------+
(3) ノードBにログインし、ノードBのマスタをノードA
# 停止节点B上的slave stop slave; # 将节点B的master设为节点A,以下的配置信息均表示节点A # MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息 CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3307, MASTER_USER='repl_user', MASTER_PASSWORD='slave@100', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; # 开启节点B上的slave start slave;
に設定します。 (4) ノードBのスレーブが正常に動作するか確認します。返された結果で Slave_IO_Running と Slave_SQL_Running の両方が YES の場合、成功を示します。 「NO」または「接続中」の場合は、mysql データ ディレクトリ内の .err で終わるログ ファイルを確認して、[ERROR] レベルのログを見つけてください。通常、初期構成の問題は、主に my.ini 構成または同期アカウントの作成の問題によって発生します。
# 在节点B中查看slave状态 show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: repl_user Master_Port: 3307 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2207 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 1143 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ......
(5) スレーブ構成が異常な場合は、次のステートメントを使用してリセットできます
reset slave all;
3. この時点でデュアルマスター構成を完了します
、ノード A はノード B とのマスター/スレーブ モードを正常に構成しました。つまり、ノード A はノード B のマスターになります。次に、ステップ 3 の操作を繰り返しますが、ノード A と B の操作を逆にします。つまり、ノード B で同期アカウントを作成し、マスター情報を表示し、ノード B をノード A のマスターとして設定します。構成が完了したら、ノード A のスレーブ ステータスもチェックして、Slave_IO_Running と Slave_SQL_Running が両方とも YES であるかどうかを確認します。
4. テスト
ノード A でスキーマ、テーブル、データを追加または削除し、ノード B で適切な同期が行われているかどうかを確認します。
ノード A とノード B に追加された自動インクリメント主キー データが構成ファイルと一致するかどうかをテストします。 1 つは奇数、もう 1 つは偶数です。データを追加または削除するときに、主キーに競合が発生しますか?
5. 同期ライブラリまたはテーブルの制御
my.iniの変更で実現
(1) マスター側の制御
binlog-do- db binlog ログ記録用データベース (複数のデータベースの場合、分離)
Binlog-ignore-db binlog ログ内のデータベースを無視します (複数のデータベースの場合、分離)
binlog ログに記録されたテーブルのみbinlog 、スレーブデータベースと同期可能
# binlog中记录这两个表 binlog-do-db=db_1,db_2 # binlog中不记录这两个表 binlog-ignore-db=db_3,db_4
(2)スレーブ側の制御
# ' ' ' s ' s ' s ' s ‐to ‐ ‐‐‐ wild-ignore-table 情報はありますが、同期は行われません。replicate-do-db レプリケーションが必要なデータベースを設定
replicate -ignore-db 設定 無視する必要があるデータベースをレプリケートします
replicate-do-table レプリケートする必要があるテーブルを設定します
replicate-ignore-table 無視する必要があるレプリケート テーブルを設定します
replicate- wild-do-table replication-do-table と同じ 機能は同じです。ワイルドカードを使用できます。
# 执行同步的库 replicate-do-db=db_1 replicate-do-db=db_2 # 忽略同步的库 replicate-ignore-db=db_3 # 执行同步的表 replicate-do-table=db_1.table_a replicate-do-table=db_2.table_b # 忽略同步的表 replicate-ignore-table=db_2.table_c # 只复制哪个库的哪个表 replicate-wild-do-table=db_4.% # 忽略哪个库的哪个表 replicate-wild-ignore-table=mysql.%
rree
以上がMySQLデュアルマスターを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ビッグ データ構造の処理スキル: チャンキング: データ セットを分割してチャンクに処理し、メモリ消費を削減します。ジェネレーター: データ セット全体をロードせずにデータ項目を 1 つずつ生成します。無制限のデータ セットに適しています。ストリーミング: ファイルやクエリ結果を 1 行ずつ読み取ります。大きなファイルやリモート データに適しています。外部ストレージ: 非常に大規模なデータ セットの場合は、データをデータベースまたは NoSQL に保存します。

MySQL クエリのパフォーマンスは、検索時間を線形の複雑さから対数の複雑さまで短縮するインデックスを構築することで最適化できます。 PreparedStatement を使用して SQL インジェクションを防止し、クエリのパフォーマンスを向上させます。クエリ結果を制限し、サーバーによって処理されるデータ量を削減します。適切な結合タイプの使用、インデックスの作成、サブクエリの使用の検討など、結合クエリを最適化します。クエリを分析してボトルネックを特定し、キャッシュを使用してデータベースの負荷を軽減し、オーバーヘッドを最小限に抑えます。

PHP で MySQL データベースをバックアップおよび復元するには、次の手順を実行します。 データベースをバックアップします。 mysqldump コマンドを使用して、データベースを SQL ファイルにダンプします。データベースの復元: mysql コマンドを使用して、SQL ファイルからデータベースを復元します。

MySQLテーブルにデータを挿入するにはどうすればよいですか?データベースに接続する: mysqli を使用してデータベースへの接続を確立します。 SQL クエリを準備します。挿入する列と値を指定する INSERT ステートメントを作成します。クエリの実行: query() メソッドを使用して挿入クエリを実行します。成功すると、確認メッセージが出力されます。

PHP で MySQL ストアド プロシージャを使用するには: PDO または MySQLi 拡張機能を使用して、MySQL データベースに接続します。ストアド プロシージャを呼び出すステートメントを準備します。ストアド プロシージャを実行します。結果セットを処理します (ストアド プロシージャが結果を返す場合)。データベース接続を閉じます。

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

PHP を使用して MySQL テーブルを作成するには、次の手順が必要です。 データベースに接続します。データベースが存在しない場合は作成します。データベースを選択します。テーブルを作成します。クエリを実行します。接続を閉じます。

Oracle データベースと MySQL はどちらもリレーショナル モデルに基づいたデータベースですが、Oracle は互換性、スケーラビリティ、データ型、セキュリティの点で優れており、MySQL は速度と柔軟性に重点を置いており、小規模から中規模のデータ セットに適しています。 ① Oracle は幅広いデータ型を提供し、② 高度なセキュリティ機能を提供し、③ エンタープライズレベルのアプリケーションに適しています。① MySQL は NoSQL データ型をサポートし、② セキュリティ対策が少なく、③ 小規模から中規模のアプリケーションに適しています。
