安装mysql-proxy实现mysql读写分离
admin
2023-04-29 04:22:10
0

一. 环境描述

操作系统版本:centos 7.2

主服务器:192.168.0.72  node2

从服务器:192.168.0.73  node3

调度服务器MySQL-Proxy192.168.0.71   node1

二. 配置mysql主从

2.1 安装mysql

node2node3都需安装

[lirou@node2 ~]$ sudo yum -y install mariadb-server

2.2 修改配置文件

master配置文件:

skip_name_resolve

innodb_file_per_table

server_id = 1

log_bin = /var/lib/mysql/bin_log

slave 配置文件:

skip_name_resolve

innodb_file_per_table

server_id = 2

log_bin = /var/lib/mysql/bin_log

read_only

 

注意:master服务器一定要开启二进制日志,因为主从复制依赖与master。而且主从服务器的server_id一定要不同。

2.3 启动服务

node2node3都要启动服务

[lirou@node3 ~]$ sudo systemctl start mariadb

2.4 配置主从服务器

Master服务器上

分配slave主机访问master的权限账号:

[lirou@node2 ~]$ mysql -uroot

MariaDB [(none)]> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON  *.* TO 'repl_user'@'192.168.0.%' IDENTIFIED BY 'repl_pass';

 

查看master上二进制日志位置

MariaDB [(none)]> show master status ;

+---------------+----------+--------------+------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| binlog.000001 |      425 |              |                  |

+---------------+----------+--------------+------------------+

slave服务器上

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.72', MASTER_USER='repl_user', MASTER_PASSWORD='repl_pass', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=425;

mysql> slave start;    # 开启从同步

mysql> show slave status \G;  #查看同步是否成功

安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离

三. 配置mysql-proxy

3.1 下载安装包

~]# wget wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

~]# sudo  tar xf https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local

~]# mv /usr/local/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy

3.2 配置mysql-proxy

创建lua脚本目录

~]# cd /usr/local/mysql-proxy

mysql-proxy]# mkdir lua

创建日志目录

Mysql-proxy]# mdkir logs

拷贝读写分离配置文件和管理脚本到lua脚本目录

mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua  ./lua

Mysql-proxy]# cp share/doc/mysqp-proxy/admin-sql.lua  ./lua

创建配置文件

~]# vim /etc/mysql-proxy.conf

[mysql-proxy]

user = root  运行代理的用户

admin-username = mysql_proxy_user  # mysql-proxy连接后端mysql服务器的用户

admin-password = mysql_proxy_pass  # mysql-proxy连接后端mysql服务器的密码

proxy-address = 192.168.0.71:3307    # mysql-proxy监听的IP和端口,端口默认4040

proxy-read-only-backend-addresses = 192.168.0.73  #只读服务

proxy-backend-addresses = 192.168.0.72           # 读写服务器

proxy-lua-script = /usr/local/mysql-proxy/lua/rw-splitting.lua  # 指明读写分离配置文件

admin-lus-script = /usr/local/mysql-proxy/lua/admin-sql.lua   # 管理脚本路径

log-file = /usr/local/mysql-proxy/logs/mysql-proxy.log     # 日志文件路径

log-level = debug   #日志记录等级

daemon = true     # 程序是否在后端启动

keepalive = true    # mysql-proxy崩溃后,尝试重启

修改读写配置文件

vim /usr/local/mysql-proxy/lua/rw-splitting.lua

if not proxy.global.config.rwsplit then

 proxy.global.config.rwsplit = {

  min_idle_connections = 1,  #默认超过4个连接数时,才开始读写分离,改为1

  max_idle_connections = 1,  #默认8,改为1

  is_debug = false

 }

启动mysql-proxy

~]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离 

mysql上创建mysql-proxy连接的用户

mysql> GRANT ALL ON *.* TO 'mysql_proxy_user'@'192.168.0.%' IDENTIFIED BY 'mysql_proxy_pass';

 

四. 测试读写分离

测试写

mysql -umysql_proxy_user -pmysql_proxy_pass -h292.168.0.71 --port=3307

mysql> create databases master;

mysql> create table test (id int);

mysql> insert into master.test value (1);

 

查看从服务器:

安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离 

可以看到从服务器同步了

测试读

主服务器查询语句条数

安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离 

从服务器查询语句条数

安装mysql-proxy实现mysql读写分离

安装mysql-proxy实现mysql读写分离

连接mysql-proxy执行一条读语句

安装mysql-proxy实现mysql读写分离

主服务器查询语句条数

安装mysql-proxy实现mysql读写分离

从服务器查询语句条数

安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离 

我们可以看到查询语句是在从服务器上执行。

 


相关内容

热门资讯

烈焰熊熊,堪比“原子弹”,欧洲... 据美国有线电视新闻网(CNN)7月29日报道,席卷法国西南部的大片野火燃烧得如此猛烈,以至于形成了一...
外交部:对日本熊本县地震遇难者... 据凤凰卫视报道,针对日本熊本县发生强震造成人员伤亡,中国外交部发言人毛宁7月29日在例行记者会上表示...
高铁喧哗被劝阻后叫嚣全家体制内... “女子高铁喧哗被劝阻后叫嚣全家体制内”一事迎来官方通报。据新京报报道,7月29日,辽宁北票市公安局发...
广东专业蓝牙耳机定制厂家推荐,... 在珠三角腹地,广东早已成为全球蓝牙耳机产业链的“心脏地带”。从深圳华强北的声学元件批发,到东莞、惠州...
格雷厄姆葬礼变地缘竞价场!两大... 有些葬礼,送别的是逝者;有些葬礼,演的却是活人最现实的政治博弈。当地时间7月28日,美国老牌鹰派参议...
一道小学数学题难住3名医学博士... 3名不同学校的博士同做一道数学题,谁最厉害?近日,一陕西网友发布的视频引发热议。29日,视频发布者“...
华为全新“小艺任务”亮相:整合... 7月29日,在华为鸿蒙电脑新品技术沟通会上,终端云服务小艺业务部总裁贾永利宣布,小艺将迎来“从对话到...
广西日报特稿《王的猜想》火了,... 澎湃新闻记者 蒋子文 实习生 汤煜炜为应对外界购买纸质版特稿《王的猜想》的热情,《广西日报》宣布紧急...
月租20元内!2026年平价云... 不少手游玩家、账号运营从业者挑选云手机时,首要诉求就是低价够用,想要控制每月支出在20元以内,同时兼...
诺奖得主如何看待王虹境遇?“我... 中村修二(2014年诺贝尔物理学奖得主)【导读】近日王虹与邓煜双双获得2026年菲尔兹奖,成为了首批...