MyCat实现数据库与数据库之间的读写分离

一、Mycat的安装准备:

1、jdk:要求jdk必须是1.7及以上版本

2、Mysql:推荐mysql是5.5以上版本

3、Mycat:

Mycat的官方网站:

http://www.mycat.org.cn/

下载地址:

https://github.com/MyCATApache/Mycat-download

Mycat的安装

Mycat有windows、linux多种版本。本教程为linux安装步骤,windows基本相同。

第一步:下载Mycat-server-xxxx-linux.tar.gz

第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。

第三步:进入mycat目录,启动mycat

./mycat start

停止:

./mycat stop

mycat 支持的命令{ console | start | stop | restart | status | dump }

Mycat的默认端口号为:8066

二、Mycat的分片

两台mysql数据库服务器

Host1:192.168.37.101

Host2:192.168.37.102

host1环境:

操作系统版本:centos6.4

数据库版本:mysql-5.6

mycat版本::1.4release(发行版)

数据库名:db1、db3

mysql节点2环境:

操作系统版本 : centos6.4

数据库版本 : mysql-5.6

mycat版本 :1.4 release

数据库名 : db2

配置重要文件Schema.xml

            <!-- auto sharding by id (long) -->  id自动分片的规则

            <table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

    </schema>

给mycat创建个虚拟的数据库名mycatName,给mycatName创建指定表名,和db1、db2、db3表名相同才能进行分片

MyCat安装到节点1上(需要安装jdk)





select user()






select user()





</mycat:schema>
schema.xml中删除 ,不删除的话分节的话三张表都会有相3同数据
   配置重要文件Server.xml

123456
mycatName
false

配置重要文件rule.xml

三、mycat读写分离:

主从配置需要注意的地方

1、主DB server和从DB server数据库的版本一致

2、主DB server和从DB server数据库数据名称一致

3、主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

1.拷贝my.cnf cp /usr/share/mysql/my-default.cnf /etc/
   改名 mv my-default.cnf my.cnf
   编辑 vim my.cnf 加入 lower_case_table_names=1 不区分大小写
   重启mysql service mysql restart
  2.主从复制:读写,删除增加一致性
   主服务器配置:(在192.168.37.101上配置)
  第一步:更改/etc/my.cnf 文件

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

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

server-id=134

第二步:重启mysql服务
      service mysql restart
  第三步:建立一个用户
      mysql>GRANT FILE ON . TO ‘backup’@’%’ IDENTIFIED BY ‘123456’;
      mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . to ‘backup’@’%’ identified by ‘123456’;
  刷新权限
      mysql> FLUSH PRIVILEGES;
  查看mysql现在有哪些用户
      mysql>select user,host from mysql.user;

第四步:查询master的状态
      mysql> show master status;
    ±-----------------±---------±-------------±-----------------±------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    ±-----------------±---------±-------------±-----------------±------------------+
    | mysql-bin.000001 | 517| db1 | mysql | |
    ±-----------------±---------±-------------±-----------------±------------------+
    1 row in set
  从服务器配置:(在192.168.37.102上配置)
  第一步:
    在从服务器Hadoop02上复制文件
    cp /usr/share/mysql/my-default.cnf /etc/
    改名
    mv my-default.cnf my.cnf
    更改配置vim /etc/my.cnf
    server-id=106
  第二步:重启mysql服务
    service mysql restart
  第三步:配置从服务器
    change master to master_host=‘192.168.37.101’,master_port=3306,master_user=‘backup’,master_password=‘123456’,master_log_file=‘mysql-bin.000001’,master_log_pos=517
    注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的 mysql-bin.000001就是file对应的值)。

第四步:启动从服务器复制功能
    Mysql>start slave;

第五步:检查从服务器复制功能状态:
    mysql> show slave status

……………………(省略部分)
    Slave_IO_Running: Yes //此状态必须YES
    Slave_SQL_Running: Yes //此状态必须YES
    ……………………(省略部分)

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

错误处理:
    如果出现此错误:
    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
    因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。
  配置mycat实现读写分离:

<dataHost name=“localhost1” maxCon=“1000” minCon=“10” balance=“1”

writeType=“0” dbType=“mysql” dbDriver=“native” switchType=“2” slaveThreshold=“100”>

show slave status

<writeHost host=“hostM” url=“192.168.25.101:3306” user="root"password=“root”>

<readHost host=“hostS” url=“192.168.25.102:3306” user="root"password=“root” />

猜你喜欢

转载自blog.csdn.net/qq_33286695/article/details/84146784
今日推荐