Mycat初步使用(读写分离)

安装

1.java的安装

- 下载jdk.tar.gz

    wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

- 解压并拷贝

    tar zxvf jdk-8u181-linux-x64.tar.gz
    mv jdk1.8.0_151/ /usr/local/java/

- 配置环境变量

    vi /etc/profile #在文件最后加入以下几行
    export JAVA_HOME=/usr/local/java
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASS_PATH=.:$JAVA_HOME/lib/dt,jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin:%JRE_HOME/bin
    source /etc/profile #重新加载配置

- 验证

    java -version

2.mycat的安装

- 下载源代码,解压即可。

3.试运行

- 进入mycat的解压目录
- ./bin/mycat console

目录结果解释

目录结构如下所示:

mycat
├── bin        程序目录,存放了各种脚本命令,比如常用的mycat。
├── catlet    人工智能分片目录
├── conf    各类配置文件的目录
├── lib        存放mycat依赖的jar文件
├── logs    存在mycat所产生的日志文件。
└── version.txt    

一些常用命令

进入bin目录下

    ./mycat start      #启动mycat, 后台运行
    ./mycat stop    #停止mycat
    ./mycat console     #启动mycat, 前台运行
    ./mycat restart     #重启mycat
    ./mycat pause    #暂停mycat
    ./mycat status    #查看mycat的状态
    
    mysql -uroot -p123456 -P8066 -h 127.0.0.1 #连接数据接口的命令

配置文件的介绍

 mycat主要的配置文件分为以下几个:

server.xml         系统相关的配置文件

schema.xml        逻辑库,逻辑表,dataHost,dataNode配置文件

rules.xml        分片的规则定义文件

数据库读写分离的实例

分为以下三步:

一、数据库配置主从赋值

首先配置两台机器,一台作为master,一台作为slave

测试环境下我使用的是docker来配置:

    master: 127.0.0.1:3306

    slave: 127.0.0.1:3309    

配置master

1、设置mysql用户,为其创建一个用来数据同步的用户。

    mysql>create user repl;
    mysql> grant replication slave on *.* to 'repl'@'192.168.1.10' identified by 'repl';
    mysql> flush privileges;

2、配置my.cnf文件

    # 基本的配置
    [mysqld]
    server-id=1   #数据库服务的唯一标识
    log-bin=mysql-bin   # bin文件前缀
    
    #其他配置文件
    # expire_logs_days= 10   日志有效期
    # binlog-do-db= test 需要记录二进制日志的数据库
    # binlog-ignore-db= mysql 不需要记录二进制日志的数据库
    # replicate-ignore-db=mysql 不需要同步的数据库

3、重启mysqld

4、进入mysql查看master的状态, 获得pos

    mysql> show master status;

配置slave

1、配置my.cnf

    [mysqld]
    log-bin=mysql-bin
    server-id=3
    slave-net-timeout=60

2、重启Mysqld

3、进入mysql命令行,开始连接master

    stop slave;
    change master to master_host='127.0.0.1',master_user='root',master_password='sangfor',master_log_file='mysql-bin.000001', master_log_pos=154;
    start slave;
    show slave status;

4、验证成功:

    Slave_IO_Running: Yes     

        Slave_SQL_Running: Yes

MYSQL[Got fatal error 1236]的原因和解决办法

参考:https://yq.aliyun.com/articles/27685

二、mycat配置读写分离

主要配置schema.xml

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="localhost:3306" user="root" password="123456">
        <!-- can have multi read hosts -->
        <readHost host="hostS1" url="localhost:3309" user="root" password="123456"
        weight="1" />
    </writeHost>
    </dataHost>
    或者
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <writeHost host="hostM1" url="localhost:3306" user="root" password="123456">
        </writeHost>
        <writeHost host="hostS1" url="localhost:3307" user="root" password="123456">
    </writeHost>
    </dataHost>

以上两种取模第一种当写挂了读不可用,第二种可以继续使用,

启动则Ok了。

三、迁移数据库

mysql迁移数据库命令:

    mysqldump -uroot -p'密码'  --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql

  说明:
    --master-data=2代表备份时刻记录master的Binlog位置和Position

    --single-transaction意思是获取一致性快照

    -R意思是备份存储过程和函数

    --triggres的意思是备份触发器

    -A代表备份所有的库

在数据库中新建数据库:

    CREATE DATABASE OSS_BUSINESS_data DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

导入数据:
    source xxx.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值