win mycat及mysql主从库、读写分离的初使用

1、mysql主从复制。

服务器信息如下:

服务器主机名 ip 说明
mycat-node 192.168.1.73 mycat服务器,连接时使用该服务器
mycat-jessie 192.168.1.73 物理数据库1,作为主库master
mycat-jyp 192.168.1.52 物理数据库2,作为从库slave
备注:实验时,务必关闭关闭机器的iptables防火墙和selinux。
a) 安装ysql,请自行安装。
安装过程此处略...

b) mysql主从复制。
sql1: 登录用户名和密码:root/root
sql2: 登录用户名和密码:root/123456

1.1 主库master的配置

1)、找到数据库的配置文件

(my.cnf Linux系统)或者(my.ini win系统)

C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

2)、master配置:
找到mysqld部分,插入如下内容:


# 配置主从:
# 唯一,要与slave的不同。
server-id=1

skip-grant-tables
#(mysql路径)
basedir = C:\ProgramData\MySQL\MySQL Server 5.7\
#(data路径,存放日志文件)
datadir = C:\ProgramData\MySQL\MySQL Server 5.7\Data\

# 开启二进制日志
log-bin = mysql-bin

# 需要同步的数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)
binlog-do-db=db_img_0
binlog-do-db=db_img_1
binlog-do-db=db_info_0
binlog-do-db=db_info_1
binlog-do-db=role
binlog-do-db=role_user
binlog-do-db=user
# 表示不需要备份的数据库为mysql
binlog-ignore-db=mysql

3)、配置:

a) 首先重启mysql服务,
右键计算机管理---服务---mysql停止/启动。

b) 创建用户:
// CREATE USER ' 使用名 '@' 从库 IP 地址 ' IDENTIFIED BY ' 密码 ';
mysql>create user 'ir'@'192.168.1.52' identified by '123456';

c) 分配权限:
// GRANT REPLICATION SLAVE ON . TO ' 使用名 '@' 备机 IP 地址 ';
grant replication slave on *.* to 'ir'@'192.168.1.52';  

d) 刷新权限:
mysql> flush privileges; 

e) 查看master状态:

             File 的值为:    mysql-bin.000013;
         Position 的值为:    154;
     Binlog_Do_DB 的值为:    test;
 Binlog_Ignore_DB 的值为:    manual,mysql ;


记下 File 、 Position 的值,配置从库要用到。

1.2 主库master的配置

1)、master配置:
找到mysqld部分,插入如下内容:


# 配置主从:
# 与主库不同,
server-id=2

skip-grant-tables
#(mysql文件夹路径)
basedir = C:\ProgramData\MySQL\MySQL Server 5.7\
#(data路径,存放日志文件)
datadir = C:\ProgramData\MySQL\MySQL Server 5.7\Data\

# 开启二进制日志
log-bin = mysql-bin
# 需要同步的数据库。
binlog-do-db=db_img_0
binlog-do-db=db_img_1
binlog-do-db=db_info_0
binlog-do-db=db_info_1
binlog-do-db=role
binlog-do-db=role_user
binlog-do-db=user
# 表示不需要备份的数据库为mysql
binlog-ignore-db=mysql

2)、配置:

a) 首先重启mysql服务,
右键计算机管理---服务---mysql停止/启动。

b)、登录上Slave数据库。
用户名改和密码:"root 123456"

c)、停止同步。
输入 "stop slave;"。

d)、重置同步。
输入"reset slave;"。

e)、更改位置。(与Master查看的日志位置保持一致)
CHANGE MASTER TO        
MASTER_HOST='192.168.1.73',          # 主机的IP      
MASTER_USER='ir',                    # 之前创建的用户名       
MASTER_PASSWORD='123456',            # 之前创建的密码      
MASTER_LOG_FILE='mysql-bin.000013',  # 主库中show master status---File下的那个值       
MASTER_LOG_POS=154;                  # 主库中show master status---Position下的那个值       


f)、启动同步。
输入" start slave; "。

g)、查看是否同步成功。
输入" show slave status\G; "
结果如下表格所示:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

二者均为Yes表示成功啦!

如果slave_SQL_Running提示为NO,请等待10-20分钟后再次输入"show slave status\G;"

查看是否同步成功;若仍不成功,请检查之前操作是否存在问题。

输出结果如下:


       Slave_IO_State: Waiting for master to send event                  
          Master_Host: 192.168.1.73                  
          Master_User: ir                  
          Master_Port: 3306                
        Connect_Retry: 60             
      Master_Log_File: mysql-bin.000003         
  Read_Master_Log_Pos: 154              
       Relay_Log_File: DESKTOP-6BJDELI-relay-bin.000004                
        Relay_Log_Pos: 147655155       
Relay_Master_Log_File: mysql-bin.000013             
     Slave_IO_Running: Yes            
    Slave_SQL_Running: Yes              
      Replicate_Do_DB:           
  Replicate_Ignore_DB:  

至此,mysql主从复制,配置完成啦!!!

2、mycat的安装与使用。

2.1.1 安装jdk

因为 MyCat 是用 Java 开发的,因此 MyCat 运行需要安装 JDK(准确来说是 JRE 就够了),并且需要 JDK1.7 或以上版本。

新建JAVA_HOME
变量值为:C:\Program Files\Java\jdk1.8.0_121

新建classpath
值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

编辑path
后追加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

命令行输入:java -version

C:\Users\sprivacy>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安装成功!!!

2.1.2 安装mycat

官网下载地址: http://www.mycat.io/

本文下载版本为1.6

安装目录为:
D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\

设置环境变量:
第一步:
    新建MYCAT_HOME
    变量值为:D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat(mycat解压路径)

第二步:
    编辑path
    后面追加" %MYCAT_HOME%\bin "

进入mycat---bin目录下: .\mycat.bat start

PS D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin> .\mycat.bat start
wrapper  | Starting the Mycat-server service...
wrapper  | Mycat-server started.

安装成功。

2.2 配置

2.2.1 修改schema.xml

数据库设置,name与server.xml中schema对应

    
        
        

分片信息,分库相关配置

    
    
    
    

物理数据库,真正存储数据的数据库,读写分离配置:

    
        select user()
        
        
            
            
        
        
        
    

备注: schema.xml文件中有三点需要注意:balance="1",writeType="0" ,switchType="1"

balance=1:readHost及备用的writeHost参与select的负载均衡。
switchType=2:基于mysql主从同步的状态决定是否切换。
hearHbeat:主从切换的心跳语句必须为show slave status;

mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writeHost,需要通过mycat的主从复制将数据复制到readHost。

如果mysql没有主从复制配置,mycat在读写分离后,数据写入writeHost后,readHost一直没有数据。

2.2.2 修改rule.xml

分库分表配置还需要配置rule文件:

    
        
            id
            mod-long
        
    
    // 此处需要修改,根据db_id取mod;如果还有分片的。复制此段代码继续添加。
    
        
            db_id
            mod-long
        
    
    
    // 分片的规则为字符串时:
    
        
            authentication_id
            partition-by-string-hash-function
        
    

分片数量:

    
        
        4
    

分片规则为字符串时:

    
        
            client_id
            partition-by-string-hash-function
        
    
    
    
        
            token_id
            partition-by-string-hash-function
        
    

规则为字符串时,需要指定:

    
        512 
        2 
        0:6 
    

2.2.3 修改server.xml

server 文件跟读写分离关系不大,但是在这里需要该文件配置来连接mycat的用户及权限。

    
        root
        db_im
        
        
        
    

    
        user
        db_im
        true
    
    

备注:
server文件里mycat的登录用户名和密码可以任意设置,该用户名及密码是作为登陆mycat时的账户信息。我这里配置的是root/root账户。

我这里没有做特殊权限,这些可以自己根据需求定义。

逻辑库名(即db_im)也即是登陆mycat后显示的库名,登陆后显示的就是代理的真是的mysql数据库的相关表,要和schema里的相对应。

3、测试

启动mycat服务

// 进入mycat安装目录下的bin文件:输入 .\mycat.bat start

PS D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin> .\mycat.bat start

出现以下结果,表示启动成功:
PS D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin> .\mycat.bat start
wrapper  | Starting the Mycat-server service...
wrapper  | Mycat-server started.

navicat 连接mycat:

连接名:    test_mycat
ip:         192.168.1.73
端口:      8066 (mycat默认端口)
用户名:
密码:      root

连接成功,执行相关新增、删除、查询语句,可以实现读写分离相关功能。

停止mycat服务

// 进入bin文件输入:  .\mycat.bat stop
PS D:\soooooft\mycat\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin> .\mycat.bat stop
wrapper  | Stopping the Mycat-server service...
wrapper  | Mycat-server stopped.

停止成功!

你可能感兴趣的:(win mycat及mysql主从库、读写分离的初使用)