MyCat基础入门

1. MyCat安装

去官网下载安装包:

在这里插入图片描述

下载路径: 官方网站:http://www.mycat.org.cn/
github地址https://github.com/MyCATApache

上传到服务器上并解压:

在这里插入图片描述

它解压后是一个叫mycat的文件夹

在这里插入图片描述

去maycat的bin目录下,执行命令 ./mycat start 启动服务 ./mycat stop 停止服务 ./mycat
restart 重启服务

在这里插入图片描述

mycat的conf文件夹下有一个server.xml,里面有,mycat连接的用户名和密码

在这里插入图片描述

在这里插入图片描述

可以看到root用户密码是123456 连接使用mysql客户端

> mysql -h 127.0.0.1 -u root -p -P 8066

在这里插入图片描述

远程连接,记得防火墙开放8066端口 使用iptables开放如下端口

/sbin/iptables -I INPUT -p tcp --dport 8066 -j ACCEPT

保存

/etc/rc.d/init.d/iptables save

重启服务

service iptables restart

在这里插入图片描述

注意新安装的mycat,再使用远程工具的时候可能会卡住,多等一会就好了。

在这里插入图片描述
在这里插入图片描述

2. 分片

在mysql连接里建立三个数据库,注意是从前我们用的mysql连接,不是mycat。

在这里插入图片描述

修改mycat/conf/schema.xml

在这里插入图片描述

<table>用来配置表,原来的配置文件中有许多测试用的表。我们追加两个表,test_tb01和test_tb02。
test_tb01放到三个节点上,分别对应新创建的三个库mycat_db1、mycat_db2、
mycat_db3。rule指定它的分片策略是按照id分

在这里插入图片描述

分片规则:https://blog.csdn.net/u011731544/article/details/80579088

在这里插入图片描述

test_tb02的type=global,代表全局表
改完重启mycat

在这里插入图片描述

执行语句

DROP TABLE IF EXISTS `test_tb01`;
CREATE TABLE `test_tb01` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test_tb01`(id,name) VALUES ('5000001', 'aaaa');
INSERT INTO `test_tb01`(id,name) VALUES ('1', 'aaaa');
INSERT INTO `test_tb01`(id,name)  VALUES ('2', 'aaaa');
INSERT INTO `test_tb01`(id,name)  VALUES ('10000001', 'aaaa');

DROP TABLE IF EXISTS `test_tb02`;
CREATE TABLE `test_tb02` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test_tb02` (name)VALUES ('cccc');

注意表名的大小写要和配置文件中一致。 执行之后可以看到test_tb01的数据,根据id的不同,存储到了三个节点中。
test_tb02的数据在两个节点中是同步的。

启动mysql

cd /usr/local/mysql/support-files
./mysql.server start

3. 读写分离

数据库读写分离对于大型系统或者访问量很高的互联网应用,是必不可少的一个重要功能。对于MySql来说,标准的读写分离是主从模式,一个写节点Master跟着多个读节点。读节点的数量取决于系统的压力。通常1-3个读节点。

MyCat的读写分离需要Mysql的主从复制机制配合。 MySql主从复制需要注意的是:

  1. 主DB Server和从DB Server的数据库版本一致
  2. 主DB Server和从DB Server的数据库数据一致
  3. 主DB Server开启二进制日志,主DB Server和从DB Server的server_id必须唯一

3.1 主库配置

这里是引用

修改主库的/etc/my.cnf,追加如下内容:

binlog-do-db=mycat_db1
binlog-do-db=mycat_db2
binlog-do-db=mycat_db3
binlog-ignore-db=mysql
log-bin=mysql-bin
server-id=144

在这里插入图片描述

binlog-do-db是要同步的库

binlog-ignore-db是不同步的库

log-bin开启二进制日志

server-id必须是唯一的服务号,可以写成ip最后一段

重启mysql

service mysql restart

登录mysql,创建备份用户并授权

grant file on *.* to 'backup' @'%' identified by '123456';

grant replication slave,replication client on *.* to 'backup' @'%' identified by '123456'; 

flush privileges;

查看现在有哪些用户:

select user,host from mysql.user;

在这里插入图片描述

查看master状态

show master status\G;

在这里插入图片描述

3.2 配置从库

修改从库的/etc/my.cnf
server-id=139 可以使用ip的最后一段

在这里插入图片描述

重启服务

service mysql start

连接mysql,配置master的信息,注意这是一条语句,中间不要断开

CHANGE MASTER TO MASTER_HOST='10.0.107.145', MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=120;

在这里插入图片描述

其中MASTER_HOST是主库的ip,MASTER_USER和MASTER_PASSWORD是同步时的账号及密码,就是3.1中创建并授权的账号。MASTER_LOG_FILE是3.1中show master status时的file。 MASTER_LOG_POS 是show master status时的Position。

启动slave

start slave;

在这里插入图片描述

查看从服务器状态:

show slave status\G;

在这里插入图片描述

Slave_IO_Running: Yes //必须是YES
Slave_SQL_Running: Yes //必须是YES

3.3 配置mycat

在这里插入图片描述

balance:

balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。

balance=“1”,全部的 readHost 与 stand by writeHost 参与 select
语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2
都参与 select 语句的负载均衡。

balance=“2”,所有读操作都随机的在 writeHost、 readhost 上分发。

balance=“3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost
不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

writeType:

writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个

writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType=“1”,所有写操作都随机的发送到配置的 writeHost。

writeType=“2”,没实现。

switchType:

-1 表示不自动切换

1 默认值,自动切换

2 基于MySQL 主从同步的状态决定是否切换

重启mycat服务。

4. java连接mycat

数据库链接地址,连接服务器的8066端口,指定连接到TESTDB库,用户名密码是mycat的server.xml中配置的用户名密码。其它操作和连接mysql一样:

jdbc:mysql://www.vm.com:8066/TESTDB?characterEncoding=utf-8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专治八阿哥的孟老师

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值