日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql ——读写分离

發布時間:2025/3/19 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql ——读写分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗環境:

server1:master 172.24.54.1

server2:slave 172.25.54.2 主從復制

server3:mysql-proxy代理 172.25.54.3

此實驗在mysql的主從復制的基礎上進行, 需要配備好主從的環境

二、配置server3

[root@server3 ~]# ls mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz [root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz [root@server3 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy [root@server3 ~]# cd /usr/local/mysql-proxy/ [root@server3 mysql-proxy]# ls bin include lib libexec licenses share [root@server3 mysql-proxy]# mkdir conf [root@server3 mysql-proxy]# mkdir logs [root@server3 mysql-proxy]# vim ~/.bash_profile [root@server3 mysql-proxy]# cat ~/.bash_profile //修改第10行10 PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin [root@server3 mysql-proxy]# source ~/.bash_profile [root@server3 mysql-proxy]# vim conf/mysql-proxy.conf [mysql-proxy] user=root //運行mysql-proxy進程的用戶 proxy-address=0.0.0.0:3306 //監聽本機所有地址的3306端口 proxy-backend-addresses=172.25.54.1:3306 //backend主 注意addresses proxy-read-only-backend-addresses=172.25.54.2:3306 //backend從 proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua //lua腳本地址 log-file=/usr/local/mysql-proxy/logs/mysql-proxy //proxy日志路徑 log-level=debug //日志級別 daemon=true //打入后臺 keepalive=true //在mysql-proxy崩潰時嘗試重啟之 [root@server3 mysql-proxy]# chmod 660 conf/mysql-proxy.conf [root@server3 mysql-proxy]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua //修改最大最小鏈接數,最大鏈接兩個, 超過則會讀寫分離38 if not proxy.global.config.rwsplit then39 proxy.global.config.rwsplit = {40 min_idle_connections = 1, 41 max_idle_connections = 2,42 43 is_debug = false44 } [root@server3 mysql-proxy]# mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf //啟動mysql-proxy [root@server3 mysql-proxy]# netstat -antpl

主庫授權

mysql> grant all on *.* to 'root'@'%' identified by '5820hhXM!@#'; Query OK, 0 rows affected, 1 warning (0.37 sec)

三、測試

  • 物理機

//客戶端1 [root@foundation54 ~]# mysql -h 172.25.54.3 -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.7.17-log MySQL Community Server (GPL)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 test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | +----------+----------+ 1 row in set (0.00 sec)MySQL [(none)] insert into test.userlist values ('user2','258'); Query OK, 1 row affected (0.34 sec)MySQL [(none)] select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | +----------+----------+ 2 rows in set (0.00 sec)
  • server1

mysql> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | +----------+----------+ 2 rows in set (0.00 sec)
  • server2

mysql> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | +----------+----------+ 2 rows in set (0.00 sec)
  • server1、server2


    yum install -y lsof
//此時只有一個客戶端開啟 [root@server1 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2367 mysql 33u IPv6 11154 0t0 TCP server1:mysql->server2:51784 (ESTABLISHED) mysqld 2367 mysql 34u IPv6 11108 0t0 TCP *:mysql (LISTEN) mysqld 2367 mysql 62u IPv6 11186 0t0 TCP server1:mysql->server3:44796 (ESTABLISHED) [root@server1 ~]# [root@server2 ~]# yum install -y lsof [root@server2 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2841 mysql 32u IPv6 11743 0t0 TCP *:mysql (LISTEN) mysqld 2841 mysql 60u IPv4 11809 0t0 TCP server2:51784->server1:mysql (ESTABLISHED) [root@server2 ~]#
  • 物理機

此時增加一個客戶端鏈接——客戶端2
//客戶端2 [root@foundation54 ~]# mysql -h 172.25.54.3 -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.17-log MySQL Community Server (GPL)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 test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | +----------+----------+ 2 rows in set (0.00 sec)MySQL [(none)]> insert into test.userlist values ('user3','369'); Query OK, 1 row affected (0.15 sec)MySQL [(none)]> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | +----------+----------+ 3 rows in set (0.00 sec)
  • server1、server2

//server1、server2 mysql> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | +----------+----------+ 3 rows in set (0.00 sec) //客戶端1 MySQL [(none)]> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | +----------+----------+ 3 rows in set (0.00 sec) [root@server1 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2367 mysql 33u IPv6 11154 0t0 TCP server1:mysql->server2:51784 (ESTABLISHED) mysqld 2367 mysql 34u IPv6 11108 0t0 TCP *:mysql (LISTEN) mysqld 2367 mysql 50u IPv6 11458 0t0 TCP server1:mysql->server3:44797 (ESTABLISHED) mysqld 2367 mysql 62u IPv6 11186 0t0 TCP server1:mysql->server3:44796 (ESTABLISHED) [root@server1 ~]# [root@server2 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2841 mysql 32u IPv6 11743 0t0 TCP *:mysql (LISTEN) mysqld 2841 mysql 60u IPv4 11809 0t0 TCP server2:51784->server1:mysql (ESTABLISHED) [root@server2 ~]#
  • 物理機

此時增加一個客戶端鏈接——客戶端3
//客戶端3 [root@foundation54 ~]# mysql -h 172.25.54.3 -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.17-log MySQL Community Server (GPL)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 test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | +----------+----------+ 3 rows in set (0.00 sec)
  • server1、server2

[root@server1 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2367 mysql 33u IPv6 11154 0t0 TCP server1:mysql->server2:51784 (ESTABLISHED) mysqld 2367 mysql 34u IPv6 11108 0t0 TCP *:mysql (LISTEN) mysqld 2367 mysql 50u IPv6 11458 0t0 TCP server1:mysql->server3:44797 (ESTABLISHED) mysqld 2367 mysql 62u IPv6 11186 0t0 TCP server1:mysql->server3:44796 (ESTABLISHED) [root@server1 ~]# [root@server2 ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2841 mysql 32u IPv6 11743 0t0 TCP *:mysql (LISTEN) mysqld 2841 mysql 48u IPv6 12507 0t0 TCP server2:mysql->server3:47313 (ESTABLISHED) mysqld 2841 mysql 60u IPv4 11809 0t0 TCP server2:51784->server1:mysql (ESTABLISHED) [root@server2 ~]#

客戶端3是與從庫server2相連接的

在客戶端3上寫入,然后在server1即masetr上訪問

//客戶端3 MySQL [(none)]> insert into test.userlist values ('user4','666'); Query OK, 1 row affected (0.09 sec)MySQL [(none)]> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | | user4 | 666 | +----------+----------+ 4 rows in set (0.00 sec)
  • server1

mysql> select * from test.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 147 | | user2 | 258 | | user3 | 369 | | user4 | 666 | +----------+----------+ 4 rows in set (0.00 sec)

雖然客戶端3是與從庫server2相連接的, 但是當在客戶端3寫入時,還是寫入到了master上

yum install -y tcpdump 抓包工具, 可以在proxy端安裝,抓包查看

總結

以上是生活随笔為你收集整理的mysql ——读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。