ホームページ データベース mysql チュートリアル Mysql でのコピーの詳細な分析

Mysql でのコピーの詳細な分析

Dec 08, 2017 am 11:59 AM
mysql コピー 解析する

この記事では主に Mysql におけるレプリケーションの詳細な分析を紹介し、基本的な概念、使用法、実装方法、集中モードを紹介し、それを必要とする友人がそれについて学ぶことができる具体的な実装コードを共有します。

1.mysql レプリケーションの概念

は、プライマリ データベースの DDL および DML 操作をバイナリ ログを通じてレプリケーション サーバーに送信し、これらのログ ファイルをレプリケーション サーバー上で再実行することによって、レプリケーション サーバーを作成することを指します。とプライマリ サーバーのデータは同期されます。レプリケーション プロセス中、1 つのサーバーがマスターとして機能し、1 つ以上の他のサーバーがスレーブとして機能します。マスターはバイナリ ログ ファイルの更新を書き換え、ログ ローテーションを追跡するためにファイルのインデックスを維持します。これらのログは、スレーブ サーバーに送信された更新を記録します。スレーブはマスターに接続すると、スレーブがログから読み取った最後に成功した更新の場所をマスターに通知します。スレーブはそれ以降に発生した更新をすべて受け入れ、ブロックしてマスターに新しい更新が通知されるのを待ちます。

2. レプリケーションの目的

マスターとスレーブのレプリケーションを通じてデータを同期し、読み取りと書き込みの分離 (mysql-proxy) を通じてデータベースの同時負荷容量を向上させるか、データベースの設計として使用します。メイン マシンとバックアップ マシンにより、メイン マシンが応答を停止した後、アプリケーションをバックアップ マシンに切り替えて非常に短時間で実行を継続できるようになります。

利点:

(1) データベースクラスターシステムには複数のデータベースノードがあり、単一ノードに障害が発生した場合でも、他の正常なノードがサービスを提供し続けることができます。
(2) マスターサーバーに問題が発生した場合、スレーブサーバーに切り替えることができます
(3) レプリケーションによりクエリ操作をスレーブサーバーで実行できるため、マスターサーバーへのアクセス負荷が軽減され、データの分散と分散が実現しますロード バランシング
(4) バックアップ中にマスター サーバーのサービスに影響を与えることを避けるために、バックアップをスレーブ サーバーで実行できます。

3. レプリケーションの実装 (3 つの方法)

(1) DRBD は、サーバー間でブロック デバイスのコンテンツをミラーリングするためのソフトウェア実装のシェアードナッシング ストレージ レプリケーション ソリューションです。
(2) MySQL クラスター (mysql クラスターとも呼ばれます)。 Mysql のレプリケーション (replication) 自体は比較的単純な構造で、スレーブ サーバー (slave) がマスター サーバー (master) からバイナリ ログを読み取り、それを解析して自身に適用します。
(3) 単純なレプリケーション環境では、mysql を実行する 2 つのホストのみが必要で、1 つの物理サーバー ホスト上で 2 つの mysqld インスタンスを起動することもできます。 1 つはマスターとして機能し、もう 1 つはスレーブとして機能して、レプリケーション環境の構成を完了します。ただし、実際のアプリケーション環境では、mysql レプリケーション機能を使用して、最も一般的に使用されるマスター/スレーブ アーキテクチャなど、実際のビジネス ニーズに応じて拡張しやすい他のレプリケーション アーキテクチャを構築できます。
マスター/スレーブ アーキテクチャとは、1 つの mysql サーバーをマスターとして使用し、1 つ以上の mysql サーバーをスレーブとして使用し、マスターのデータをスレーブにコピーすることを指します。実際のアプリケーションでは、マスター/スレーブ アーキテクチャ モードが mysql レプリケーションに最も一般的に使用されます。一般に、このアーキテクチャでは、システムの書き込み操作はマスターで実行され、読み取り操作はさまざまなスレーブに分散されるため、このアーキテクチャは、現在のインターネットの大量の読み取りおよび書き込みの問題に特に適しています。

Mysqlデータベースのレプリケーション操作は大きく以下の手順に分かれます:

(1) マスターはバイナリログを有効にします。バイナリ ログを有効にする操作については、「ログ管理」で詳しく説明されています。
(2) スレーブ上の I/O プロセスはマスターに接続し、指定されたログ ファイルの指定された位置 (またはログの先頭) からログの内容を要求します。
(3) マスターはスレーブからのI/O処理要求を受信後、レプリケーションを担当するI/Oプロセスを通じて要求情報に従って指定されたログの指定位置以降のログ情報を読み出し、スレーブに返します。スレーブの I/O。ログに含まれる情報に加えて、返される情報には、bin ログ ファイルの名前と、返された情報がマスターに送信された bin ログの場所も含まれます。
(4) 情報を受信した後、スレーブの I/O プロセスは、受信したログの内容をスレーブ側のリレーログ ファイルの末尾に順番に追加し、ファイル名とビンの場所を記録します。読み取られたマスター側のログをマスター情報ファイルに記録します。
(5) スレーブの SQL プロセスがリレー ログの新しいコンテンツを検出すると、リレー ログのコンテンツをすぐに解析し、それ自体で実行します。

4. mysql レプリケーションの集中モード

mysql5.1 以降のバージョンでは、新しいレプリケーション テクノロジである行ベースのレプリケーションが導入され、レプリケーションが改善されました。このテクノロジーは、以前の binlog モードをコピーするのではなく、テーブル内で変更されたレコードに焦点を当てます。 mysql5.1.12 以降、これを実現するために次の 3 つのモードを使用できるようになりました。

(1) ステートメントベースのレプリケーション (sbr)
(2) 行ベースのレプリケーション (rbr)
(3) 混合モードのレプリケーション (mbr)

これに対応して、binlog にはステートメント、行、混合の 3 つの形式があります。 Mbr モードでは、sbr モードがデフォルトです。 binlog の形式は実行時に動的に変更できます。マスター/スレーブ レプリケーション モードを設定する方法は非常に簡単です。次のように、以前に設定したレプリケーション構成に基づいて別のパラメーターを追加するだけです。もちろん、実行時にバイナリ ログを動的に変更することもできます。形式


binlog_format=”statement”
#binlog_format=”row”
#binlog_format=”mixed”
ログイン後にコピー


5. マスターサーバーの動作制御


マスター: 192.168.11.139
スレーブ: 192.168.11.130

(1 ) マスターサーバー:



Mysql> set session binlog_format=”statement”
ログイン後にコピー

メインサーバーでバイナリログを有効にします:


mysql> show variables like '%datadir%';
+---------------+--------------------------+
| Variable_name | Value          |
+---------------+--------------------------+
| datadir    | /application/mysql/data/ |
+---------------+--------------------------+
ログイン後にコピー


OFFはバイナリログがオフであることを意味します


ログを有効にする3つのステップ:


①mysqlインストールディレクトリ/myを開きます.cnf
② ラベル [mysqld] を見つけ、このラベルの下の行に次のステートメントを追加します。

log_bin[filename]

このステートメントでは、log-bin はバイナリ ファイル filename を開く必要があることを示します。バイナリログの名前。指定しない場合、デフォルトはホスト名に -bin を付けたファイル名となり、デフォルトで datadir ディレクトリに保存されます。ここで binary_log を指定します。指定したデータベースのバイナリ ファイルのみを生成する場合は、次のステートメントを追加する必要があります



mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin    | OFF  |
+---------------+-------+
row in set (0.00 sec)
ログイン後にコピー


指定したデータベースのバイナリ ファイル ログを生成しない場合は、次のステートメントを追加する必要があります。ステートメント


Binlog-do-db=db_name(数据库名称)
ログイン後にコピー


③mysqlサービスを再起動します。今後 mysql サービスが再起動されるたびに、mysql インストール ディレクトリ/データ フォルダーに「binary_log.numeric number」ファイルが表示されます。バイナリ ファイルは再生成され、その中に数値が表示されます。ファイル名が増えてしまいます。


正常に起動したら、mysql 設定ファイル my.cnf を変更し、サーバー ID を設定します。コードは次のとおりです


Binlog-ignore-db-db_name(数据库名称)
ログイン後にコピー


マスター上でレプリケーションに必要なユーザーを作成します


Server-id=1
Binlog-do-db=xscj
Binlog-ignore-db=mysql
Server-id=1:每一个数据库服务器都要指定一个唯一的server-id,通常主服务器为1,master和slave的server-id不能相同。
Binlog-do-db:表示需要复制的数据库,这里以xscj为例
Binlog-ignore-db:表示不需要复制的数据库
ログイン後にコピー


マスターホストのデータをバックアップし、/data/binary_dump.txt ファイルに保存して、スレーブマシンにインポートします。具体的な実行ステートメントは次のとおりです


mysql> grant replication slave on *.* to rep_user@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec

mysql> show master status\G
*************************** 1. row ***************************
      File: binary_log.000001
    Position: 303
  Binlog_Do_DB: 
Binlog_Ignore_DB: 
row in set (0.00 sec)
ログイン後にコピー


(2) スレーブサーバーの動作を制御する


スレーブサーバーのデータベース設定ファイルを変更します。設定は次のとおりです。

オプション

機能


スレーブの開始

レプリケーションスレッドの開始


スレーブの停止スレーブをリセットスレーブ ステータスを表示スレーブ ステータスを表示gマスターのステータスを表示Gmysql_MySQLでテーブル構造をコピーする方法の概要

レプリケーションスレッドを停止

レプリケーション スレッドをリセット

レプリケーション スレッド ステータスを表示

レプリケーション スレッド ステータスを表示(別の行に表示)

マスターデータベースのステータスを表示(別の行に表示)

マスターログを表示 processlistv

どのスレッドが実行されているかを表示

学習しましたか?急いで試してみてください。

関連する推奨事項:

データテーブルのデータをMySQL_MySQLの新しいテーブルにコピーするための操作チュートリアル

MySQLレプリケーションの概要とインストール、障害、テクニック、ツール (Huo Ding が共有)

以上がMysql でのコピーの詳細な分析の詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

MySQLの役割:Webアプリケーションのデータベース MySQLの役割:Webアプリケーションのデータベース Apr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

See all articles