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 エラーの解決方法の詳細な説明

推薦する

MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する

今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...

WebpackはCSSファイルを読み込み、その設定方法

webpackはCSSファイルとその設定をロードします複数の CSS ファイルを作成した後、HTML...

期間限定フラッシュセール機能を実現するJavaScriptタイマー

この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...

mysql data_dirの変更によって発生するエラー問題を解決する

今日は、新しく購入した Alibaba Cloud ECS 環境 (Ubuntu 16.04 LTS...

HTML における rel="nofollow" の役割と rel 属性の使用を分析する

リンクに rel="nofollow" 属性を追加すると、検索エンジンにこの接続...

Echatsチャートの大画面適応を実装する方法

目次説明する成し遂げるプロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりです要約す...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

Dockerはポートマッピングを設定しますが、ソリューションにアクセスできません

#docker ps チェック、すべてのポートがマップされています コンテナID イメージ コマンド...

ページのスクロールバーを無効にするには、overflow: hiddenを使用します。

コードをコピーコードは次のとおりです。 html {オーバーフロー: 非表示; }体{オーバーフロー...

element.style インライン スタイルを変更する方法のチュートリアル

序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...

Win10にCentOS7仮想マシンをインストールする

1. VMware Workstation 64バージョンをダウンロードするhttps://www....

MySQL共通インデックスとユニークインデックスの詳細な説明

シナリオ1. ID番号のフィールドを備えた市民システムを維持する2. ビジネス コードでは、重複する...

JavaScript を使用したコマンドライン アプリケーションの構築

目次1. ノードをインストールする2. Commander.jsをインストールする3. JavaSc...

MySQL 8.0 redo ログの詳細な分析

目次序文REDOログの生成REDOログ送信REDOログの保存と通知ユーザースレッドに通知要約する序文...