MyCat2之读写分离

MySql主从复制

        主从复制是指将主库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持一致

配置

1.主机配置

sudo vi /etc/mysql/my.cnf

[mysqld]
 在这里配置已覆盖默认的127.0.0.1(只能连本机)
bind-address = 0.0.0.0

 id为唯一值,每个server不可重复
server-id = 1

 指定产生bin log文件名称,使MySQL记录所有DB事务记录
log-bin=mysql-bin

保存后,重启 MySQL 才会生效:sudo /etc/init.d/mysql restart

2.从机配置

 id为唯一值,每个server不可重复
server-id =2

 指定产生bin log文件名称,使MySQL记录所有DB事务记录
log-bin=mysql-bin

3.主机、从机重启Mysql服务

4.关闭防火墙

5.主机上建立账户并授权slave

#创建它广播用户,并设置密码,该用户可在任意主机连接该MySQL服务

创建用户'itcast'@'%'已通过'root@123456'识别mysql native_password;

#为'itcast'@'%'用户分配主从复制权限

授予复制从站*。*到“它投”@“%”

6.从机上配置需要复制的主机

配置主库与从库使其相互关联:

CHANGE MASTER TO MASTER_HOST SOURCE='xxx.xxx.xxx.xxx’,MASTER_USER='xxx',MASTER_PASSWORD='xxx',MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxx;

7.测试

查看主库中的数据和从库中的数据,并在主库当中执行增删改的操作。

        主库和从库复制,它是从二进制日志的当前位置往后进行同步的,如果之前的数据也需要同步到从库中,这时就需要将主库的数据导入到一个sql文件中,然后在从库中执行此sql脚本,来保证主库和从库的初始数据是一致的。然后再从当前位置往后进行主从复制的同步。

 

读写分离       

        通过MyCat和MySql的主从复制配合搭建数据库的读写分离,实现MySql的高可用性。将搭建一主一从和双主双从两种读写分离模式。

读写分离模式:基本的原理是让主数据库处理事务性增、改、删操作, 而从数据库处理查询操作

Mycat实现的读写分离和自动切换机制,需要MySQL的主从复制机制配合。

为什么用?

从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即 SQL 查询的瓶颈,我们知道,正常情况下,Insert SQL 就是几十个毫秒的时间内写入完成,而系 统中的大多数 Select SQL 则要几秒到几分钟才能有结果,很多复杂的 SQL,其消耗服器 CPU 的能力超强,不亚于死循环的威力

读写分离存在的问题

主从数据延迟,导致业务数据无法保证强一致性

一主一从

最基础的复制结构,用来分担之前单台数据库服务器的压力, 可以进行读写分离。

搭建

添加主数据源

        进入mycat目录下的conf/datasources目录,复制 prototypeDs.datasource.json 并将名称设为master.datasource.json

cp prototypeDs.datasource.json master.datasource.json

修改master.datasource.json指定数据源 "targetName": "prototype" ,配置主机数据源

使用注解方式添加数据源:

注意下面命令在运行时不要有换行符,不然可能会执行错误
#配置写数据源  主机
/*+mycat:createDataSource{"name":"rwSepw","url":"jdbc:mysql://主机ip:3306/wusql?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root","password":"密码" } */;

#配置读数据源 从机
/*+mycat:createDataSource{"name":"rwSepr","url":"jdbc:mysql://从机ip:3306/wusql?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true","user":"root","password":"密码" } */;


#查询配置数据源结果
/*+ mycat:showDataSources{} */;

更新集群信息 , 添加 dr0 从节点 . 实现读写分离

/*!mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rwSepr"]} */;

 查看配置集群信息

/*+ mycat:showClusters{} */;

读写分离功能验证

        利用mysql的命令登录mycat,查看虚拟的数据库,在库中进行增删改查,再查看主从库中是否修改。

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值