mysql-proxy代理加mysql主从实现读写分离

实验环境搭建:

mysql-proxy   192.168.1.163

mysql-master  192.168.1.164 (主)

mysql-slave   192.168.1.162 (从)

配置:mysql-proxy   192.168.1.163

#yum install lua -y

lua-5.1.4-4.1.el6.x86_64(大部分都是默认安装过的)

下载mysql-proxy最新版:MySQL Proxy 0.8.1 alpha

#yum install lrzsz -y

#rz (上传mysql-proxy)

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

#mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy

#ls -l /usr/local/mysql-proxy

drwxr-xr-x. 2 7161 wheel 4096 Aug 19  2014 bin

drwxr-xr-x. 2 7161 wheel 4096 Aug 19  2014 include

drwxr-xr-x. 6 7161 wheel 4096 Aug 19  2014 lib

drwxr-xr-x. 2 7161 wheel 4096 Aug 19  2014 libexec

drwxr-xr-x. 7 7161 wheel 4096 Aug 19  2014 licenses

drwxr-xr-x. 3 7161 wheel 4096 Aug 19  2014 share

#ehho "PATH=$PATH:/usr/local/mysql-proxy/bin/">> /etc/bashrc

#export PATH=$PATH:/usr/local/mysql-proxy/bin/

#source /etc/bashrc 刷新

mysql-master  192.168.1.164 (主)

#yum install mysql mysql-server -y

#/etc/init.d/mysqld start

#mysql

mysql> create database db;

Query OK, 1 rowaffected (0.00 sec)

mysql> use db;

Database changed

mysql> show databases;

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

| Database           |

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

|information_schema |

| db                 |

| mysql              |

| test               |

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

4 rows in set(0.00 sec)

mysql>  create table test(id int);

Query OK, 0 rowsaffected (0.04 sec)

mysql>  insert into testvalues(6363);

Query OK, 1 rowaffected (0.00 sec)

mysql> grant all on db.* to [email protected]‘%‘  identified by ‘123456‘ ; 登录的用户及权限密码。

Query OK, 0 rowsaffected (0.00 sec)

mysql-slave   192.168.1.162 (从)(步骤同上和主服务器一样的配置)

#yum install mysql mysql-server -y

#/etc/init.d/mysqld start

#mysql

mysql> create database db;

Query OK, 1 rowaffected (0.00 sec)

mysql> use db;

Database changed

mysql> show databases;

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

| Database           |

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

|information_schema |

| db                 |

| mysql              |

| test               |

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

4 rows in set(0.00 sec)

mysql>  create table test(id int);

Query OK, 0 rowsaffected (0.04 sec)

mysql>  insert into testvalues(6363);

Query OK, 1 rowaffected (0.00 sec)

mysql> grant all on db.* to [email protected]‘%‘  identified by ‘123456‘ ; 登录的用户及权限密码。

Query OK, 0 rowsaffected (0.00 sec)

配置:mysql-proxy   192.168.1.163

#mysql-proxy -r 192.168.0.162:3306 -b 192.168.0.164:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &

-r 指定读服务器

-b 指定些服务器

-s 指定使用那个lua(我这们这边做的读写分离所以选rw-splitting.lua)

执行命令后提示:

2016-03-18 00:32:38: (critical) plugin proxy 0.8.5 started

# netstat -antup|grep proxy

tcp   0   0   0.0.0.0:4040          0.0.0.0:*               LISTEN      3323/mysql-proxy

测试:

#mysql -u user1 -p123456 -P 4040 -h 192.168.0.163(拿mysql-proxy做pc机测试。)

mysql> use db ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select *from test;

server default db:

client default db: db

syncronizing

+------+

| id   |

+------+

|   62 |

+------+

1 row in set (0.00 sec)

mysql> insert into test values(63);

Query OK, 1 row affected (0.00 sec)

mysql> select *from test;

+------+

| id   |

+------+

|   62 |

+------+

1 row in set (0.00 sec)

测试写数据没有问题,但是select *from test;查看不到,说明现在已经实现读写分离。

检测数据登录1.162从(只读服务器)

mysql> use db;

Database changed

mysql> select *from test;

+------+

| id   |

+------+

|   62 |

+------+

1 row in set (0.00 sec)

检测数据登录1.164从(写服务器)

mysql> use db;

Database changed

mysql> select *from test;

+------+

| id   |

+------+

|   64 |

|   63 |

+------+

2 rows in set (0.00 sec)

在1.163上面insert into test values(63);添加的63来到(1.64写服务器)。

读写分离成功。

那下面我们配置mysql主从:

mysql-master  192.168.1.164 (主)

#vim /etc/my.conf

[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=0

log-bin=mysqllog

server-id=1            添加这三行。

binlog-do-db=db

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

登录数据库:主服务器

mysql> grant all on *.* to [email protected]‘%‘ identified by ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

建个同步的账户.

mysql> drop table test; 删除test表格

#service mysqld restart

mysql-slave   192.168.1.162 (从)

#vim /etc/my.conf

[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=0

server-id=2

master-host=192.168.0.164     t添加这4行

master-user=user2

master-password=123456

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

登录数据库:从服务器

mysql> drop table test; 删除test表格

#service mysqld restart

登录:mysql-master  192.168.1.164 (主)

mysql> use db;

Database changed

mysql>  create table test (id int );

Query OK, 0 rows affected (0.03 sec)

mysql>  insert into test values(62);

Query OK, 1 row affected (0.00 sec)

mysql>  insert into test values(63);

Query OK, 1 row affected (0.00 sec)

建立test表。

登录:mysql-slave   192.168.1.162 (从)

mysql> use db ;

Database changed

mysql> select *from test;

+------+

| id   |

+------+

|   62 |

|   63 |

+------+

2 rows in set (0.00 sec)

数据已同步过来。

mysql> show slave status \G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.164

Master_User: user2

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqllog.000002

Read_Master_Log_Pos: 622

Relay_Log_File: mysqld-relay-bin.000002

Relay_Log_Pos: 514

Relay_Master_Log_File: mysqllog.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 622

Relay_Log_Space: 670

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>



时间: 2024-12-14 06:59:40

mysql-proxy代理加mysql主从实现读写分离的相关文章

Mysql主从配置+读写分离(转)

   MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl 一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz # cd cmake-3.0.0 # .

Mysql主从配置+读写分离

Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl   一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz #

关于Mysql Proxy LUA实现Mysql读写分离

关于Mysql Proxy LUA读写分离是本文要介绍的内容,主要是来了解Mysql Proxy LUA的学习内容,具体内容来看本文详解,先来下载匹配的版本: http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/ 下载最新版的二进制版本以mysql-proxy-0.8.0-linux-glibc2.3-x86-32bit为例.www.lua.org 下载lua. 1.通过mysql代理mysql-proxy来实现mysql的读写分离. MyS

mysql数据业务垂直+水平分割+主从复制读写分离

友情提示:本人第一次写技术博客,会继续完善,尽量做到图文并茂,通俗易懂,如果有什么写的不好的地方,还请大家多多提意见,您的意见将是我宝贵的资源.如果有兴趣的话,还可以一起讨论相关技术哦,亲!一定要注意软件版本哦! 联系方式 QQ:794884160 指导老师:双星  冯德勇老师  曾勇老师 一.拓扑图: 垂直+水平分割+主从复制+读写分离完整原理图: 仅说明原理,详细拓扑及参数参考本次实验拓扑图 本次试验拓扑图:(上图左侧部分) 二.实验描述: 根据业务原型先进行数据库垂直切割,然后用户数据根据

Mysql + keepalived 实现双主热备读写分离【转】

Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论 架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12,Keepalived-1.2.7环境简介:1.Master-A 192.168.1.168 (Mysql+Keepalived)2.Master-B 192.168.1.169 (Mysql+Keepalived)3.写入VIP 192.168.100 (168主,169从)4.读取VIP 192.1

Spring+Mybatis实现主从数据库读写分离

Spring+Mybatis实现主从数据库读写分离 采用配置+注解的方式. 自定义@DataSource注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME

分库分表、主从、读写分离

每天学习一点点 编程PDF电子书.视频教程免费下载: http://www.shitanlife.com/code 1. 漫谈 在进入正题之前,我想先随意谈谈对架构的拓展周期的想法(仅个人观点).首先,我认为初期规划不该太复杂或者庞大,无论项目的中长期可能会发展地如何如何,前期都应该以灵活为优先,像分库分表等操作不应该在开始的时候就考虑进去.其次,我认为需求变更是非常正常的,这点在我等开发的圈子里吐槽的最多,其中自然有 "领导们" 在业务方面欠缺整体考虑的因素,但我们也不该局限在一个观

DBA 小记 — 分库分表、主从、读写分离

前言 我在上篇博客 "Spring Boot 的实践与思考" 中比对不同规范的 ORM 框架应用场景的时候提到过主从与读写分离,本篇随笔将针对此和分库分表进行更深入地探讨. 1. 漫谈 在进入正题之前,我想先随意谈谈对架构的拓展周期的想法(仅个人观点).首先,我认为初期规划不该太复杂或者庞大,无论项目的中长期可能会发展地如何如何,前期都应该以灵活为优先,像分库分表等操作不应该在开始的时候就考虑进去.其次,我认为需求变更是非常正常的,这点在我等开发的圈子里吐槽的最多,其中自然有 &quo

搭建Mysql-proxy实现主从同步读写分离

代理服务器 Wg61 192.168.0.180 (Mysql-proxy)主服务器 Wg62 192.168.0.142 (负责写入数据)从服务器 Wg63 192.168.0.156 (负责只读数据) 实验思路: 下载Mysql-proxy,在代理服务器Wg61上安装lua语言 Wg61安装proxy,添加/etc/profile的环境变量参数 修改proxy配置文件参数,测试读写分离 搭建主从服务器,创建测试数据库表并授权用户访问权限 启动Mysql-proxy测试读写分离 测试从服务器挂

Yii框架数据库多数据库、主从、读写分离

Yii框架数据库多数据库.主从.读写分离 实现 功能描述:1.实现主从数据库读写分离 主库:写 从库(可多个):读2.主数据库无法连接时 可设置从数据库是否 可写3.所有从数据库无法连接时 可设置主数据库是否 可读4.如果从数据库连接失败 可设置N秒内不再连接 利用yii扩展实现: <?php /**  * 主数据库 写 从数据库(可多个)读  * 实现主从数据库 读写分离 主服务器无法连接 从服务器可切换写功能  * 从务器无法连接 主服务器可切换读功  * by lmt  * */ clas