mysql运维入门6:MySQL读写分离
Amoeba
- 以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy
- 集中想用应用的请求,根据用户事先设置的规则,将SQL请求发送到特定的数据库上执行
- 基于此可以实现负载均衡、读写分离、高可用性等需求
- 强调的是amoeba配置的方便,基于XML的配置文件,用SQLJEP语法书写规则
- 相当于一个SQL请求的路由器
- 需结合mysql的replication等机制实现副本同步等功能
- 对底层数据库连接管理和路由实现才用了可插拔机制
MySQL-Proxy
- 官方工具
- 基于lua脚本
基于程序读写分离
- 写一个库,读一个库
- 使用场景?
MySQL-Proxy读写分离

- 配置mysql读写分离
yum install mysql-server mysql mysql-devel -y
- master库的my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=
log-bin=mysql-bin
server-id =
auto_increment_offset=
auto_increment_increment=
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
replicate-do-db =all
master my.cnf
- slave库的my.cnf
[mysqld]
datadir=/var/lib/mysql/
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=
log-bin=mysql-bin
server-id =
auto_increment_offset=
auto_increment_increment=
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
master-connect-retry=
replicate-do-db =all
slave my.cnf
- 主从同步授权
- mysql-proxy安装
wget wget https://downloads.mariadb.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
useradd -r mysql-proxy
tar zxvf mysql-proxy-0.8.-linux-glibc2.-x86-64bit.tar.gz -C /usr/local
mv /usr/local/mysql-proxy-0.8.-linux-glibc2.-x86-64bit /usr/local/mysql-proxy
- 设置环境变量
export PATH=$PATH:/usr/local/mysql-proxy/bin/
echo "PATH=$PATH:/usr/local/mysql-proxy/bin"
Mysql-proxy的相关参数如下: --help-all :获取全部帮助信息; --proxy-address=host:port :代理服务监听的地址和端口; --admin-address=host:port :管理模块监听的地址和端口; --proxy-backend-addresses=host:port :后端mysql服务器的地址和端口; --proxy-read-only-backend-addresses=host:port :后端只读mysql服务器的地址和端口; --proxy-lua-script=file_name :完成mysql代理功能的Lua脚本; --daemon :以守护进程模式启动mysql-proxy; --keepalive :在mysql-proxy崩溃时尝试重启之; --log-file=/path/to/log_file_name :日志文件名称; --log-level=level :日志级别; --log-use-syslog :基于syslog记录日志; --plugins=plugin:在mysql-proxy启动时加载的插件; --user=user_name :运行mysql-proxy进程的用户; --defaults-file=/path/to/conf_file_name : 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识; --proxy-skip-profiling : 禁用profile; --pid-file=/path/to/pid_file_name :进程文件名;
- 启动mysql-proxy
mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.1.14:3306" --proxy-read-only-backend-addresses="192.168.1.15:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"
- 查看端口及测试
netstat -ntpl |grep mysql-proxy
mysql -h192.168.1. -uadmin -p -P4041
select * from backends;


- 使用4040端口进行数据写入和测试即可
问题:
mysql-proxy成为单点,解决方案?
mysql运维入门6:MySQL读写分离的更多相关文章
- mysql运维入门2:主从架构
mysql主从原理 随着访问量的增加,数据库压力的增加,需要对msyql进行优化和架构改造,优化方法有: 高可用 主从复制 读写分离 拆分库 拆分表 原理 异步复制过程 master开启bin-log ...
- mysql运维入门4:索引、慢查询、优化
MySQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都是以B-树的形式保存 如果没有索引,执行查询时,MySQL必须从第一个记录开始整表扫描,知道查询到符合要求的记录,记录越大,花费时 ...
- mysql运维入门1:基础及备份还原
存储引擎 myisam 表强调的是性能 执行速度比innodb类型更快 不提供事务支持 如果执行大量的select操作,是首选 支持表锁,不支持行锁 innodb 提供事务支持.外键等高级数据库功能 ...
- mysql运维入门5:MySQL+kepalived高可用架构
keepalive 类似3/4/7层交换机制的软件,也就是平时说的第三层.第四层.第七层交换 作用是检测web服务器的状态,如果有一台web服务器.mysql服务器宕机.或工作出现故障,keepali ...
- mysql运维入门3:MyISAM和InnoDB
myisam 5.1的默认存储类型 基于传统的ISAM类型,Indexed Sequential Access Method,有索引的顺序访问方法 存储记录文件的标准方法 不是事务安全,不支持外键 表 ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- (转)linux运维必会MySQL企业面试题
linux运维必会MySQL企业面试题 老男孩教育运维班全体学员MySQL必会企业面试题最实战.最细致.最落地的运维实训基地,老男孩教育连续多年国内平均就业工资最高! 数据库的重要性是所有技术里最核 ...
- mysql运维必会的一些知识点整理
(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...
- 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构
在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...
随机推荐
- 获取 保存 系统信息 [Windows]
出处:https://www.technig.com/find-windows-10-system-information/ 在“运行”里,运行 msinfo32. System Informatio ...
- js 函数对象的继承 inherit 带 插件完整解析版[helpers.js]
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS的对象继承方法 需求分析: 1. ...
- 谈谈JavaScript中的变量、指针和引用
1.变量 我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单 ...
- axis2 411
返回411加个这个就行了 _operationClient.getOptions().setProperty(HTTPConstants.CHUNKED, false); 本文转自 cd1989929 ...
- python(random 模块)
一.Random 模块 注意:random() 是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法. 1.random.random() 返回随机生成的一个 ...
- 题目分享G 二代目
题意:有n组数,每组包含两个数,问在每组只能取一个的前提下能组成的最长的从1开始的连续自然数有几个? 分析:刚学了差分约束系统,很容易往转换成图的方向去想 将他读入的这n组数当成边读入 很容易会得到一 ...
- shell之路 shell核心语法【第一篇】shell初识
shell简介 1.Shell是Unix的脚本语言,是与 Unix/Linux 交互的工具,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度 2.Shell是系统命令+程序逻辑的 ...
- python安装pycrypto库
使用pycharm时安装pycrypto库,一直安装不上,提示安装成功,退出去一看,依旧没有 最后选择了pip安装,但一直报错(Microsoft Visual C++ 9.0 is required ...
- git&&SourceTree使用总结
git&&sourceTree操作学习 基本操作 commit 提交 pull 更新代码 push 推送代码 fetch 抓取代码 Branch 新建分支 merge 合并代码 Sta ...
- SpringCloudStream学习(三)RabbitMQ中的惰性队列
从RabbitMQ 3.6.0之后,有了 Lazy Queues 的概念-一个会尽早的将队列中的内容移动到磁盘的队列,并且只有当消费者需要的时候,才会将它们加载到内存中 惰性队列设计的一个主要 ...