读写分离实现基本机制
基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库;主服务器对向从服务器请求的请求产生的I/o会很多。可以实现多级复制;实现机制是在主服务器为从服务器产生一个进程,有一个单独的服务器器为从服务器提供读进程即是多级复制模式;单独提供查询进程服务器采用black hole存储引擎
Mysql-5.6实现读写分离简构图
Mysql-proxy配置选项介绍
--proxy-address=host:port ————代理服务监听的地址和端口;
--admin-address=host:port ————管理模块监听的地址和端口;
--proxy-backend-addresses=host:port ————后端mysql服务器的地址和端口;
--proxy-read-only-backend-addresses=host:port ————后端只读mysql服务器的地址和端口;
--proxy-lua-script=file_name ————完成mysql代理功能的Lua脚本;
--daemon ————以守护进程模式启动mysql-proxy;
--keepalive ————在mysql-proxy崩溃时尝试重启之;
--log-file=/path/to/log_file_name ————日志文件名称;
--log-level=level ————日志级别;
--log-use-syslog ————基于syslog记录日志;
--plugins=plugin,.. ————在mysql-proxy启动时加载的插件;
--user=user_name ————运行mysql-proxy进程的用户;
--defaults-file=/path/to/conf_file_name ————默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;
--proxy-skip-profiling ————禁用profile;
--pid-file=/path/to/pid_file_name ————进程文件名;
安装mysql-proxy
# useradd -r mysql-proxy
# tar xf mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit.tar.gz-C /usr/local/
# cd /usr/local/
# ln -sv mysql-proxy-0.8.3-linux-glibc2.3-x86-32bitmysql-proxy
添加环境变量
# vim /etc/profile.d/mysql-proxy.sh
添加内容为
exportPATH=$PATH:/usr/local/mysql-proxy/bin
# . /etc/profile.d/mysql-proxy.sh
为mysql-proxy提供SysV服务脚本以及配置文件mysql-proxy 由于脚本配置文件过长所以就上传到附件了
添加执行权限,加进服务控制列表
# cd /etc/init.d/
# chmod +x mysql-proxy
# chkconfig --add mysql-proxy
# chkconfig --level 2345 mysql-proxy on
相关配置文件已经准备完成,现在就可启动mysql-proxy,然后使用另一客户端(这里的客户端IP为172.16.51.77)进行连接测试
# mysql -uadmin -padmin -h172.16.51.23--port=4041
mysql> select * from backends;
读写分离测试
在负责读写的服务器上进行远程用户授权
mysql> GRANT ALL ON *.* TO 'root'@'%'IDENTIFIED BY 'RedHat';
mysql> flush privileges;
在客户端172.16.51.77进行一次写操作
# mysql -uroot -predhat -h172.16.51.23 -e'create database chuangjian;'
# mysql -uadmin -padmin -h172.16.51.23--port=4041
在客户端172.16.51.77进行一次读操作
# mysql -uroot -predhat -h172.16.51.23 -e'select user,password from mysql.user;'
172.16.51.20服务器支持读写,所以在第一次进行查询时172.16.51.21服务器可能响应不到,所以就再一次的进行了查询测试(有不周的地方还望见谅哦)
mysql-proxy服务脚本与配置文件下载地址:
具体下载目录在 /2013年资料/5月/24日/红帽企业Linux 6.4 64位上实现MySQL 5.6主从复制