検索
ホームページデータベースmysql チュートリアルmysqlの読み書き分離の実装方法は何ですか?

mysql では、「mysql-proxy」を使用して読み取りと書き込みの分離を実現できます。「mysql-proxy」は、読み取りと書き込みの分離を実現するために mysql によって公式に提供されるソフトウェアであり、ミドルウェアとも呼ばれます。メイン データベースへの書き込み操作は処理され、データベースからのクエリ操作は処理され、データベースの一貫性はマスター/スレーブ レプリケーションによって実現されます。

mysqlの読み書き分離の実装方法は何ですか?

このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。

mysql の読み書き分離の実装方法は何ですか?

Mysql で読み書き分離を実現できるプラグインには、mysql-proxy / Mycat / Ameba などがあります。システムに付属するプラグインです。この実験では主に読み取りと書き込みの分離を実現するために使用します。

mysql-proxy は、「読み取りと書き込みの分離 (Read/Write Splitting)」を実現するソフトウェアです (公式に提供されています) MySQL (ミドルウェアとも呼ばれます) の基本原理は、メイン データベースに書き込み操作 (挿入、更新、削除) を処理させ、スレーブ データベースにクエリ操作 (選択) を処理させることです。データベースの一貫性は、マスター/スレーブ レプリケーションによって実現されます。

MySQL プロキシは、主に内部 Lua スクリプトに依存して読み取りステートメントと書き込みステートメントの区別を実現できます (読み取りステートメントと書き込みステートメントの判断を実現できます)

マスターサーバー(ライトサーバー)のみでデータの書き込みが完了した場合、この時点ではスレーブサーバーでは書き込みが行われず、データは存在しません。 、マスター/スレーブ サーバーを実装するには別のテクノロジーを使用する必要があります。データの整合性、このテクノロジーはマスター/スレーブ レプリケーション テクノロジーと呼ばれるため、マスター/スレーブ レプリケーションは読み取りと書き込みの分離の基礎です

読み取り-書き込み分離 (MySQL-Proxy) とは、マスターに書き込み操作を処理させ、スレーブに読み取り操作を処理させることを意味します。これは、比較的大規模な読み取り操作を行うシナリオに非常に適しており、マスターへの負担を軽減できます。

使用mysql-proxy は、mysql の読み取りと書き込みの分離を実現します。mysql-proxy は、実際には、バックエンドの mysql マスター/スレーブ サーバーのプロキシとして機能します。クライアントのリクエストを直接受け入れ、SQL ステートメントを分析し、読み取り操作であるかどうかを判断します。

データベースの書き込み操作は読み取り操作よりも時間がかかるため、データベースの読み取りと書き込みを分離することで、この問題を解決できます。データベースへの書き込みの問題は、クエリの効率に影響します。

最初に、サーバー 1 とサーバー 2 で gtid マスター/スレーブ レプリケーションを構成します。

gtid マスター/スレーブ レプリケーションに関する以前のブログは完了しました。説明、ここでは詳細には触れず、最終的な効果のみを示します。

サーバー 1 に Westos データベースが確立され、対応するサーバー 2 が同期されることがわかります。



mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?server3 プロキシの設定 (mysql-proxy)

server3 に mysql-proxy プロキシ サーバーを構築します (クライアントがサーバー 1 で書き込み、サーバー 2 でデータを読み取ることを実現するため)

(1) mysql を入手します。 - 物理マシンのプロキシインストールパッケージからserver3



(2)server3で設定mysqlの読み書き分離の実装方法は何ですか?

[root@server3 ~]# systemctl status mysqld	##查看mysqld服务状态
[root@server3 ~]# systemctl stop mysqld	##关闭mysqld服务,因为代理服务器要用3306端口
[root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-glibc2-x86-64bit.tar.gz -C /usr/local/	##解压到/usr/local/目录下

管理用のソフト接続を作成mysqlの読み書き分離の実装方法は何ですか?

ln -s mysql-proxy-0.8.5-linux-glibc2-x86-64bit mysql-proxy

mysqlの読み書き分離の実装方法は何ですか?mysql-proxy ディレクトリには設定ファイルがないため、自分で設定ファイル用のディレクトリを作成し、設定ファイルを作成する必要があります
# # 次の 2 つのコマンドを使用して、設定ファイルに記述されたパラメータを確認します。

[root@server3 bin]# ./mysql-proxy --help
[root@server3 bin]# ./mysql-proxy --help-proxy
[mysql-proxy]	##指定语句块
proxy-address=0.0.0.0:3306	##指定proxy访问的主机和端口,3306是一个对外的通用端口
proxy-read-only-backend-addresses=172.25.254.2:3306	##读主机的ip和端口
proxy-backend-addresses=172.25.254.1:3306	##执行写主机的ip和端口
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua	##指定读写分离操作使用的lua文件路径
pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid	##pid存放路径
log-file=/usr/local/mysql-proxy/log/mysql-proxy.log	##日志存放路径
plugins=proxy	##指定使用的插件
log-level=debug	##日志的等级
keepalive=true	##开启守护进程
daemon=true	##使用后台方式运行
mysqlの読み書き分離の実装方法は何ですか?

保存後、設定ファイルの権限を 660 に変更し、ログ ディレクトリを作成する必要がありますmysqlの読み書き分離の実装方法は何ですか?
#データベースで読み取りと書き込みの分離が発生した場合の接続の最大数と最小数を変更する
##

[root@server3 mysql-proxy]# find . -name *.lua 
./share/doc/mysql-proxy/rw-splitting.lua
[root@server3 mysql-proxy]# cd share/doc/mysql-proxy 
[root@server3 mysql-proxy]# ls 
[root@server3 mysql-proxy]# vim rw-splitting.lua		##将lua脚本里原本启动机制的最小4个最大8个连接,改为1和2
min_idle_connections = 1, 最小连接数 
max_idle_connections = 2, 最大连接数
mysqlの読み書き分離の実装方法は何ですか?

(3) mysql -proxymysqlの読み書き分離の実装方法は何ですか?

/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf	##启动
cat /usr/local/mysql-proxy/log/mysql-proxy.log	##查看日志

mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか? を開始し、読み取りと書き込みの分離をテストします
(1) 新規作成サーバー1のユーザーと承認

mysql> grant insert,update,select on *.* to kkxili@'%' identified by 'Red1hat*';
mysql> FLUSH PRIVILEGES;	##刷新授权表
mysql> USE westos;
Database changed
mysql> CREATE TABLE linux (
    -> username varchar(10) not null,
    -> password varchar(15) not null);
mysql>DESC linux;

mysqlの読み書き分離の実装方法は何ですか?
(2)server3安装lsof
mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?
(3)在用户端虚拟机server4上第一次连接数据库代理server3
mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?
在server3上面:lsof -i:3306
mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?
(4)在用户端虚拟机server4上第二次连接数据库代理server3
在server3上面:lsof -i:3306
mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?
(5)在用户端虚拟机server4上第三次连接数据库代理server3
在server3上面:lsof -i:3306
开始读写分离

mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?上面是读写分离的读访问测试
写测试
在用户端插入数据

use westos;
insert into linux values('user1','123');

mysqlの読み書き分離の実装方法は何ですか?
server1和server2都可以看到插入的数据
mysqlの読み書き分離の実装方法は何ですか?
mysqlの読み書き分離の実装方法は何ですか?
在server2中关闭主从复制
用户端再次写入数据,看不到刚刚写的数据
mysqlの読み書き分離の実装方法は何ですか?
写在server1上,可以查看到数据
mysqlの読み書き分離の実装方法は何ですか?
在server2上实现了读写分离
mysqlの読み書き分離の実装方法は何ですか?
server2重新开启主从复制可以看到数据
mysqlの読み書き分離の実装方法は何ですか?
客户端读的是server2,server2只能读,不能写,因此看不到刚才写进去的东西,server1可以看到
实现了客户端(虚拟机)对server1的写,对server2的读

当访问数据库的用户数量很多时,数据库的代理就把后端的数据库实现读写分离
server1是写的数据库、server2是读的数据库
当server1和server2满足gtid的主从复制时,用户往数据库写入的数据其实是写入了server1,并没有写入server2,server2上面的数据是复制过去的,因此server1、server2、客户机上面都能查到刚刚写进去的数据,其实客户机查的是server2(读)
当关闭server1和server2的异步复制时,客户机往数据库写入的数据只写进了server1,没有写进去server2,server2也没有复制一份
因此server1可以查看到,server2和客户机上面都查不到刚刚写进去的数据,此时的客户机读的是server2

推荐学习:mysql视频教程

以上がmysqlの読み書き分離の実装方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL Index Cardinalityはクエリパフォーマンスにどのように影響しますか?MySQL Index Cardinalityはクエリパフォーマンスにどのように影響しますか?Apr 14, 2025 am 12:18 AM

MySQLインデックスのカーディナリティは、クエリパフォーマンスに大きな影響を及ぼします。1。高いカーディナリティインデックスは、データ範囲をより効果的に狭め、クエリ効率を向上させることができます。 2。低カーディナリティインデックスは、完全なテーブルスキャンにつながり、クエリのパフォーマンスを削減する可能性があります。 3。ジョイントインデックスでは、クエリを最適化するために、高いカーディナリティシーケンスを前に配置する必要があります。

MySQL:新規ユーザー向けのリソースとチュートリアルMySQL:新規ユーザー向けのリソースとチュートリアルApr 14, 2025 am 12:16 AM

MySQL学習パスには、基本的な知識、コアの概念、使用例、最適化手法が含まれます。 1)テーブル、行、列、SQLクエリなどの基本概念を理解します。 2)MySQLの定義、作業原則、および利点を学びます。 3)インデックスやストアドプロシージャなどの基本的なCRUD操作と高度な使用法をマスターします。 4)インデックスの合理的な使用や最適化クエリなど、一般的なエラーのデバッグとパフォーマンス最適化の提案に精通しています。これらの手順を通じて、MySQLの使用と最適化を完全に把握できます。

実際のmysql:例とユースケース実際のmysql:例とユースケースApr 14, 2025 am 12:15 AM

MySQLの実際のアプリケーションには、基本的なデータベース設計と複雑なクエリの最適化が含まれます。 1)基本的な使用法:ユーザー情報の挿入、クエリ、更新、削除など、ユーザーデータの保存と管理に使用されます。 2)高度な使用法:eコマースプラットフォームの注文や在庫管理など、複雑なビジネスロジックを処理します。 3)パフォーマンスの最適化:インデックス、パーティションテーブル、クエリキャッシュを使用して合理的にパフォーマンスを向上させます。

MySQLのSQLコマンド:実用的な例MySQLのSQLコマンド:実用的な例Apr 14, 2025 am 12:09 AM

MySQLのSQLコマンドは、DDL、DML、DQL、DCLなどのカテゴリに分割でき、データベースとテーブルの作成、変更、削除、データの挿入、更新、削除、複雑なクエリ操作の実行に使用できます。 1.基本的な使用には、作成可能な作成テーブル、INSERTINTO INSERTデータ、クエリデータの選択が含まれます。 2。高度な使用法には、テーブル結合、サブQueries、およびデータ集約のためのグループに参加します。 3.構文エラー、データ型の不一致、許可の問題などの一般的なエラーは、構文チェック、データ型変換、許可管理を介してデバッグできます。 4.パフォーマンス最適化の提案には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、およびデータの一貫性を確保するためのトランザクションの使用が含まれます。

InnoDBは酸コンプライアンスをどのように処理しますか?InnoDBは酸コンプライアンスをどのように処理しますか?Apr 14, 2025 am 12:03 AM

INNODBは、ロックメカニズムとMVCCを通じて、非論的、一貫性、および分離を通じて原子性を達成し、レッドログを介した持続性を達成します。 1)原子性:Undologを使用して元のデータを記録して、トランザクションをロールバックできることを確認します。 2)一貫性:行レベルのロックとMVCCを介してデータの一貫性を確保します。 3)分離:複数の分離レベルをサポートし、デフォルトでrepeatable -readが使用されます。 4)持続性:Redologを使用して修正を記録し、データが長時間保存されるようにします。

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

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

MySQL:中小企業から大企業までMySQL:中小企業から大企業までApr 13, 2025 am 12:17 AM

MySQLは、中小企業に適しています。 1)中小企業は、顧客情報の保存など、基本的なデータ管理にMySQLを使用できます。 2)大企業はMySQLを使用して、大規模なデータと複雑なビジネスロジックを処理して、クエリのパフォーマンスとトランザクション処理を最適化できます。

Phantomの読み取りとは何ですか?Innodbはどのようにそれらを防ぐ(次のキーロック)?Phantomの読み取りとは何ですか?Innodbはどのようにそれらを防ぐ(次のキーロック)?Apr 13, 2025 am 12:16 AM

INNODBは、次のキーロックメカニズムを通じてファントムの読み取りを効果的に防止します。 1)Next-KeyLockingは、Row LockとGap Lockを組み合わせてレコードとギャップをロックして、新しいレコードが挿入されないようにします。 2)実際のアプリケーションでは、クエリを最適化して分離レベルを調整することにより、ロック競争を削減し、並行性パフォーマンスを改善できます。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境