1.什么是Mycat?
Mycat是数据库中间件,所谓中间件,是一类连接软件组件和应用的计算机软件,以便软件各部件之间的通信。
2.为什么要用Mycat?
Java与数据库的紧密耦合
高访问量高并发对数据库的压力
读写请求数据不一致
3.Mycat应用场景
- 读写分离
- 数据分片
- 垂直拆分(分库)
- 水平拆分(分表)
4.原理
Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发 往后端的==真实数据库==,并将返回的结果做适当的处理,最终再返回给用户。
5.具体操作
5.1准备环境
准备两台以上linux服务器:主节点、从节点。
5.2搭建mysql集群---主从模式
- 主从复制原理
复制步骤:
Master 主库在事务提交时,会把数据变更作为事件Events 记录在二进制日志文件 Binlog 中。
主库推送二进制日志文件 Binlog 中的日志事件到从库的中继日志 Relay Log 。
slave重做中继日志中的事件,将改变反映它自己的数据。
优点:
主库出现问题,可以快速切换到从库提供服务。
可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。
可以在从库中执行备份,以避免备份期间影响主库的服务。
具体操作:
1.在主节点的配置文件(/etc/my.cnf)中,配置如下内容:
#mysql 服务ID,保证整个集群环境中唯一
server-id=1
#mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin
#是否只读,1 代表只读, 0 代表读写
read-only=0
#忽略的数据, 指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
2.重启MySQL:
systemctl restart mysqld
3.创建同步数据的账户,并且进行授权操作:设置远程访问。(如果设置过允许mysql远程访问---那么该步骤可以省略)
grant replication slave on *.* to 'root'@'192.168.234.134' identified by 'root';
flush privileges;
4. 查看master状态:
show master status;
File : 从哪个日志文件开始推送日志文件
Position : 从哪个位置开始推送日志
Binlog_Ignore_DB : 指定不需要同步的数据库
5.在从节点配置文件中配置如下内容:
#mysql服务端ID,唯一
server-id=2
#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin
6.重启MySQL
7.绑定主节点----指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。
change master to master_host= '192.168.234.134', master_user='root', master_password='123456', master_log_file='mysqlbin.000001', master_log_pos=154;
8.开启同步操作
start slave;
show slave status\G;
9.停止同步操作
stop slave;
reset master;