mycat核心概念
逻辑库 mycat中定义、管理的数据库
逻辑表 逻辑库中包含的需分库分表存储的表
datanode 数据节点(分片节点),逻辑表分片的存放节点
datahost 数据主机(节点主机),数据节点所在的主机
writehost 写主机 真实的数据库服务主机
readhost 读主机
mysql主从同步配置
1、 在主数据库上创建同步账号
grant replication slave on *.* to 'repl'@'192.168.5.125' identified by '123456';
2、 配置主节点,开启binlog,vi /etc/my.cnf,添加如下配置
log-bin=mysql-bin # 日志文件名前缀
server-id=1 # 在集群中的唯一id,值可以为1~2^32-1的整数
3、重启mysql,进入,mysql客户端,SHOW MASTER STATUS 查看主库状态
4、从节点,添加配置,vi /etc/my.cnf,添加
server-id=2
5、进入从节点mysql客户端,执行 CHANGE MASTER TO 语句设置同步的主库
CHANGE MASTER TO MASTER_HOST='192.168.5.144',MASTER_USER='repl',MASTER_PASSWORD='123456';
6、开启从库 START SLAVE; 查看从库状态 SHOW SLAVE STATUS;
7、在主库执行下列命令,查看从库是否产生对应的数据库、表和数据
CREATE DATABASE orders CHARACTER SET 'utf8'; use orders; CREATE TABLE t_order ( order_id BIGINT PRIMARY KEY, order_time DATETIME, customer_id BIGINT, order_amount DECIMAL(8,2) );
mycat主从配置
详细配置可参考: http://www.mycat.io/document/mycat-definitive-guide.pdf
1、schema.xml 中配置逻辑库、数据节点,数据主机
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 注意:里面的元素一定要按 schema 、dataNode 、 dataHost的顺序配置 --> <schema name="mydb1" checkSQLschema="false" sqlMaxLimit="100" dataNode="mydn1"> </schema> <dataNode name="mydn1" dataHost="dhost1" database="orders" /> <dataNode name="mydn2" dataHost="dhost2" database="orders" /> <!-- 读写分离第一种配置方式 --> <dataHost name="dhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="myhostM1" url="192.168.100.218:3306" user="mike" password="Mike666!"> <readHost host="myhostS1" url="192.168.100.219:3306" user="mike" password="Mike666!" weight="1" /> </writeHost> </dataHost> <!-- 读写分离第二种配置方式 --> <dataHost name="dhost2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="myhostM2" url="192.168.100.218:3306" user="mike" password="Mike666!"></writeHost> <writeHost host="myhostS2" url="192.168.100.219:3306" user="mike" password="Mike666!"></writeHost> </dataHost> </mycat:schema>
2、server.xml 中用户数据库权限配置
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">mydb1</property> </user>
3、两种配置读写分离方式的区别
第一种mysql写主机挂掉后读不可用,第二种第一台机器mysql挂掉后第二台mysql读写正常,其实就是stand by模式(备用模式)
4、使用navicat或者java api像连接单台mysql一样去配置,mycat就会帮我们实现读写分离