mysql的读写分离是什么
当数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。
如何实现数据库的读写分离
有专门的独立系统来实现读写分离和数据库连接管理,业务服务器和数据库中间件(代理器)通过SQL协议交流,在业务服务器看起来,数据库中间件就是一个数据库。代理一般位于客户端和服务器之间,代理服务器接到客户段的请求通过判断后转发到后端数据库。
读写分离可以用很多软件实现:mysql-proxy 、MyCat 、Amoeba
实现步骤
实验环境:
server1 主数据库 172.25.2.10
server2 备数据库 172.25.2.11
server3 proxy代理器 172.25.2.254
真机 mariadb 客户端 172.25.2.250
关闭两台主机的防火墙和selinux
前提是server1和server2的主从复制要做好。基于GTID的主从复制.
在已经做好主从复制的server1上,可以查看二进制日志
是加密的.
在server2 slave上可以查看中继日志
这几步操作与本篇的读写分离无关。
1.server3 上:
首先应该关掉被占用的3306端口
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local
cd /usr/local/
ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy #软链接便于访问
2.3.查看proxy帮助
4.查看所有帮助
5.查看帮助
6.在server3中建立配置文件目录
编辑配置文件(自己手动新建)
cd /conf
vim mysql-proxy.conf
创建日志目录
mkdir /usr/local/mysql-proxy/log
修改 lua 脚本
启动 mysql-proxy
发现启动报错
原因是配置文件权限过大
再启动,正常
查看日志,看到两个节点都加进来了
在 server1(主) 上授权新用户读写权限
创建新的表
在物理机上打开一个 shell 来连接数据库,首先应该安装mariadb
mariadb安装完成,接下来连接代理server3
在server3代理器上查看进程
在 server3 上看到连接已经建立
在物理机上再打开一个 shell 来连接数据库
在server3上查看还是只看到一个数据库服务器
在物理机上再打开一个 shell 来连接数据库
再到 server3 上查看,这次还连接到了 server2,说明读写分离启用’
测试读写分离
1.在物理机上插入数据
发现 server1 和 server2 都能看到,看不出读写分离,因为存在主从复制
现在到 server2 (从库)上关闭复制
这时再在物理机上插入数据
发现插入的数据看不到,但是在server1上可以看到,这就说明了它在读的时候读的是server2 上的数据,而写操作却写在了 server1 上
开启serevr2(从)
在客户端上可以读到之前写的数据