mysql-proxy實現讀寫分離:
一:mysql主從資料庫的配置
要求:配置主
從複製: server2 主 172.25.28.2
server3 從 172.25.28.3
二:安裝配置mysql-proxy
[root@server1 /]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit -C /usr/local/
[root@server1 local]# ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy ##簡化路徑
[root@server1 local]# mkdir /usr/local/mysql-proxy/conf
[root@server1 local]# mkdir /usr/local/mysql-proxy/log
[roo[email protected] local]# vim mysql-proxy/conf/mysql-proxy.conf ##編譯配置檔案
[mysql-proxy]
daemon=true #打入後臺
user=root #
keepalive=true
plugins=proxy,admin
log-level=info #日誌級別
log-file=/usr/local/mysql-proxy/log/mysql-proxy.log ##proxy日誌地址
proxy-address=172.25.28.1:3306 #本機ip地址
proxy-backend-addresses=172.25.28.2:3306 ##backend主 注意addresses
proxy-read-only-backend-addresses=172.25.28.3:3306 ##backend從
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ##lua指令碼地址
admin-address=172.25.28.1:4041 ##proxy的管理使用者adminiphe埠
admin-username=admin
admin-password=westos
admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua #admin的lua指令碼地址;
更改lua指令碼
[[email protected] local]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
使其快速進入讀寫分離狀態
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, ##最小連線數
max_idle_connections = 2, ##最大連線數後實現讀寫分離
is_debug = false
}
開啟proxy控制
[[email protected] local]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
檢視日誌狀態:
[[email protected] mysql-proxy]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
[[email protected] mysql-proxy]#cat log/mysql-proxy.log
2017-10-21 13:15:54: (message) chassis-unix-daemon.c:136: [angel] we try to keep PID=1409 alive
2017-10-21 13:15:54: (critical) plugin proxy 0.8.5 started
2017-10-21 13:15:54: (critical) plugin admin 0.8.5 started
2017-10-21 13:15:54: (critical) network-socket.c:492: bind(172.25.28.1:3306) failed: Address already in use (98)
2017-10-21 13:15:54: (critical) chassis-mainloop.c:270: applying config of plugin proxy failed
2017-10-21 13:15:54: (critical) mysql-proxy-cli.c:599: Failure from chassis_mainloop. Shutting down.
2017-10-21 13:15:54: (message) Initiating shutdown, requested from mysql-proxy-cli.c:600
2017-10-21 13:15:54: (message) shutting down normally, exit code is: 1
2017-10-21 13:15:54: (critical) chassis-unix-daemon.c:189: [angel] PID=1380 died on signal=11 (it used 2 kBytes max) ... waiting 3min before restart
2017-10-21 13:15:54: (message) chassis-unix-daemon.c:176: [angel] PID=1409 exited normally with exit-code = 1 (it used 1 kBytes max)
2017-10-21 13:15:54: (message) Initiating shutdown, requested from mysql-proxy-cli.c:273
2017-10-21 13:15:54: (message) shutting down normally, exit code is: 1
2017-10-21 13:15:56: (message) chassis-unix-daemon.c:136: [angel] we try to keep PID=1410 alive
2017-10-21 13:15:56: (critical) plugin proxy 0.8.5 started
2017-10-21 13:15:56: (critical) plugin admin 0.8.5 started
2017-10-21 13:15:56: (message) proxy listening on port 172.25.28.1:3306
2017-10-21 13:15:56: (message) added read/write backend: 172.25.28.2:3306
2017-10-21 13:15:56: (message) added read-only backend: 172.25.28.3:3306
2017-10-21 13:15:56: (message) admin-server listening on port 172.25.28.1:4041
[[email protected] mysql-proxy]#
根據日誌可以檢視已經控制到mysql
過濾埠:
[root@server1 mysql-proxy]# netstat -anltp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 936/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1012/master
tcp 0 0 172.25.28.1:4041 0.0.0.0:* LISTEN 1410/mysql-proxy
tcp 0 0 172.25.28.1:3306 0.0.0.0:* LISTEN 1410/mysql-proxy
tcp 0 0 172.25.28.1:53135 172.25.28.2:3306 TIME_WAIT -
tcp 0 0 172.25.28.1:22 172.25.28.250:55476 ESTABLISHED 1072/sshd
tcp 0 0 172.25.28.1:53137 172.25.28.2:3306 TIME_WAIT -
tcp 0 0 :::22 :::* LISTEN 936/sshd
tcp 0 0 ::1:25 :::* LISTEN 1012/master
z在master(server1)端給zpy使用者許可權:
mysql> grant all on test.* to [email protected]'%' identified by 'zpy';
Query OK, 0 rows affected (0.00 sec)
下來我們開始檢測:
在mysql安裝lsof:
[root@server2 ~]# yum install -y lsof
重新開一臺裝置:
[[email protected] mysql10.21]# mysql -h 172.25.28.1 -u zpy -p ##通過訪問proxy,直接轉到mysql
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.71-log Source distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
如上每登陸一次,使用lsof觀察3306 埠,連線一次
[root@server2 ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 1411 mysql 11u IPv4 9514 0t0 TCP *:mysql (LISTEN)
mysqld 1411 mysql 31u IPv4 10201 0t0 TCP 172.25.28.2:mysql->172.25.28.1:53132 (ESTABLISHED)
當連線數大於2(lua指令碼中設定的時);即啟動了讀寫分離機制:
我們可以登陸admin p’roxy管理使用者檢視:
[[email protected] mysql10.21]# mysql -h 172.25.28.1 -u admin -pwestos -P 4041;
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.99-agent-admin
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> select * from backends;
+-------------+------------------+---------+------+------+-------------------+
| backend_ndx | address | state | type | uuid | connected_clients |
+-------------+------------------+---------+------+------+-------------------+
| 1 | 172.25.28.2:3306 | up | rw | NULL | 0 |
| 2 | 172.25.28.3:3306 | unknown | ro | NULL | 0 |
+-------------+------------------+---------+------+------+-------------------+
2 rows in set (0.00 sec)
MySQL [(none)]> Bye
[[email protected] mysql10.21]#
當然我們也可以使用上一篇所用的關閉I/O執行緒,然後寫入資料最後在兩端檢視不同;;
相關推薦
mysql-proxy實現讀寫分離:
一:mysql主從資料庫的配置 要求:配置主 從複製: server2 主 172.25.28.2 server3 從 172.25.28.3 二:安裝配置mysql-proxy [root@server1 /]# ta
Mysql-proxy實現讀寫分離
讀寫分離,基本的原理是讓主資料庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從資料庫處理SELECT查詢操作。資料庫複製被用來把事務性操作導致的變更同步到叢集中的從資料庫。資料庫的“寫”(寫10000條資料到oracle可能要3分鐘)操作是比較耗時
MySQL Proxy實現讀寫分離
工作圖: MySQL Proxy有一項強大功能是實現“讀寫分離”,基本原理是讓主資料庫處理寫方面事務,讓從庫處理SELECT查詢。 Amoeba for MySQL是一款優秀的中介軟體軟體,同樣可以實現讀寫分離,負載均衡等功能,並且穩定性也高於MySQL Proxy,
mysql-proxy 實現讀寫分離
實驗環境: 系統:reddhat6.5 mysql 版本:mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar mysql-proxy:mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz 下載連結 http:
mysql+mysql_proxy實現讀寫分離
mysql-_proxymysql讀寫分離需要基於主從架構實現 mysql主從配置:http://hongchen99.blog.51cto.com/12534281/1917137 mysql-proxy:用於實現mysql主從分離,基於主從架構讀寫分離存在的最大問題就是主從同步延遲 安裝my
MySQL主從(MySQL proxy Lua讀寫分離設置,一主多從同步配置,分庫分表方案)
否則 count user username 2個 ons 基礎 zxvf 路徑 Mysql Proxy Lua讀寫分離設置一.讀寫分離說明讀寫分離(Read/Write Splitting),基本的原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DE
mysql+mycat實現讀寫分離
-- sys prop lse 版本 text oss 機制 mys centos7 master slave mycat1.6 client 192.168.41.10 192.168.41.11 192.168.41.12 192.168.41.13
mysql proxy 資料庫讀寫分離字符集亂碼
mysql proxy 資料庫讀寫分離字符集亂碼 解決辦法 在對應配置後端資料庫伺服器的配置.cnf中加入如下程式碼 init-connect='SET NAME UTF8' skip-character-set-client-handshake cha
mysql proxy搭建讀寫分離
rhel 6.10 主伺服器 : 192.168.2.121 rac01 從伺服器 : 192.168.2.122 rac02 排程伺服器: 192.168.2.123 rac03 --建立目錄,
MySQL - MyCat 實現讀寫分離
前言 MyCat是一個徹底開源的,面向企業應用開發的大資料庫叢集,支援事務、ACID、可以替代MySQL的加強版資料庫.其功能有可以視為MySQL叢集的企業級資料庫,用來替代昂貴的Oracle叢集.融合了記憶體快取技術、NoSQL技術、HDFS大資料的
mysql資料庫實現讀寫分離
1.mysql讀寫分離背景 在專案中使用mysql資料庫,所有的增刪改查操作都在主庫處理,隨著查詢訪問量的增加,單庫處理的壓力驟增,為了防止主庫故障,使用一主多從的方式,通過讀寫分離,把所有的查詢處理都放到從伺服器上,減少單點故障導致整個服務掛掉的情況。 2.mysql讀寫分離的實現
mycat+mysql叢集:實現讀寫分離,分庫分表
1.mycat文件:https://github.com/MyCATApache/Mycat-doc 官方網站:http://www.mycat.org.cn/2.mycat的優點:配置簡單,靈活可實現讀寫分離可利用多種規則實現分庫分表心跳機制,自動踢出故障機組
mysql jdbc 實現讀寫分離
這種方式直接在程式碼級別實現了mysql 讀寫分離 很簡單,只需要改一下配置檔案,就搞定了,是不是很嗨? jdbc.driverClassName=com.mysql.jdbc.ReplicationDriver jdbc.url=jdbc:mysql
Docker配置mysql主從實現讀寫分離
1. 獲取mysql映象獲取映象$ sudo docker pull mysql 檢視映象$ sudo docker images REPOSITORY TAG IMAGE ID CREATED
SpringBoot2.0.3+Mybatis+Mysql+druid實現讀寫分離+事務
mysql支援一主多從,即在寫庫的資料庫發生變動時,會同步到所有從庫,只是同步過程中,會有一定的延遲(除非業務中出現,立即寫立即讀,否則稍微的延遲是可以接收的)。 當資料庫有主從之分了,那應用程式碼也應該讀寫分離了。這時候的事務就不像單個數據
MySQL+MyCat實現讀寫分離和主備熱切換
配置MyCat的schema.xml檔案 <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <tab
黃聰:Mysql主從配置,實現讀寫分離
大型網站為了軟解大量的併發訪問,除了在網站實現分散式負載均衡,遠遠不夠。到了資料業務層、資料訪問層,如果還是傳統的資料結構,或者只是單單靠一臺伺服器扛,如此多的資料庫連線操作,資料庫必然會崩潰,資料丟失的話,後果更是 不堪設想。這時候,我們會考慮如何減少資料庫的聯接,一方面採用優秀的程式碼框架,進行程式碼的優
使用spring實現讀寫分離(mysql主從複製)五:一主多從的實現
很多實際使用場景下都是採用“一主多從”的架構的,使用輪詢演算法實現,目前只需要修改DynamicDataSource即可。 1.1. 實現 import java.lang.reflect.Field; import java.util.ArrayList; impo
mysql實現讀寫分離中介軟體MySQL Proxy
MySQL Proxy是一個處於你的client端和MySQL server端之間的簡單程式,它可以監測、分析或改變它們的通訊。它使用靈活,沒有限制,常見的用途包括:負載平衡,故障、查詢分析,查詢過濾和修改等等。 MySQL Proxy就是這麼一箇中間層代理,簡單的說,MySQL Proxy就是一個連線池,
Mysql主從配置,實現讀寫分離
windows安裝 建議 xid 分布式 唯一標識 -1 在線下載 命令 進行 大型網站為了軟解大量的並發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連接操作,數據庫必然會崩潰,