MySQL Proxy快速实现读写分离以及负载均衡
1. 安装下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。 [@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.
1. 安装
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。
[@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz
[@s1.yejr.com ~]# cd mysql-proxy-0.6.0-linux-rhas4-x86
#可以看到有2个目录
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls
sbin share
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls share
mysql-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua
tutorial-basic.lua tutorial-inject.lua tutorial-query-time.lua tutorial-states.lua
#将lua脚本放到/usr/local/share下,以备他用
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/
#删除符号连接等垃圾代码
[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy
2. 启动
编译一下启动管理脚本:
[@s1.yejr.com ~]# vi /etc/init.d/mysql-proxy
#!/bin/sh
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua
mode=$1
if [ -z "$mode" ] ; then
mode="start"
fi
case $mode in
'start')
mysql-proxy --daemon \
--admin-address=:4401 \
--proxy-address=:3307 \
--proxy-backend-addresses=:3306 \
--proxy-read-only-backend-addresses=192.168.133.232:3306 \
--proxy-read-only-backend-addresses=10.10.74.61:3306 \
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
;;
'stop')
killall mysql-proxy
;;
'restart')
if $0 stop ; then
$0 start
else
echo "retart failed!!!"
exit 1
fi
;;
esac
exit 0
现在解释一下启动脚本:
--daemon 采用daemon方式启动
--admin-address=:4401 指定mysql proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=:3307 指定mysql proxy的监听端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=:3306 指定mysql主机的端口
--proxy-read-only-backend-addresses=192.168.1.1:3306 指定只读的mysql主机端口
--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一个只读的mysql主机端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离
完整的参数可以运行以下命令查看:
mysql-proxy --help-all
运行以下命令启动/停止/重启mysql proxy:
[@s1.yejr.com ~]# /etc/init.d/mysql-proxy start
[@s1.yejr.com ~]# /etc/init.d/mysql-proxy stop
[@s1.yejr.com ~]# /etc/init.d/mysql-proxy restart
3. 试用
[@s1.yejr.com ~]# mysql -h127.0.0.1 -uroot -P3307
mysql> show processlist;
+-------+------+----------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+------+----------------+------+---------+------+-------+------------------+
| 30052 | root | localhost:9656 | NULL | Query | 0 | NULL | show processlist |
+-------+------+----------------+------+---------+------+-------+------------------+
可以看到,产生了一个新连接。
用sysbench测试一下,看会不会挂掉:
[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test prepare
[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test run
.........
.........
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.0387/0.00
还好,没给大家丢脸,,剩下的测试自己完成吧 :)
4. 其他
mysql proxy还可以实现连接池的功能,这在很多LAMP开发中是软肋,因此,有了mysql proxy,就可以不用再担心连接数超限的问题了。
如果使用rw-splitting.lua脚本的话,最好修改以下2个参数的默认值:
min_idle_connections = 1
max_idle_connections = 3
MySQL Proxy 的详细介绍:请点这里
MySQL Proxy 的下载地址:请点这里
相关阅读:
MySQL Proxy读写分离实战
在CentOS 5.2下安装最新的MySQL Proxy
RHEL5.5下MySQL Proxy 安装
mysql proxy、mysql-mmm实现读写分离高可用性

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie erreicht man in ReactQuery eine Trennung von Lesen und Schreiben in der Datenbank? In der modernen Frontend-Entwicklung ist die Trennung von Lesen und Schreiben in der Datenbank ein wichtiger architektonischer Entwurfsaspekt. ReactQuery ist eine leistungsstarke Zustandsverwaltungsbibliothek, die den Datenerfassungs- und -verwaltungsprozess von Front-End-Anwendungen optimieren kann. In diesem Artikel wird erläutert, wie Sie mithilfe von ReactQuery eine Lese- und Schreibtrennung in der Datenbank erreichen, und es werden spezifische Codebeispiele bereitgestellt. Die Kernkonzepte von ReactQuery sind Query, Mutatio

MySQL ist eine der beliebtesten Datenbanken und wird häufig in Anwendungen verwendet. Bei hoher Parallelität und großem Datenvolumen ist die Lese- und Schreibtrennung aufgrund der unzureichenden Lese- und Schreib-Parallelitätsleistung von MySQL zur Verbesserung der Parallelitätsleistung von MySQL zu einer notwendigen Lösung geworden. Als beliebte dynamische Sprache ist PHP sehr eng mit MySQL integriert. In diesem Artikel wird daher erläutert, wie Sie mithilfe von PHP eine MySQL-Lese- und Schreibtrennung erreichen.

Wie konfiguriere ich die Lese-/Schreibtrennung für MySQL-Verbindungen? Die MySQL-Datenbank ist eine der am häufigsten verwendeten relationalen Datenbanken und ihre hohe Verfügbarkeit und Leistung sind für große Websites und Anwendungen von entscheidender Bedeutung. Um den Lastausgleich und die Leistung der Datenbank zu verbessern, können wir die Lese-/Schreibtrennung der MySQL-Verbindung konfigurieren. Die Lese-Schreib-Trennung ist ein Entwurfsmuster für die Datenbankarchitektur, das die gleichzeitigen Verarbeitungsfähigkeiten der Datenbank verbessert, indem Lesevorgänge und Schreibvorgänge verschiedenen Datenbankservern zugewiesen werden. Auf diese Weise können wir die Vorteile mehrerer Server voll ausnutzen

Als leistungsstarke In-Memory-Datenbank ist Redis in täglichen Anwendungen mit Szenarien hoher Parallelität konfrontiert. Um diesen Anforderungen gerecht zu werden, bietet Redis zwei Mechanismen der Master-Slave-Synchronisation und der Lese-Schreib-Trennung, um die Leistung und Verfügbarkeit von Redis zu verbessern. In diesem Artikel werden das Prinzip und die Implementierung der Master-Slave-Synchronisation und der Lese-/Schreibtrennung von Redis ausführlich vorgestellt. 1. Der Master-Slave-Synchronisationsmechanismus von Redis Der Master-Slave-Synchronisationsmechanismus von Redis kann Daten von einem Redis-Server auf einen anderen Redis-Server synchronisieren, um eine Datensicherung und -ladung zu erreichen.

Vorteile und Herausforderungen der Verwendung von PHP zur Trennung von MySQL-Lese- und -Schreibvorgängen Da der Umfang von Webanwendungen immer weiter zunimmt und die Anzahl der Besuche zunimmt, ist die Lese- und Schreibleistung von Datenbanken zu einer zentralen Herausforderung für Entwickler geworden. Um dieses Problem zu lösen, begannen viele Entwickler, die Lese-/Schreib-Trennungstechnologie von MySQL zu verwenden, um die Datenbankverarbeitungsfähigkeiten zu verbessern. In diesem Artikel wird untersucht, wie Sie mithilfe von PHP eine MySQL-Lese- und Schreibtrennung erreichen können, und gleichzeitig die Vorteile und Herausforderungen analysieren. 1. Vorteile der MySQL-Lese-Schreib-Trennung Lastausgleich: durch Zuweisen von Lesevorgängen und Schreibvorgängen zu unterschiedlichen

MySQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das häufig in umfangreichen Webanwendungen verwendet wird. Bei der Entwicklung umfangreicher Anwendungen kommt es häufig vor, dass Lese- und Schreibanforderungen zu häufig sind, was zu einer Überlastung der Datenbank und einem Leistungsabfall führt. Um die Leistung von MySQL zu verbessern, kann die Technologie zur Lese- und Schreibtrennung verwendet werden. Unter Lese- und Schreibtrennung versteht man die Zuweisung von Lese- und Schreibanforderungen an verschiedene MySQL-Server zur Verarbeitung, wodurch die gleichzeitigen Verarbeitungsfähigkeiten und die Antwortgeschwindigkeit des Systems verbessert werden. Insbesondere können Entwickler mit vielen Lesevorgängen Lesevorgänge zum Lesen zuweisen

So verwenden Sie die Master-Slave-Replikation von MySQL, um eine Lese-/Schreib-Trennarchitektur zu implementieren. In herkömmlichen Webanwendungen sind Lese- und Schreibvorgänge normalerweise mit demselben Datenbankserver verbunden. Wenn sich Anwendungen entwickeln und das Zugriffsvolumen zunimmt, kann diese Architektur leicht zu Engpässen bei der Datenbankleistung führen. Um dieses Problem zu lösen, kann die Master-Slave-Replikation von MySQL verwendet werden, um eine Lese-/Schreib-Trennarchitektur zu implementieren. In diesem Artikel wird erläutert, wie Sie mithilfe der Master-Slave-Replikation von MySQL eine Lese-/Schreibtrennung erreichen, und entsprechende Codebeispiele bereitstellen. Vorbereitung der Umgebung Stellen Sie zunächst sicher, dass Sie die Installation durchgeführt haben

Welche Techniken gibt es, um die Lese-Schreib-Trennung und den Lastausgleich von MySQL zu erlernen? MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem, das in verschiedenen Webanwendungen und Systemen auf Unternehmensebene weit verbreitet ist. Da der Umfang der Anwendungen weiter zunimmt, werden die Lese- und Schreiblasten der Datenbank immer größer. Um die Leistung und Skalierbarkeit der Datenbank zu verbessern, sind Lese- und Schreibtrennung und Lastausgleich zu notwendigen technischen Mitteln geworden. Unter Lese- und Schreibtrennung versteht man die Trennung von Lesevorgängen und Schreibvorgängen auf verschiedenen MySQL-Servern, um die Leseeffizienz und Kapazität der Datenbank zu verbessern. Der Lastausgleich bezieht sich auf die Anzahl der
