Mysql 读写分离

Mysql 读写分离

数据库“写”操作是比较耗时,但是读是很快的,因此设置读写分离可以解决数据库写入影响查询效率的问题。

基本原理是,让注数据库处理“写”操作(insert 、update、delete),从数据库处理“读”操作,同时使用数据库把事务性操作的变更同步到集群中的从数据库。

本文通过代理来实现读写分离。

代理功能

数据库代理可以为数据库集群提供统一入口,为集群分发请求,实现负载均衡和读写分离。

Mysql 读写分离_第1张图片

常见的代理有:mysql proxy (mysql官方)atlas(360) mycat(阿里巴巴)

Mycat实现读写分离

mycat是一个开源的分布式数据库系统,是一个实现了mysql协议的服务器,前端用户可将他理解为数据库代理,其后端可与大多数主流数据库服务器通信。

1.配置Java环境

1.官网下载jdk
2.tar xvf  jdk-8u91...-x64.tar.gz  -C  /usr/local
3.ln -s /usr/local/jdk.../  /usr/local/java
4.vim /etc/profile  添加三行
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
5.source /etc/profile
6.java      -version

2.配置Mycat

下载mycat

1.官方网站 http://www.mycat.io/
2.wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
3.tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
4.ls /usr/local/mycat/

配置Mycat前端

启动mycat管理员

vim  /usr/local/mycat/conf/server.xml
 name="root">   # 连接mycat数据库的账户   
 <property name="password">123456property>
                           #连接数据库的账号
 <property name="schemas">dbname1property>
                         #后方数据库的统称
配置Mycat后端
vim  /usr/local/mycat/conf/schema.xml

mycat后端

  • schema name:mycat维护的集群名称。
  • datanode:后方节点群的名称。
  • datahost:后方节点群的主机名称。
  • writehost:写主机
  • readhost:读主机
属性—负载均衡类型
  1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance=”1”, 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  3. balance=”2”, 所有读操作都随机的在 writeHost、readhost 上分发。
  4. balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力
属性—write Type 属性
  1. writeType=”0”, 所有写操作发送到配置的第一个 writeHost,
    第一个挂了切到还生存的第二个writeHost,
    重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
  2. writeType=”1”,所有写操作都随机的发送到配置的 writeHost。

3.配置mysql群

(MM-SS)

grant all on *.* to 'mycatproxy'@'192.168.0.118' identified by 'password';

4.启动Mycat

(在mycat服务器上)

/usr/local/mycat/bin/mycat start
Starting Mycat-server...
启动成功,否则就是配置Mycat后端语法错误。
netstat  -anpt | grep java    //监测端口是否启动
ps aux | grep mycat      //检测进程是否启动
yum install -y mariadb    //安装客户端
mysql -hmycat -uroot -p123456 -P8066 

5.Mycat使用后方数据库

select * from tianyun.t1;
insert into tianyun.t1 values(3);

你可能感兴趣的:(运维,代理,读写分离)