Mysql读写分离
一、关于读写分离
读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
1.问题:
由于数据库没有优化,会导致主数据库的压力较大.
2.策略:
如果是读的操作,都访问从数据库.
如果是写的操作.都访问主数据库.
二、关于Amoeba
Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多企业的生产线上面使用。
Amoeba主要解决以下问题:
(1)数据切分后复杂数据源整合
(2)提供数据切分规则并降低数据切分规则给数据库带来的影响
(3)降低数据库与客户端连接
(4) 读写分离路由
三、Amoeba的安装
1.下载安装amoeba(配置环境变量)
vi /etc/profile
在最下面加入两行
export AMOEBA_HOME=/usr/local/amoeba/amoeba-mysql-3.0.5-RC
export PATH=$PATH:$AMOEBA_HOME/bin
source /etc/profile(使环境变量及时生效)
2.安装JDK(配置环境变量)
vi /etc/profile
在最下面加入两行
export JAVA_HOME=/usr/java/jdk1.8.0_65
exportPATH=$PATH:$JAVA_HOME/bin
source /etc/profile(使环境变量及时生效)
四、Amoeba的配置
4.1 给amoeba授权mysql远程账户(不推荐使用root)
创建一个用户名为amoeba,密码为111111,ip为%,可登录该账户(登录数据库后操作)
mysql>grant all on *.* amoeba@'%' identified by '111111' with grant option;
4.2 查看配置文件
退出数据库
#进入到amoeba的conf目录下
cd /application/amoeba/conf
#查看
ll
4.3 配置dbServers.xml
vi dbServers.xml
4.3.1 设置mysql默认连接时的端口,数据库,帐号和密码
说明:
自改后:
4.3.2 设置连接主从数据库服务器的IP地址和服务器别名,用户名及密码
说明:
自改后:
4.4 配置amoeba.xml
vi amoeba.xml
4.4.1 修改默认端口号,管理帐号及密码
说明:
自改后:
4.4.2 设置默认池及读写分离
说明:
自改后:
4.5 指定栈空间
cd /application/amoeba
vi jvm.properties
适当的调整内存空间,否则将不会生效
将Xss196k改为Xss256k
五、启动Amoeba
启动
/application/amoeba/bin/launcher #末尾加&为后台启动
关闭
/application/amoeba/bin/shutdown
后台启动并把日志保存到/var/log/amoeba.log
/application/amoeba/bin/launcher > /var/log/amoeba.log 2>&1 &
六、验证读写分离
1.关闭SELinux:
查看状态:
getenfore
(1)永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
(2)即时生效
开启:setenforce 0
关闭:setenfore 1
2.关闭防火墙的方法为:
查看状态:
chkconfig --list iptables
(1)永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
(2)即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop