使用代理软件mysql-proxy实现mysql的读写分离

使用代理软件mysql-proxy实现mysql的读写分离
实验:
172.16.1.10
客户端请求mysql-proxy,判断是写还是读
建立两次连接
是远程连接,要授予远程连接的权限
>use db;
>create table test (id int);
>insert into test values (10),(100);
>grant all on db.* to [email protected]‘%‘ identified by ‘123‘;
在打开一个终端设置从服务器
和主服务器一样,只是值不一样
mysql
>create database dn;
>use db
>create table test (id int);
>insert into test values (10),(200);
>grant all on *.* to [email protected]‘%‘ identified by ‘123‘;    密码和主服务器必须一样

指定一个代理服务器;172.16.1.10
测试
mysql -h 172.16.1.11 -u proxy -p123
mysql -h 172.16.1.12 -u proxy -p123
使用lva的脚本语言,把lva的解释起和lvadevell装上,day4里面有mysql-proxy
把两个包装上 rpm
mysql-proxy-0.8.0*.rpm
rpm -ivh lua-5.0.2-1.el5.rf.i386.rpm
rpm -ivh lua-devel-5.0.2-1.el5.rf.i386.rpm
tar zxvf mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz -C /usr/local/src

cp -r mysql-proxy-0.8.0-linux-rhel5-x86-32bit /usr/local/mysql-proxy

cd /usr/local/mysql-proxy/share/doc/mysql-proxy
vim rw-splitting.lua
36 if not proxy.global.config.rwsplit then
37         proxy.global.config.rwsplit = {        
38                 min_idle_connections = 1,    最小空闲线程连接
39                 max_idle_connections = 1,    最大线程连接,基本没用

mysqlproxy的启动方法
cd bin
./mysql-proxy --help-proxy    查看帮助
mysql-proxy
--proxy-read-only-backend-addresses=172.16.1.12:3306
--proxy-backend-addresses=172.16.1.11:3306
--proxy-lua-script=/usr/share/doc/mysql-proxy/rw-splitting.lua --daemon
--user=nobody --log-level=debug --log-use-syslog
    -P    决定mysql用那个接口进行连接,指定mysql-proxy工作的时候允许访问的IP和接口    模拟成mysql,端口用3306,要保证自己本地的mysql不要运行,打开后端口冲突,mysql-proxy运行不起来
    -r    只读的后端服务器    172.16.1.12
    -b    读写的后端服务器    172.16.1.11
    -s    工作的时候指定脚本的位置和名称,默认是没有的
    版本小于5.1.12,会出现bug,要加上-bug
    --deamon    以一个服务的形式去启动
        什么算服务:被定义为服务的进程是没有终端的,不依赖于用户的终端。终端关掉,服务还是可以正常运行的

运行mysql-proxy
/usr/local/proxy/bin/mysql-proxy
-P 172.16.1.10:3306 -b 172.16.1.11:3306 -r 17.16.1.12:3306 -s
/usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon &

改变:# ulimit -n 10240    临时改变,永久改变,要改PAM
        (ulimit -n 1
          cat /etc/passwd /etc/shadow
          会出错)
测试:
模拟客户端,利用mysql命令往mysql-proxy发起连接
mysql -h 192.168.1.15 -u proxy -p123        
>use db;
>select * from test;
>

另一个标签
mysql -h 192.168.1.15 -u proxy -p123        
>use db;
>select * from test;
>
可以增大连接数目
>update test set id=300;    改变数据
然后可以把140  14 搭建成主从的模式

ab复制(主从复制)

可以让mysql实现:
1.数据的备份(主服务器的数据全部同步到从服务器)
2.可以负载均衡减小主服务器的压力
3.真正实现mysql的读写分离

配置方法
主服务器:
1.cat /etc/my.cnf
[mysqld]
log-bin=mysql_bin
server-id=1    不允许重复
2.grant replication slave on *.* to ‘slave‘@‘172.16.1.10‘ identified by ‘king123‘; 授权,指定从服务器只能复制binlog,从服务器的ip
mysql>show master status查看主服务器的运行状态
      
在从上使用slave用户登录测试:
3.mysql -u slave -p123 -h 192.168.1.14
4.mysqldump --all-database > db_backup.sql (主服务执行全备)
5.mysql> show master status;找到当前的日志文件和位置号

从:(可以不用开启binlog功能)
6.mysql -uroot -p123 < db_backup.sqlb 将主服务的全备脚本拷贝到主服务器并且导入主服务器
7.cat /etc/my.cnf      
[mysqld]
server-id=2    和主服务器不重复就可以
master-host=192.168.1.131 主服务器ip
master-user=slave   登录时账号
master-password=123 mysql读取配置文件时,知道是以从服务器的形式运行

8.从服务器从主服务器读取binlog产生问题时
mysql -u root -p
mysql> change master to
mysql> master_host=‘192.168.1.131‘,
mysql> master_user=‘slave‘,
mysql> master_password=‘123‘,
mysql> master_log_file=‘主服务器日志文档‘,
mysql> master_log_pos=更新版本号;

9.启动从服务器
mysql> slave start  或者是start slave,启动从服务器
mysql>show slave status 查看从服务器状态

时间: 2024-10-05 04:19:17

使用代理软件mysql-proxy实现mysql的读写分离的相关文章

使用mysql proxy对数据库进行读写分离

服务器安排如下: 192.168.100.128 主 192.168.100.129 从 192.168.100.130 mysql-proxy 1.在100.130中下载安装mysql-proxy tar -zxvf 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 2.配置环境变量 LUA_PATH="/usr/local/m

MySQL Proxy实现数据的读写分离

做MySQL读写分离实验之前,先要搭建MySQL主从复制,可以参考我之前的两篇文章: MySQL主从配置:http://msiyuetian.blog.51cto.com/8637744/1697288 部署搭建分层次LAMP架构(最后一章节):http://msiyuetian.blog.51cto.com/8637744/1740236 实现了主从复制后,下面我们进行读写分离的安装与配置.环境说明: Linux发行版本:centos 6.7 x86_64 (三台) Hostname IP 备

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepal

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

点击链接加入群[Dubbo技术交流2群]:https://jq.qq.com/?_wv=1027&k=46DcDFI 一.环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK版本:jdk1.7.0_45 MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz MyCat节点IP:192.168.1.203      主机名:edu-mycat-01  主机配置:4核CPU.4G内存 MySQL版本:

MySQL Proxy 实现 MySQL 读写分离提高并发负载

工作拓扑: MySQL Proxy有一项强大功能是实现"读写分离",基本原理是让主数据库处理写方面事务,让从库处理SELECT查询. Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且稳定性也高于MySQL Proxy,有兴趣的可以测试一下. 环境描述: 操作系统:CentOS6.3_x64 主服务器Master:192.168.0.202 从服务器Slave:192.168.0.203 调度服务器MySQL-Proxy:192.168.

使用MySQL Proxy解决MySQL主从同步延迟

MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制 是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载.网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的.短在1秒内,长则几秒.几十秒甚至更长都有可能. 由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也是

[转载] 使用MySQL Proxy解决MySQL主从同步延迟

原文地址:http://koda.iteye.com/blog/682547 MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载.网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的.短在1秒内,长则几秒.几十秒甚至更长都有可能. 由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又

mysql数据库多种备份及读写分离搭建

数据库的版本 1.社区版 2.企业版 3.集群版 数据库的安装 1.     专用软件包管理器(二进制) deb .rpm等 mysql                 MySQL客户端程序和共享库 mysql-server            MySQL服务器需要的相关程序 2.     源代码软件包(编译安装) configure.cmake 数据库常用的配置选项 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    ----指定残可安装路径(默认的就是/u

mysql集群:主从服务器读写分离

mysql集群架构方式很多,根据不同的需求做不一样的架构,简单一点的就是mysql的replication,也就是Mysql的复制功能,模式有:master-slaves,master-slaves-slaves,master-master-slaves等可以有多个分层,那么现在我所要说的是master-slaves的模式(其他的模式原理基本都一样),然后再通过mysql官方提供的Mysql-proxy实现读写分离,达到的效果. 环境: 主机::192.168.1.109,slave1:192.