Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアップ方法として使用して、読み取りと書き込みの分離を実現し、データベースへの負荷を軽減できることです。大量のデータを実行する際の速度と効率を大幅に向上させるには、MySQL のマスター スレーブ レプリケーションに少なくとも 2 つの MySQL サービスが必要です。もちろん、MySQL サービスを異なるサーバーに分散することも、1 つのサーバーで複数のサービスを開始することもできます。これが MySQL マスタースレーブバックアップの原理です。具体的な同期構成プロセスを見てみましょう。

まず、私がテストした環境を見てみましょう。

CentOS 6.5 MySQL マスタースレーブ同期、MySQL バージョン 5.6.25

メインサーバー: centos6.5 IP:192.168.1.101

サーバーから: centos6.5 IP:192.168.1.102

1. メインサーバー関連の設定

1. 同期アカウントを作成し、サーバーアドレスを指定します

[root@localhost ~]mysql -uroot -p
mysql>mysqlを使用する
mysql> '12345678' で識別される 'testuser'@'192.168.1.102' に *.* 上のレプリケーション スレーブを許可します。
mysql>権限をフラッシュする #権限を更新する

承認されたユーザー testuser は、アドレス 192.168.1.102 からプライマリ サーバー 192.168.1.101 のデータベースにのみアクセスでき、データベースをバックアップする権限のみを持ちます。

2. /etc/my.cnf設定ファイルを変更する vi /etc/my.cnf

[mysqld] の下に次のパラメータを追加します。ファイルがすでに存在する場合は、追加する必要はありません。

サーバーID=1 
log-bin=mysql-bin #MySQLバイナリログシステムを起動します。
binlog-do-db=ourneeddb #同期するデータベース binlog-ignore-db=mysql #mysqlシステムデータベースを同期しません。同期したくない他のデータベースがある場合は、続けて追加します [root@localhost ~]/etc/init.d/mysqld restart #サービスを再起動します

3. マスター サーバーのマスター ステータスを確認します (ファイルと位置の項目に注意してください。スレーブ サーバーにはこれらの 2 つのパラメータが必要です)

mysql> マスターステータスを表示します。
+------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000012 | 120 | ourneeddb| mysql |
+------------------+----------+--------------+------------------+

4. データベースをエクスポートする

エクスポートする前にデータベースをロックする

読み取りロックでテーブルをフラッシュします。#データベースのエクスポート時にデータが書き込まれないようにするためのデータベース読み取り専用ロックコマンド

テーブルのロックを解除する; #Unlock

データベース構造とデータをエクスポートします: mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

ストアド プロシージャと関数をエクスポートします: mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

ヒント: -ntd はストアド プロシージャをエクスポートし、-R は関数をエクスポートします

2. スレーブサーバー関連の設定

1. /etc/my.cnf設定ファイルを変更する vi /etc/my.cnf

[mysqld] の下に次のパラメータを追加します。ファイルがすでに存在する場合は、追加する必要はありません。

server-id=2 #スレーブサーバIDを設定します。これはマスターサーバとは異なる必要があります

log-bin=mysql-bin #MySQLバイナリログシステムを起動します

replicate-do-db=ourneeddb #同期する必要があるデータベースの名前

replicate-ignore-db=mysql #mysqlシステムデータベースを同期しない

[root@localhost~ ]/etc/init.d/mysqld restart #サービスを再起動します

2. データベースをインポートする

インポートプロセスについてはここでは説明しません。

3. マスタースレーブ同期を構成する

[root@localhost~]mysql -uroot -p
mysql>mysqlを使用する 
mysql>スレーブを停止します。
mysql>マスターを
   マスターホスト='192.168.1.101',
   マスターユーザー='テストユーザー'、
   マスターパスワード='12345678',
   マスターログファイル='mysql-bin.000012',
   master_log_pos=120; #log_file と log_pos は、マスター状態におけるマスターサーバーのファイルと位置です。
mysql>スレーブを起動します。
mysql>スレーブステータスを表示\G;

************************** 1. 行 ****************************
Slave_IO_State: マスターがイベントを送信するのを待機中
マスターホスト: 192.168.1.101
マスターユーザー: testuser
マスターポート: 3306
接続再試行: 60
マスターログファイル:mysql-bin.000012
読み取りマスターログ位置: 120
リレーログファイル: orange-2-relay-bin.000003
リレーログ位置: 283
リレーマスターログファイル: mysql-bin.000012
スレーブIO実行中: はい
スレーブSQL実行中: はい
Replicate_Do_DB: オレンジ
レプリケート_無視_DB: mysql、テスト、情報スキーマ、パフォーマンススキーマ
テーブルの複製:
無視テーブルを複製:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
最終エラー番号: 0
最終エラー:
スキップカウンタ: 0
実行マスターログ位置: 120
リレーログスペース: 1320
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: 773d2987-6821-11e6-b9e0-00163f0004f9
マスター情報ファイル: /home/mysql/master.info
SQL_遅延: 0
SQL_残り遅延: NULL
Slave_SQL_Running_State: スレーブはすべてのリレー ログを読み取りました。スレーブ I/O スレッドがそれを更新するのを待機しています。
マスター再試行回数: 86400
マスターバインド:
最終IOエラータイムスタンプ:
最終SQLエラータイムスタンプ:
マスターSSL証明書:
マスターSSLCrlパス:
取得済み_Gtid_Set:
実行されたGtidセット:
自動位置: 0

Slave_IO_Running: Yes、Slave_SQL_Running: Yes は Yes である必要があり、Log_File と Log_Pos はマスター状態の File と Position と同じである必要があることに注意してください。

すべて正しければ、設定は成功です。

上記は、Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成についてまとめた内容のすべてです。お役に立てれば幸いです。

以下もご興味があるかもしれません:
  • PythonはMySQLの指定されたテーブルの増分データをClickhouseに同期するスクリプトを実装します
  • MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明
  • MySQL データベースにスクレイピー データを保存する 2 つの方法 (同期と非同期)
  • MySQL マスター/スレーブ データベース同期構成と一般的なエラー
  • KTLツールはMySQLからMySQLへのデータの同期方法を実現します
  • Python を使用して MySQL データを ElasticSearch に同期する方法のチュートリアル
  • MySQLデータベースのマスタースレーブ同期構成と読み取り書き込み分離
  • node.js を使用して MongoDB データを MySQL に同期する手順
  • PHPはSWOOLE拡張機能を使用してMySQLデータを同期します
  • Maxwell を使用して MySQL データをリアルタイムで同期する方法

<<:  vue.config.js からプロジェクト最適化までの vue2.x 構成

>>:  Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

推薦する

背景画像の配置におけるbackground-position属性の自己理解

最近、プロジェクトではラベルやボタンなどの断片的な画像をたくさん使用する必要があります。また、CSS...

MySQLデータベースは重複データを削除し、メソッドインスタンスを1つだけ保持します

1. 問題の紹介ユーザー テーブルに 3 つのフィールドが含まれているシナリオを想定します。 id、...

Nginx 仮想ホストを構成する 3 つの方法 (ポートベース) の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...

JavaScript での HTML キャンバスとページ ストレージ テクノロジの使用に関する詳細な説明

目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...

リンク更新ページと js 更新ページの使用例

1. リンクの使用方法:コードをコピーコードは次のとおりです。 <a href="j...

jsのイベントオブジェクトを深く理解しましょう

JS でよく使用されるイベントは次の通りです。ページイベント: load;フォーカス イベント: フ...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました

Vue プラグインがエラーを報告しました: このページで Vue.js が検出されましたVueプラグ...

Tomcatの全体構造の簡単な紹介

Tomcat は Web コンテナとして広く知られています。Java を学び始めたときから現在の仕事...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル

概要港とは何ですか?英語の単語の意味は「港」です。 Harborはコンテナ(貨物)を保管するために使...

MySQLデータベースのトランザクションとロックの詳細な分析

目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

HTMLにおける絶対パスと相対パスの違いの分析

図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...

mysql の find_in_set 関数の基本的な使い方

序文これは私が最近見つけた新しい機能です。プロジェクトでの私の使用シナリオは次のとおりです。アプリケ...