Mycat分库分表、主从复制、读写分离简单实战

1、安装mysql数据库

192.168.1.121

192.168.1.51

192.168.1.52

本案例数据库统一的

用户名:root

密码:root123456

2、下载mycat

http://dl.mycat.io/

Mycat分库分表、主从复制、读写分离简单实战

传到121服务器,解压即可

3、mycat依赖jre,所以先配置jdk,jre

4、mycat中schema.xml

Mycat分库分表、主从复制、读写分离简单实战

 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <!-- auto sharding by id (long) -->
        <table name="goods" primaryKey="ID" type="global" dataNode="dn1" />
        <table name="people" primaryKey="ID" type="global" dataNode="dn2" />
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost2" database="db2" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <!-- 主服务器1,用来写 -->
        <writeHost host="hostM1" url="192.168.1.121:3306" user="root"  password="root123456">
            <!-- 从服务器1,用来读 -->
            <readHost host="hostS1" url="192.168.1.52:3306" user="root"  password="root123456" />
        </writeHost>        
    </dataHost>
    <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM2" url="192.168.1.51:3306" user="root"
                   password="root123456">
        </writeHost>
    </dataHost>
</mycat:schema>

server.xml的部分配置如下:(基本不用改动)

Mycat分库分表、主从复制、读写分离简单实战

 

5、启动mycat 

mycat的bin目录 使用命令

sh mycat start / restart  /stop/status

用Navicat连接数据库

Mycat分库分表、主从复制、读写分离简单实战

 

手动在mycat中建立goods,people表

Mycat分库分表、主从复制、读写分离简单实战

 

 

6、主从数据库设置

登录主数据库121

第一步:修改my.cnf文件:

在[mysqld]段下添加:

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

#服务器唯一ID,一般取IP最后一段

server-id=121

第二步:重启mysql服务

service mysql restart

第三步:建立帐户并授权slave

mysql>GRANT FILE ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456';

注意:有时候会出现错误

错误:ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';

然后更改配置mysql中的user表中的grant 改为yes;

#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全

刷新权限

mysql> FLUSH PRIVILEGES;

Mycat分库分表、主从复制、读写分离简单实战

登录从数据库52

第一步:修改my.cnf文件

[mysqld]

server-id=52

第二步:配置从服务器

change master to master_host='192.168.1.121',master_port=3306,master_user='root',master_password='root123456',master_log_file='mysql-bin.000001',master_log_pos=10906;

第二步:启动从服务器复制功能

start slave;

Mycat分库分表、主从复制、读写分离简单实战

第三步:检查从服务器复制功能状态

show slave status;// Slave_IO_Running | Slave_SQL_Running 都为YES

Mycat分库分表、主从复制、读写分离简单实战

 

手动创建数据库,表。

在mycat中增加数据,121中是主数据库,用来写数据;52是从数据库,用来读数据。

测试:成功

Mycat分库分表、主从复制、读写分离简单实战

 

 

 

参考文献

https://www.cnblogs.com/zmoumou/p/9650969.html