ホームページ データベース mysql チュートリアル centos7でのmysql5.6のマスタースレーブレプリケーションのサンプルコード共有の詳細説明

centos7でのmysql5.6のマスタースレーブレプリケーションのサンプルコード共有の詳細説明

Mar 29, 2017 pm 01:41 PM

この記事では、centos7 での mysql5.6 のマスター/スレーブ レプリケーションの詳細な説明を主に紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして、一緒に見てみましょう

1. mysql マスター/スレーブ レプリケーションの概要

mysql のマスター/スレーブ レプリケーションは、データベース ディスク上のファイルの直接コピーではなく、論理バイナログです。同期するファイルにコピーします。サーバーはローカルにあり、ローカル スレッドはログ内の SQL ステートメントを読み取り、それを mysql データベース に再適用します。

MySQL データベースは、一方向、双方向、チェーン カスケード、リングなどのさまざまなビジネス シナリオでのレプリケーションをサポートします。1 台のサーバーがマスター サーバーとして機能し、ユーザーからの更新を受信し、1 つ以上の他のサーバーがスレーブ サーバーとして機能します。マスター サーバーの binlog ファイルからログの内容を受信し、SQL を解析して、それをスレーブ サーバーに更新します。

1 つのマスターと 1 つのスレーブ (A -> B、A がマスター、B がスレーブ)

1 つのマスターと複数のスレーブ (A -> B、A -> C、A がマスター、Bおよび C はスレーブです)

デュアルマスター双方向同期 (A -> B 、B -> A 、A および B は両方ともマスターであり、相互にバックアップします)

リニア カスケード (A -> B -> B -> C、A、B がマスター相互バックアップ、C がスレーブ)

リングカスケード (A -> B -> C -> A、A、B、C はすべてマスター、各ノードはデータを書き込むことができます)

二、mysqlの読み書き分離を実現する解決策

1.プログラムで読み書き分離を実現する(判定文マスターとスレーブデータベースを接続するためのキーワード)

2. オープンソース ソフトウェアによる読み取りと書き込みの分離を実現します (mysql -proxy、amoeba、平均的な安定性と機能性、本番使用​​には推奨されません)

3. DAL レイヤー ソフトウェアの独自開発

3. mysql のマスターとスレーブのレプリケーション

mysql のマスターとスレーブのレプリケーションは非同期です。レプリケーション プロセスはマスター ライブラリをスレーブ ライブラリにコピーします。マスターとスレーブ間のプロセス全体は 3 つのスレッドで完了します。 SQL スレッドと I/O スレッドはスレーブ側にあり、他の I/O スレッドはマスター側にあります。

レプリケーションの原理とプロセス

1. スレーブでスレーブ開始コマンドを実行し、マスター/スレーブ レプリケーション スイッチをオンにして、マスター/スレーブ レプリケーションを開始します。

2. スレーブの I/O スレッドは、マスター上の許可されたレプリケーション ユーザーを通じてマスターを要求し、指定された binlog ログの指定された場所を要求します。

3. マスターがスレーブの I/O スレッドからリクエストを受信した後、コピーを担当する自身の I/O スレッドは、スレーブのリクエスト情報に従って、指定された binlog ログの指定された位置以降のログ情報をバッチで読み取ります。その後、I/O スレッドは、ビンログ ログ、マスターの新しいバイナリ ファイルの名前、および新しいバイナリ ログ内の次に指定された更新位置に加えて、情報を返します。

4. スレーブは、ログ ファイルとロケーション ポイントの後に、マスター上の I/O スレッドから送信された binlog ログの内容を取得し、binlog の内容はスレーブ自身のリレー ログ (リレー ログ) の末尾に書き込まれます。バイナリ ファイルの名前と場所がマスター情報ファイルに記録されるため、次回新しいバイナリ ログ ログがマスターから読み取られるとき、マスターは新しいバイナリ ファイルの新しい場所から読み取るように指示できます。ビンログ。

5. スレーブの SQL スレッドは、ローカル リレー ログに新しく追加された I/O スレッドのログ内容をリアルタイムで検出し、リレー ログ ファイルの内容を適時に SQL ステートメントに解析し、これらの SQL を実行します。 SQL ステートメントが解析される順序でステートメントを並べ替えます。 Relay-log.info には、現在のアプリケーション リレー ログのファイル名と場所が記録されます。

4. MySQL マスター/スレーブ レプリケーション操作

これは、mysql の単一マシンの複数のインスタンス、3306、3308、3309 です

メイン データベースは 3306、スレーブ データベースは 3308、3309 です。

(1)、マスターメインライブラリ上で

1. サーバーIDの値を設定し、binlog機能を有効にします

> vi /etc/my.cnf
ログイン後にコピー
rreee

2. メインライブラリにログインし、サーバーを表示します。 -id

 [mysqld]
 #用于同步的每台机器server-id都不能相同

server-id = 10

log-bin = /data/mysql56/data/mysql-bin
ログイン後にコピー

4. ライブラリからコピーしたアカウントのサーバーをメインライブラリに作成します

> service mysqld restart
ログイン後にコピー

5. メインライブラリデータベースの読み取り専用ロックテーブル(現在のウィンドウを閉じないでください)

> mysql -uroot -p

> show variables like 'server_id';
ログイン後にコピー

のステータスを表示しますメインライブラリ

6. メインライブラリのすべてのデータファイルをバックアップします

> flush table with read lock;
ログイン後にコピー

7. メインデータベースのデータをバックアップした後、メインデータベースからエクスポートされたデータをスレーブデータベースに移行します

> show master status;
ログイン後にコピー

(2)、スレーブスレーブデータベース上で


1. サーバーIDの値を設定し、binlog機能をオフにします

①binlogをオンにする必要がある状況は2つあります

② 中間でBを同期するためA->B->C をカスケードで実行するには、binlog をオンにする必要があります

③スレーブ ライブラリからデータベースのバックアップを実行する場合は、フル バックアップと binlog ログが必要です。これは完全なバックアップです。

> mysqldump -uroot -p -A -B | gzip > /data/mysql_bak.$(date +%F).sql.gz
ログイン後にコピー

2. スレーブデータベースを再起動します

> unlock tables;
ログイン後にコピー

3. スレーブデータベースにログインしてパラメータを確認します

> vi /mysql-instance/3308/my.cnf 

[mysqld]

server-id = 11

relay-log = /mysql-instance/3308/relay-bin

relay-log-info-file = /mysql-instance/3308/relay-log.info
ログイン後にコピー

4. mysqldump によってエクスポートされたデータをスレーブデータベースに復元します

> /mysql-instance/3308/mysql restart
ログイン後にコピー

メインデータベースからスレーブデータベースへ

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock

> show variables like 'log_bin';

> show variables like 'server_id';
ログイン後にコピー

5. スレーブライブラリにログインし、レプリケーションパラメータを設定します

> gzip -d /data/mysql_bak.2017-01-15.sql.gz
ログイン後にコピー

上記の MASTER_LOG_FILE と MASTER_LOG_POS は、show master status; を使用してマスター ライブラリで表示される情報であることに注意してください。

master.info ファイルを表示します

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock < /data/mysql_bak.2017-01-15.sql
ログイン後にコピー

6. スレーブ データベース同期スイッチを開始し、マスター/スレーブ レプリケーションをテストします

CHANGE MASTER TO

MASTER_HOST=&#39;127.0.0.1&#39;,

MASTER_PORT=3306,

MASTER_USER=&#39;rep&#39;,

MASTER_PASSWORD=&#39;123456&#39;,

MASTER_LOG_FILE=&#39;mysql-bin.000001&#39;,

MASTER_LOG_POS=396;
ログイン後にコピー

7. マスター/スレーブ レプリケーションをテストします

> mysql -uroot -p -e "create database wohehe;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show databases;"
ログイン後にコピー

五、mysql主从复制线程状态说明及用途

1、主库线程的同步状态

> show processlist\G; 


*************************** 1. row ***************************

   Id: 5

  User: rep

  Host: localhost:47605

   db: NULL

Command: Binlog Dump

  Time: 4728

 State: Master has sent all binlog to slave; waiting for binlog to be updated

  Info: NULL
ログイン後にコピー

说明主库线程已从binlog读取更新,发送到了从库,线程处理空闲状态,等待binlog的事件更新。

2、从库线程的同频状态

> show processlist\G; 

*************************** 2. row ***************************

   Id: 6

  User: system user

  Host:

   db: NULL

Command: Connect

  Time: 5305

 State: Slave has read all relay log; waiting for the slave I/O thread to update it

  Info: NULL
ログイン後にコピー

说明从库已读取所有中继日志,等待从库I/O线程的更新。

六、主从复制故障

如果我在从库上创建了一个库,然后去主库创建同名的库,那么这就会冲突了。

> show slave status; 

Slave_IO_Running: Yes

Slave_SQL_Running: No

Seconds_Behind_Master: NULL

Last_Error: Error &#39;Can&#39;t create database &#39;xxxxx&#39;; database exists&#39; on query. Default database: &#39;xxxxx&#39;. Query: &#39;create database xxxxx&#39;
ログイン後にコピー

对于该冲突解决方法

方法一

> stop slave;

#将同步指针移动下一个,如果多次不同步,可重复操作

> set global sql_slave_skip_counter = 1;

> start slave;
ログイン後にコピー

方法二

> vi /mysql-instance/3308/my.cnf 

#把可以忽略的错误号事先在配置文件中配置

slave-skip-errors = 1002,1007,1032
ログイン後にコピー

以上がcentos7でのmysql5.6のマスタースレーブレプリケーションのサンプルコード共有の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CentOS7 各種バージョンイメージのダウンロードアドレスとバージョン説明(Everythingバージョン含む) CentOS7 各種バージョンイメージのダウンロードアドレスとバージョン説明(Everythingバージョン含む) Feb 29, 2024 am 09:20 AM

CentOS-7.0-1406 をロードする場合、オプションのバージョンが多数あり、一般ユーザーにとってはどれを選択すればよいか分かりませんが、簡単に紹介すると、 (1) CentOS-xxxx-LiveCD.ios と CentOS-xxxx- -DVD.iso はどう違いますか?前者は700Mしかなく、後者は3.8Gです。違いはサイズだけではありませんが、より本質的な違いは、CentOS-xxxx-LiveCD.ios はメモリにロードして実行することしかできず、インストールできないことです。ハードディスクには CentOS-xxx-bin-DVD1.iso のみインストールできます。 (2) CentOS-xxx-bin-DVD1.iso、Ce

CentOS 7 緊急修復モードに入る手順 CentOS 7 緊急修復モードに入る手順 Jan 13, 2024 am 09:36 AM

centos7 ページを開くと、「緊急モードへようこそ!」が表示されます。ログイン後、「journalctl -xb」と入力してシス​​テムログを表示し、「systemctlreboot」と入力して再起動し、「systemctldefault」と入力してデフォルトモードで再起動します。 giverootpasswordformaintenance(??Control-D???): 解決策: r を実行します。

CentOS 7 の /tmp ディレクトリにあるジャンク ファイルにアクセスしてクリーンアップする方法は? CentOS 7 の /tmp ディレクトリにあるジャンク ファイルにアクセスしてクリーンアップする方法は? Dec 27, 2023 pm 09:10 PM

centos7システムのtmpディレクトリにゴミが大量にあるのですが、ゴミを削除したい場合はどうすればよいでしょうか?以下の詳細なチュートリアルを見てみましょう。 tmp ファイル ディレクトリ内のファイルのリストを表示するには、コマンド cdtmp/ を実行して tmp の現在のファイル ディレクトリに切り替え、ll コマンドを実行して現在のディレクトリ内のファイルのリストを表示します。以下に示すように。ファイルを削除するには、rm コマンドを使用します。rm コマンドはファイルをシステムから永久に削除することに注意してください。したがって、rm コマンドを使用するときは、ファイルを削除する前にプロンプ​​トを表示することをお勧めします。コマンド rm-i file name を使用し、ユーザーが削除を確認する (y) か削除をスキップする (n) まで待つと、システムは対応する操作を実行します。以下に示すように。

centos7 でパスワード ルールを設定する方法 centos7 でパスワード ルールを設定する方法 centos7 でパスワード ルールを設定する方法 centos7 でパスワード ルールを設定する方法 Jan 07, 2024 pm 01:17 PM

セキュリティ上の理由からパスワード ルールを設定する パスワードの有効期限が切れるまでの日数を設定します。ユーザーは数日以内にパスワードを変更する必要があります。この設定は、作成されたユーザーにのみ影響し、既存のユーザーには影響しません。既存のユーザーに設定する場合は、「chage -M (日) (ユーザー)」コマンドを実行します。 PASS_MAX_DAYS60#パスワードの有効期限 PASS_MIN_DAYS3#初期パスワード変更時間 PASS_MIN_LEN8#パスワードの最小長 PASS_WARN_AGE7#パスワード有効期限のプロンプト時間 パスワードの繰り返し制限の使用 [root@linuxprobe~]#vi/etc/pam.d/system-auth#nearline15:

CENTOS7でmbstring拡張機能をインストールするにはどうすればよいですか? CENTOS7でmbstring拡張機能をインストールするにはどうすればよいですか? Jan 06, 2024 pm 09:59 PM

1.UncaughtError:Calltoundependentfunctionmb_strlen(); 上記のエラーが発生した場合、mbstring 拡張機能がインストールされていないことを意味します; 2. PHP インストール ディレクトリ cd/temp001/php-7.1.0/ext/mbstring に入ります 3. phpize( /usr/local/bin /phpize または /usr/local/php7-abel001/bin/phpize) コマンドを使用して、php 拡張機能 4../configure--with-php-config=/usr/local/php7-abel をインストールします。

CentOS7にMysqlをインストールして起動時に自動起動するように設定する方法 CentOS7にMysqlをインストールして起動時に自動起動するように設定する方法 Jun 02, 2023 pm 08:36 PM

Centos7 には mysql データベースがありません。デフォルトのデータベースは mariadb (mysql のブランチ) です。以下の手順に従って、mysql データベースを手動でインストールできます。 1. rpm インストール ファイル wgethttp://repo.mysql.com/mysql-community-release-el7.rpm をダウンロードします 2. rpm を実行して rpm-ivhmysql-community-release-el7.rpm をインストールします依存関係の解決が完了したらを選択すると、次のオプションが表示されます: dependencyresolved =================================

centos7でのファイル解凍コマンド(zip)の詳細説明 centos7でのファイル解凍コマンド(zip)の詳細説明 Jan 07, 2024 pm 06:30 PM

1. 圧縮フォルダーは zip ファイルです [root@cgls]#zip-rmydata.zipmydata2。mydata.zip を mydatabak ディレクトリに解凍します [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 フォルダーと mydata02.txt が圧縮されます。 mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. mydata.zip ファイルを直接解凍します [root@cgls]#unzipmydata.zip5. myd を表示します。

CentOS7のデフォルトのショートカットキーを変更・設定するにはどうすればいいですか? CentOS7のデフォルトのショートカットキーを変更・設定するにはどうすればいいですか? Jan 09, 2024 pm 06:14 PM

デフォルトのショートカット キーが使用しているソフトウェアのキーと競合する場合、または自分の習慣に従ってショートカット キーを使用する必要がある場合は、デフォルトのショートカット キーを変更して設定する必要があります。以下の詳細なチュートリアルを見てみましょう。 1. 仮想マシンで Centos7 システムを起動し、デスクトップに入ります。 2. 左上隅にある [アプリケーション] -> [システム ツール] -> [設定] をクリックします。 3. 設定インターフェイスに入り、デバイスをクリックします。 4. [キーボード] を選択し、任意のボタンをクリックします。 5. 変更後、下図のように、最後に「設定」をクリックすると、ショートカットキーの設定が反映されます。修正が完了しました。

See all articles