主从复制和读写分离的区别
-
主从分离
保证主机对外提供服务,而从机是不对外提供服务的,只是在后台为主机进行备份
架构
主数据库处理写方面事务,让从库处理SELECT查询。
环境准备
- 操作系统:CentOS7
- 主服务器Master:192.168.188.99
- 调度服务器MySQL-Proxy:192.168.188.100
- 从服务器Slave:192.168.188.101
- Mysql版本:5.6.45
- MysqlProxy版本:mysql-proxy-0.8.5-linux-el6-x86-64bit
软件安装
- 准备好Porxy机,将MysqlPorxy上传到机器中,解压.
配置MysqlProxy
-
创建mysql-proxy.cnf文件,创建好cnf文件之后将文件移动到mysql-proxy的bin目录下.
-
写入配置信息
[root@master2 bin]# cat mysql-proxy.cnf [mysql-proxy] #运行mysql-proxy用户 user=root #主从mysql共有的用户 admin-username=proxy #用户的密码 admin-password=xiao123. #mysql-proxy运行ip和端口,不加端口,默认4040 proxy-address=192.168.188.100:4040 #指定后端主master写入数据 proxy-backend-addresses=192.168.188.99:3306 #指定后端从slave读取数据 proxy-read-only-backend-addresses=192.168.188.102:3306 #指定读写分离配置文件位置 proxy-lua-script=/root/mysqlProxy0.8.5/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua #日志位置 log-file=/root/mysqlProxy0.8.5/logs/mysql-proxy.log #定义log日志级别 log-level=debug #mysql-proxy崩溃时,尝试重启 keepalive=true #以守护进程方式运行 daemon=true
-
chmod命令修改mysql-porxy.cnf文件权限
chmod 0660 mysql-proxy.cnf
-
修改读写分离配置默认的最大和最小空闲连接
启动Mysql-Proxy
启动
查看日志文件
测试读写分离
创建proxy用户
在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作.
grant all on *.* to 'proxy'@'mysql-proxy的IP地址' identified by '123.com';
使用客户端连接mysql-proxy
mysql -uproxy -pxiao123. -h192.168.188.100 -P4040
这里需要注意的是P是大写表示运行mysql-proxy的端口号
登录插入数据
查看从服务器数据是否一致
登录主服务器查看数据
确认数据没错
从服务器关闭mysql同步进程
登陆mysql-proxy查询数据
退出重新登陆,查看数据
读写分离测试成功:现在proxy虽然能够插入数据,但是从服务器已经关了同步功能,所以查到的数据,和主服务器不一致.
尝试重新打开同步功能以进行测试;
关闭MysqlProxy
netstat -lnp | gerp 4040
kill -9 7384(进程号)