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

推薦する

jsを使用して写真をアップロードする機能を実現する

フロントエンドで画像をアップロードする原理は、入力 type="file" タグ...

CocosCreatorオブジェクトプールの使い方

目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...

MySQL 結合バッファの原理

目次1. MySQL 結合バッファ2. JoinBufferCacheストレージスペースの割り当て3...

Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)

解決すべき問題主にコンポーネント間のクロスレベル通信用なぜディスパッチとブロードキャストを自分で実装...

MySQLで関連テーブルを削除する実用的な方法

MySQL データベースでは、テーブルが互いに関連付けられた後は、それらを任意に削除することはできま...

Unix/Linux システムにおける nobody ユーザーと nologin の詳細な紹介

Unix/Linux システムの nobody ユーザーとは何ですか? 1. Windows システ...

TypeScriptの基本型の詳細な説明

目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...

DockerにTomcat8をインストールする方法

1. dockerでtomcat8をインストールする1. Docker HubでTomcatイメージ...

Nginx リバース プロキシ springboot jar パッケージ プロセス分析

Springboot プロジェクトをサーバーにデプロイする方法としては、war パッケージにパッケー...

MySQL データベースの基礎を始めるための一般的なコマンドの概要

この記事では、MySQL データベースの基礎を学ぶためによく使用されるコマンドを例を使って説明します...

スタイルを書く際の背景色宣言の重要性

タイトルの通り、ページを修正すると以下のような状況が発生する可能性があります。現在、古いページを改修...

CentOS7.4 で JDK1.8 をインストールするためのグラフィカル チュートリアル

Linux インストール JDK1.8 手順1. CentOS に独自の openJDK があるかど...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...