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

第三块:测试MySQL-proxy读写功能

1:客户端测试写功能:

[root@linuxidc61 ~]# mysql -u user1 -p123456 -P4040 -h 192.168.1.6:62

mysql> use db;

c9b8943d47cba2f3b8c5a72585b873b2.png

#select * from test;的时候,看到了6363,表示mysql-proxy将查看请求连接到linuxidc63。mysql-proxy指定了linuxidc63只具有写的功能,所以当你插入一天新的数据的时候,你就会查看到你所插入的内容。注:出现的第一次数据都是只写的数据,不会是read-only的。

2:客户端测试读功能:再打开一个客户端测试一下读。

[root@linuxidc61~]# mysql -uuser1 -p123456 -P4040 -h 192.168.1.62

mysql> use db;

b6f74d16d4f7eafe916d5bec088d026d.png

#这里elect * from test;的时候,看到了44,表示mysql-proxy将查看请求连接到linuxidc64。

mysql> insert into test values(6363);

mysql> select * from test; #现在是读的动作,看不到63数据的。

5f67bed9010109410db42688f363cbd4.png

#mysql-proxy指定了linuxidc64只具有读的功能,所以当你插入一个新的数据的时候,你再次查看的时候还是6464,说明你的数据是写不进去的。

3:客户端登录查看:

[root@linuxidc61~]# mysql –uuser1 -p123456 -P4040 -h 192.168.1.62

mysql> show processlist;

4287611546b36d89947845185d4b53ed.png

列名称

作用

id

服务的一个标识

user

显示当前用户,如果不是 root ,这个命令就只显示你权限范围内的 sql 语 句。

host

显示这个语句是从哪个 ip 的哪 个端口上发出的。可以用来追踪出问题语句的用户。

db

显示这个进程目前连接的是哪个数据库。

command

显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。

time

显示这个进程目前连接的是哪个数据库。

state

显示使用当前连接的sql语句的状态,很重要的列,state只是语句执行中的某一个状态,一个sql语句,以查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成。

info

显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。

2:mysql+proxy+mysql主从实现读写分离

1:linuxidc63作为mysql主:

[root@linuxidc63 ~]# cat /etc/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=0

log-bin=mysqllog

server-id=1

binlog-do-db=db

[root@linuxidc63~]# mysql

mysql> grant all on *.* to user2@'%' identified by '123456';#创建一个主从同步用户

mysql>use db;

mysql>drop table test;#为了保持数据完整性,删除删一个表。

[root@linuxidc63~]# service mysqld restart

2:linuxidc64 mysql 从配置

[root@linuxidc64 ~]# cat /etc/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=0

server-id=2

master-host=192.168.1.63

master-user=user2

master-password=123456

[root@linuxidc64~]# mysql

mysql> grant all on *.* to user2@'%' identified by '123456';# 创建一个主从同步用户

mysql>use db;

mysql>drop table test;#为了保持数据完整性,删除删一个表。

[root@linuxidc64 ~]# service mysqld restart

3:测试主从同步:

1)linuxidc63服务器测试同步数据:

[root@linuxidc63 ~]# mysql

mysql> use db;

mysql> create table test (id int );

mysql> insert into test values(63);

87fc7104f3d13ae24a1a06d26de25b8a.png

2)登录linuxidc64查看63同步过来的数据:

[root@linuxidc64 ~]# mysql

mysql> use db;

eff85a3bede7049a43ab40c722604316.png

4:客户端linuxidc61:测试使用mysql-proxy 能否读到同样的数据。

分析:在客户端上利用普通MySQL用户从mysql-proxy上登录,然后插入数据,看看MySQL的主从上是否显示。

[root@linuxidc61~]# mysql -uuser2 -p123456 -P4040 -h192.168.1.62

mysql>use db;

mysql> select * from test;#可以查看到test中的63记录,说明mysql+proxy+主从读写分离成功。

f4d18269ee4c3b2ef6914fce6159be3d.png

mysql> insert into test values(64);

e84be7f42462dc1c27a72ea8e5469c3f.png

[root@linuxidc63 ~]# mysql

mysql> use db;

b98671633175379c70b114a9633f8f74.png

#在linuxidc62上登录的mysql数据库中,写的数据也得到了同步。

思考:当slave宕机后,mysql-proxy是如何读取的?

[root@linuxidc64 ~]# service mysqld stop

Stopping mysqld:                                           [  OK  ]

linuxidc62上测试:读写:

[root@linuxidc62 ~]# mysql -uuser2 -p123456 -P4040 -h192.168.1.62

mysql> use db;

mysql> insert into test values(6464);

be72c7fb61961a08764aee6ab3410f56.png

linuxidc63上查看xuegod64关闭后的客户端连接:确认读和写都是访问linuxidc63

[root@linuxidc63~]# mysql

mysql> use db;

mysql> show processlist;

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

51916222849ead61122cb323eaa60f43.png

总结:当停止掉slave数据库,proxy的查询就会转移到master上,当把slave启动后,proxy依然在读master,当有新的链接进来的时候才会重新去读取slave的数据。有时可能需要重启下mysql-proxy

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值