mysql读写分离(mysql-proxy-0.85)

2023-11-18

 

读写分离代理172.25.11.1

主 172.25.11.2

从库172.25.11.3

从库172.25.11.4

 

proxy端(代理端)

yum install -y gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig* libevent* glib*

下载 mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

https://downloads.mysql.com/archives/proxy/

tar -zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

cp mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy -rp

mkdir /usr/local/mysql-proxy/lua /usr/local/mysql-proxy/logs

分别创建脚本和日志存放目录

cp share/doc/mysql-proxy/rw-splitting.lua ./lua  #复制读写分离配置文件

cp share/doc/mysql-proxy/admin-sql.lua ./lua   #复制管理脚本

vim conf/mysql-proxy.conf

[mysql-proxy]
user=root
admin-username=admin
admin-password=123456
proxy-address=172.25.11.1:4040
proxy-read-only-backend-addresses=172.25.11.3,172.25.11.4
proxy-backend-addresses=172.25.11.2
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua
#admin-lua-script=/usr/local/mysql-proxy/lua/admin.lua
log-file=/var/log/mysql-proxy.log
log-level=info
daemon=true
keepalive=true

 

 

chmod -R 775 /usr/local/mysql-proxy

chown -R mysql:mysql /usr/local/mysql-proxy

cd /usr/local/mysql-proxy

 

vim ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin

source ~/.bash_profile
 

修改mysql-proxy的读写分离脚本的配置

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

修改为最小一个最大1个客户端连接可以实现读写分离

                min_idle_connections = 1,
                max_idle_connections = 1,

开启防火墙端口设置

echo  '-A INPUT -m state --state NEW -m tcp -p tcp --dport 4040 -j ACCEPT' >> /etc/sysconfig/iptables

注:mysql-proxy的服务端口默认为4040

 

mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf

netstat -antpl

 

 

create user root@'%' identified by 'Yakexi+007';

grant replication client on *.* to root@'%';

 

./mysql-proxy --help-proxy

[mysql-proxy]

proxy-address=0.0.0.0:3306  #也可以定义为任何网段的代理地址

 

 

grant insert,update,select  on *.* to wxh@'%'   identified by 'Yakexi+007';

create table usertb ( username varchar(10) not null, password varchar(15) not null);

客户端的测试

foundation:  

mysql -uwxh -pYakexi_007 -h 172.25.11.4 --port=3306

create table usertb ( username varchar(10) not null, password varchar(15) not null);

insert into usertb values ('shabi','123');

lsof -i:3306

要安装 yum install mariadb -y

mysql -uroot -pYakexi_007 -h172.25.11.1 --port=4040

 

遇到的问题

[root@foundation11 ~]# mysql -uroot -pYakexi_007 -h172.25.11.1 --port=4040
ERROR 1105 (HY000): #07000MySQL Proxy Lua script failed to load. Check the error log.

 

在代理端检查脚本是否存在

[root@server1 mysql-proxy]# ll /usr/local/mysql-proxy/lua/rw-splitting.lua
ls: cannot access /usr/local/mysql-proxy/lua/rw-splitting.lua: No such file or directory

[root@server1 mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua ./lua
[root@server1 mysql-proxy]# cp share/doc/mysql-proxy/admin-sql.lua ./lua

即可

 

 

测试:

写测试

创建数据库和表,这时的数据只写入主mysql,然后再同步从slave

关掉slave就不能写入

 

 

读测试

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| proxy_test         |
| sys                |
| te                 |
| test1              |
+--------------------+
7 rows in set (0.01 sec)

MySQL [(none)]> use test1;

MySQL [test1]> create table user (number INT(10),name VARCHAR(255));
Query OK, 0 rows affected (0.35 sec)

MySQL [test1]> insert into user values(01,'zhangsan');
Query OK, 1 row affected (0.20 sec)

MySQL [test1]> insert into user values(02,'lisi');
Query OK, 1 row affected (0.32 sec)

登陆主从mysql查看新写入的数据

登陆到mysql-proxy,查询数据,看出能正常查询

在刚才创建数据时,代理端会显示

 

 

这时出现了新的问题

[root@server1 ~]# mysql -uroot -pYakexi_007 -h172.25.11.1 --port=4040
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 108
Server version: 5.7.24-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> use test1;
No connection. Trying to reconnect...
Connection id:    109
Current database: *** NONE ***

Database changed

这时客户端也出现了问题

ERROR 2013 (HY000): Lost connection to MySQL server during query

vim /etc/my.cnf

max_allowed_packet = 500M

重起mysql-proxy就可以

然后继续查看代理端的数据库发现错误

发现在代理端不能使用命令

mysql -uroot -pYakexi_007 -h172.25.11.1 --port=4040

 

然后关闭两个slave

 

如果客户端查询失败,则实现了读写分离。

在客户端

mysql -uroot -pYakexi_007 -h172.25.11.1 --port=4040


多开几个shell

发现问题,开了十几个shell仍然可以查询到。

解决:

其实并没有错 只需要lsof -i:3306查看数据走向即可

insert into usertb values ('shabi','123');

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql读写分离(mysql-proxy-0.85) 的相关文章

随机推荐

  • MySQL之事务与引擎

    目录 一 事物 1 事务的概念 2 事务的ACID特点 3 事务之间的相互影响 4 Mysql及事务隔离级别 四种 1 查询会话事务隔离级别 2 查询会话事务隔离级别 3 设置全局事务隔离级别 4 设置会话事务隔离级别 5 事务控制语句 6
  • ssm+mysql+小程序+ssm智慧社区管理系统 毕业设计源码101635

    基于SSM的智慧社区管理小程序 摘 要 随着互联网大趋势的到来 社会的方方面面 各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去 而其中最好的方式就是建立网络管理系统 并对其进行信息管理 由于现在网络的发达 社区管理通过网
  • Vue JeecgBoot 下拉选使用数据字典,设置默认值,默认选中第一个值 - 附完整示例

    效果 一 使用步骤 1 导入依赖文件 import initDictOptions filterDictText from components dict JDictSelectUtil 2 声明变量 data return dataVal
  • 巧妙利用unbuffer实时写入

    大家好 我是早九晚十二 目前是做运维相关的工作 写博客是为了积累 希望大家一起进步 我的主页 早九晚十二 场景描述 我们常常在写脚本时 会涉及到一些比较耗时的操作 当要输出日志时 没办法实时获取命令的进度 进而不好判断脚本的流程 这时 就引
  • C# 画坐标,graphics,C# 坐标自定义X轴、Y轴

    先看效果 其中X轴 Y轴都是可以自定义的 可以从零开始 也可以从任意位置开始 看坐标的画法 下面通过五个函数 来分别说明 注意这里坐标的定位是通过外层的Panel来实现的 using System using System Collecti
  • 强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结

    目录 基本概念 Q learning VS Sarsa DQN VS PPO 区分on policy 与 off policy 一些总结 基本概念 如果要学习的 agent 跟和环境互动的 agent 是同一个的话 这个叫做on polic
  • Linux 查看磁盘容量情况

    查看整体的磁盘容量 df h 详细的磁盘占用情况 du max depth 1 h h是用来把容量显示成易看的方式 max depth 查看的文件的最大深度 进查询某个文件夹的容量 du sh s 和 max depth 0等效
  • 等保2.0介绍

    等保2 0全称网络安全等级保护2 0制度 是我国网络安全领域的基本国策 基本制度 等级保护标准在1 0时代标准的基础上 注重主动防御 从被动防御到事前 事中 事后全流程的安全可信 动态感知和全面审计 实现了对传统信息系统 基础信息网络 云计
  • Jenkins以root用户运行

    Jenkins安装完成后默认会创建一个jenkins的用户 并以jenkins用户运行 在我们通过jenkins编写一些命令的时候容易出现权限不足的提示 permision denied 通过为jenkins工作区赋予777的权限以后 也可
  • 图像处理——边缘检测

    边缘检测 一 边缘检测的目的 二 边缘检测算子有哪些 三 Canny算子 3 1 简述Canny算子 3 2 简述下Canny的计算过程 四 sobel算子 4 1 简述一下sobel算子 五 深度学习下的边缘检测 5 1 HED 整体嵌套
  • opencv-基于颜色的目标检测(含代码)

    先推荐下自己的公众号 Joe学习笔记 公众号上会不定期更新一些文章 主要是自己平时学到的知识 内容包括自动驾驶 计算机视觉 人工智能和机器人技术 我会第一时间把文章更新在公众号上 欢迎大家订阅和分享 文章是从公众号搬过来的 邀请朋友在公众号
  • 带你三分钟了解算力

    导读 数字经济时代 算力是新生产力 是支撑数字经济发展的坚实基础 加快发展算力 是我国打造数字经济新优势 构建 双循环 新发展格局 提升国家整体竞争力的重要保障 一 何为算力 算力是设备通过处理数据 实现特定结果输出的计算能力 常用FLOP
  • abp去掉AbpUser中的Name,Surname

    abp是国外的框架 默认的框架中的AbpUser表中的Name和Surname是分开的 这不符合国情 可以先去掉 1 在User类中重写Name和Surname 并设置为私有 2 在DbContext类中 重写OnModelCreating
  • 使用ThreadPoolTaskExecutor解决高并发性的问题

    ThreadPoolTaskExecutor 使用ThreadPoolTaskExecutor解决高并发性的问题 1 创建一个ThreadPoolTaskExecutor 2 往线程里面添加FutureTask对象 3 然后等待Future
  • VMware虚拟机扩容 磁盘分配过慢 直接添加物理磁盘 挂载ntfs mount: unknown filesystem type ‘ntfs’解决办法

    场景描述 在VMware虚拟机的使用过程中 有一些较大的文件需要存储 准备给虚拟机扩容 宿主机有一块机械硬盘 已格式化为两个ntfs格式的分区 我们准备用第二个分区给虚拟机扩容 且分区中已经存有文件 备份文件和虚拟机分配磁盘空间 这两个步骤
  • darknet+yolo4的windows下图片验证码识别一:环境编译和运行

    原创来自本人的公众号 阿嚏个技术 公众号文章地址 darknet yolo4的windows下图片验证码识别 之一 环境编译和运行 目前有很多采取深度学习的方式 进行图片验证码的文字识别 然后实现打码功能 本文采用darknet yolo4
  • Linux服务篇-FTP-文件传输协议

    一 FTP 文件传输协议 1 介绍 FTP服务器 File Transfer Protocol Server 是在互联网上提供文件存储和访问服务的计算机 它们依照FTP协议提供服务 是 TCP IP 协议组中的协议之一 FTP是用来传输文件
  • 【实战】淘宝电商用户行为分析——SQL

    目录 一 项目背景 1 1分析目的 1 2分析思路 二 数据来源 清洗 2 1数据集介绍 2 2数据清洗 2 2 1 检查是否存在重复值 2 2 2 检查是否存在缺失值 2 2 3 一致化处理 对timestamp 2 2 4异常值处理 时
  • 微信小程序使用setData方法修改data中对象或数组的属性值

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 微信小程序使用setData方法修改data中对象或数组的属性值 使用微信小程序开发时 涉及到data的修改一般使用微信官方推荐的setDat
  • mysql读写分离(mysql-proxy-0.85)

    读写分离代理172 25 11 1 主 172 25 11 2 从库172 25 11 3 从库172 25 11 4 proxy端 代理端 yum install y gcc gcc c autoconf automake zlib li