Heim Datenbank MySQL-Tutorial MySQL Proxy快速实现读写分离以及负载均衡

MySQL Proxy快速实现读写分离以及负载均衡

Jun 07, 2016 pm 05:34 PM
读写分离

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实现读写分离高可用性

linux

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann in React Query eine Trennung von Lesen und Schreiben in der Datenbank erreicht werden? Wie kann in React Query eine Trennung von Lesen und Schreiben in der Datenbank erreicht werden? Sep 26, 2023 am 09:22 AM

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

Eine kurze Analyse, wie PHP + MySQL die Lese- und Schreibtrennung realisiert Eine kurze Analyse, wie PHP + MySQL die Lese- und Schreibtrennung realisiert Mar 21, 2023 pm 03:49 PM

​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 eine MySQL-Verbindung? Wie konfiguriere ich die Lese-/Schreibtrennung für eine MySQL-Verbindung? Jun 30, 2023 am 11:39 AM

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

Der Master-Slave-Synchronisations- und Lese-Schreib-Trennmechanismus von Redis Der Master-Slave-Synchronisations- und Lese-Schreib-Trennmechanismus von Redis May 11, 2023 pm 03:22 PM

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 -Schreibzugriff Vorteile und Herausforderungen der Verwendung von PHP zur Trennung von MySQL-Lese- und -Schreibzugriff Mar 04, 2024 pm 03:48 PM

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

So verbessern Sie die Leistung durch die Verwendung der MySQL-Lese-/Schreibtrennung So verbessern Sie die Leistung durch die Verwendung der MySQL-Lese-/Schreibtrennung May 11, 2023 pm 12:42 PM

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 Architektur mit Lese-/Schreibtrennung zu implementieren So verwenden Sie die Master-Slave-Replikation von MySQL, um eine Architektur mit Lese-/Schreibtrennung zu implementieren Aug 02, 2023 am 09:21 AM

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? Welche Techniken gibt es, um die Lese-Schreib-Trennung und den Lastausgleich von MySQL zu erlernen? Aug 02, 2023 pm 07:27 PM

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

See all articles