常见读写分离方式
- MySQL-Proxy读写分离
- Amoeba读写分离
- Mycat读写分离
- 基于程序读写分离
MySQL Proxy下载
- 基于MySQL的主从复制确保数据的一致性,减轻数据库master的压力,让
读
操作 到slave 执行,写
操作到master执行
# 64位
wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
# 32位
wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz
安装配置
读写分离示例图.png
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
useradd -r mysqlproxy
vim /etc/profile
# 配置环境变量
export PATH=$PATH:/usr/local/mysql-proxy/bin/
# master 执行
grant all on *.* to admin@'%' identified by 'admin';
启动MySQL-Proxy
mysql-proxy --daemon --log-level=debug --user=mysqlproxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="10.8.30.152:3306" --proxy-read-only-backend-addresses="10.8.30.81:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"
验证查看
netstat -tnl
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN
# 4040 与4041 端口正常
# 4040为proxy代理端口用于WEB应用连接,4041位管理端口用于SA或者DBA管理
# 中间件运行成功
mysql -h(mysql-proxy服务器ip) -uadmin -padmin -P 4040 -e 'create database dbtest; '
在 master slave 查看是否有被创建。
mysql -h(mysql-proxy服务器ip) -uadmin -padmin -P 4040 -e 'select host,password,user from mysql.user'
mysql -h(mysql-proxy服务器ip) -uadmin -padmin -P 4041
进入服务端 执行
SELECT * FROM backends;
#state 状态为up
#type 分别为rw ro
ipaSIK.png
参数解释
--help-all :获取全部帮助信息;
--proxy-address=host:port :代理服务监听的地址和端口,默认为4040;
--admin-address=host:port :管理模块监听的地址和端口,默认为4041;
--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 :进程文件名;
网友评论