码迷,mamicode.com
首页 > 数据库 > 详细

mysql抄书6:MySQL读写分离

时间:2018-02-05 00:25:36      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:/usr   运行   问题:   slave   .com   pass   tin   isp   syslog   

Amoeba

  • 以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy
  • 集中想用应用的请求,根据用户事先设置的规则,将SQL请求发送到特定的数据库上执行
  • 基于此可以实现负载均衡、读写分离、高可用性等需求
  • 强调的是amoeba配置的方便,基于XML的配置文件,用SQLJEP语法书写规则
  • 相当于一个SQL请求的路由器
  • 需结合mysql的replication等机制实现副本同步等功能
  • 对底层数据库连接管理和路由实现才用了可插拔机制

MySQL-Proxy

  • 官方工具
  • 基于lua脚本

基于程序读写分离

  • 写一个库,读一个库
  • 使用场景?

 

MySQL-Proxy读写分离

 

 技术分享图片

 

 

  • 配置mysql读写分离 
yum install mysql-server mysql mysql-devel  -y
  • master库的my.cnf
技术分享图片
[mysqld]  
datadir=/var/lib/mysql  
socket=/var/lib/mysql/mysql.sock  
user=mysql 
# Disabling symbolic-links is recommended to prevent assorted security risks  
symbolic-links=0 
log-bin=mysql-bin  
server-id = 1
auto_increment_offset=1    
auto_increment_increment=2
[mysqld_safe]  
log-error=/var/log/mysqld.log  
pid-file=/var/run/mysqld/mysqld.pid   
replicate-do-db =all
master my.cnf
  • slave库的my.cnf
技术分享图片
[mysqld]  
datadir=/var/lib/mysql/
socket=/var/lib/mysql/mysql.sock  
user=mysql 
# Disabling symbolic-links is recommended to prevent assorted security risks  
symbolic-links=0 
log-bin=mysql-bin  
server-id = 2 
auto_increment_offset=2    
auto_increment_increment=2
[mysqld_safe]  
log-error=/var/log/mysqld.log  
pid-file=/var/run/mysqld/mysqld.pid  
master-connect-retry=60 
replicate-do-db =all
slave my.cnf
  • 主从同步授权
  • mysql-proxy安装
wget wget https://downloads.mariadb.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz  
useradd -r mysql-proxy
tar zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local
mv /usr/local/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
  • 设置环境变量
export PATH=$PATH:/usr/local/mysql-proxy/bin/
echo "PATH=$PATH:/usr/local/mysql-proxy/bin"
Mysql-proxy的相关参数如下:

--help-all   :获取全部帮助信息;

--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
mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.1.14:3306" --proxy-read-only-backend-addresses="192.168.1.15: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 -ntpl |grep mysql-proxy
mysql -h192.168.1.14 -uadmin -p -P4041
select * from backends;

技术分享图片

技术分享图片

  • 使用4040端口进行数据写入和测试即可

 

问题:

VIP怎么产生的?

mysql抄书6:MySQL读写分离

标签:/usr   运行   问题:   slave   .com   pass   tin   isp   syslog   

原文地址:https://www.cnblogs.com/jenvid/p/8413430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!