centos7 mysql5.6读写分离配置
环境说明
- 前提mysql主从复制已实现
- 环境准备
系统 centos7.2
master 192.168.20.131
slave 192.168.20.132
proxy 192.168.20.133
安装MySQL-proxy
-
下载
下载地址
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.17-linux-glibc2.5-x86_64 /data/mysql-proxy -
配置
mkdir /data/mysql-proxy/{lua,logs}
cd /data/mysql-proxy
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本 -
启动配置文件
vim /etc/mysql-proxy.cnf #创建配置文件user=root
admin-username=proxy
admin-password=xxxxx
proxy-address=192.168.20.133:4040
proxy-read-only-backend-addresses=192.168.20.132:3306
proxy-backend-addresses=192.168.20.131:3306
proxy-lua-script=/data/mysql-proxy/lua/rw-splitting.lua
admin-lua-script=/data/mysql-proxy/lua/admin-sql.lua
log-file=/data/mysql-proxy/logs/mysql-proxy.log
log-level=info
daemon=true
keepalive=true -
读写分离配置
vim /data/mysql-proxy/lua/rw-splitting.luaif not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, #默认8,改为1
is_debug = false
}
end -
修改配置文件权限
chmod 660 /etc/mysql-proxy.cnf #启动时会提示权限必须为660 -
启动mysql-proxy
/data/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
停止时kill -9 即可
测试读写分离
- 主从创建proxy用户
grant all on . to 'proxy'@ip' identified by 'xxxx'; - 客户端连接
mysql -u proxy -h ip -P 4040 -p - 测试思路
测试写
关闭slave,在proxy上执行insert,发现master上新增
在proxy上执行select语句,发现不包括刚才insert的操作,新增的都在master上。
切换读库引擎
-
读库默认引擎是InnoDB,修改为MyISAM会使查询速度变快
vim /etc/my.cnf[mysqld]
default-storage-engine=MyISAM 创建新表时将使用的默认存储引擎
key_buffer_size=128M
myisam_sort_buffer_size=256M
myisam_max_sort_file_size=5G
myisam_repair_threads=1
myisam_recover