搭建mycat+mysql集群的步骤

1 mysql主从配置

1.1 主虚拟机配置(192.168.137.128)

1.2 从虚拟机配置(192.168.137.129)

1.3 测试

2 配置mycat

2.1 安装jdk

2.2 安装mycat

2.3 配置server.xml

2.4 配置schema.xml

2.5 测试

1主虚拟机配置(192.168.11.109

  • 1.1 修改/etc/mysql/mysql.conf.d/mysqld.cnf文件
    • 1.1.1 [mysqld]下添加以下

 

character_set_server = utf8

init_connect = 'SET NAMES utf8'

log-bin=mysql-bin

server-id=1

 1.2 [mysqld]下注释掉bind-address = 127.0.0.1 

进入%home%/bin,执行mysql -uroot -proot

#授权。允许root用户,从192.168.137.*的IP范围 远程访问A主mysql

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.137.*' IDENTIFIED BY 'root' WITH GRANT OPTION;

#生效。该操作很重要!

mysql>FLUSH PRIVILEGES;

  • 1.3.3 显示master

show master status;

 1、使用 service 停止:service mysqld stop

  2、使用 service 启动:service mysqld start

service mysqld restart

service mariadb restart

 

从虚拟机配置(192.168.11.117)

 

2.1 修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

 

2.1.1 在[mysqld]下添加以下

        vi /etc/mysql/mysql.conf.d/mysqld.cnf

        character_set_server = utf8

        init_connect = 'SET NAMES utf8'

        log-bin=mysql-bin

        server-id=2

  • 2.3.1 进入mysql,重置slave

这里的 master_log_file master_log_pos 在主虚拟机的 mysql master 中,就是上面的图所示!

 

  stop slave;

    reset slave;

    change master to           master_host='192.168.137.128',master_user='root',master_password='123',master_log_file='mysql-bin.000002',master_log_pos=120;

  •  
    • 2.3.2 启动slave

     start slave;

  • 2.4 测试

master虚拟机中创建一个数据库,然后再slave虚拟机中查看,如果,slave中有刚刚测试的数据库,说明mysql主从配置成功。

主: 

create database testMS;

use testMS;

create table ming(id int,name varchar(200));

insert into ming values(1,'ming');

select * from ming;

 

3.配置server.xml

 

到 mycat 的 conf 目录下,修改 server.xml 文件添加 test 和user 用户,test 用户,密码也为 test,user 用户,密码也为user

 

       <user name="test">

                <property name="password">test</property>

                <property name="schemas">TESTDB</property>

 

                <!-- 表级 DML 权限设置 -->

                <!--

                <privileges check="false">

                        <schema name="TESTDB" dml="0110" >

                                <table name="tb01" dml="0000"></table>

                                <table name="tb02" dml="1111"></table>

                        </schema>

                </privileges>

                 -->

           </user>

 

           <user name="user">

                <property name="password">user</property>

                <property name="schemas">TESTDB</property>

                <property name="readOnly">true</property>

           </user>

 4.配置schema.xml

 

设置读和写服务器的ip与端口,以及集群策略。这里的 schema 的 name 要与 server.xml 的 schema 保持一致, database 对应的是 mysql 里面已经存在的数据库,也就是说,mycat 的 TESTDB 代理了 主/从虚拟机的 mysql 的 test 数据库

 

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

 

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

  </schema>

 

  <dataNode name="dn1" dataHost="master" database="testms" />

 

  <dataHost name="master" maxCon="1000" minCon="10" balance="1" writeType="0"     dbType="mysql" dbDriver="native">

             <heartbeat>show slave status</heartbeat>

             <writeHost host="host2" url="192.168.137.128:3306" user="root" password="123" />

            <writeHost host="host4" url="192.168.137.129:3306" user="root" password="123" />

</dataHost>

</mycat:schema>

 

show slave status 表示一种集群策略,只适用在一主一从的环境中,当主 down 掉, 从可以充当主和从

 

balance属性

 

balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上

balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡

balance=”2”,所有读操作都随机的在 writeHost、 readhost 上分发。

balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力

 

writeType 属性

 

负载均衡类型,目前的取值有 3 种:

writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost, 重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties

writeType=”1”,所有写操作都随机的发送到配置的 writeHost

 

  • 5 启动mycat

 cd /opt/mycat/bin

 ./mycat start

补充:mycat的常用命令

关闭

mycat stop

重启

mycat restart

查看mycat状态

mycat status

  • 6 测试

现在 mycat 可以代理 mysql 了,用 navicat 连接 mycat8066端口)

现在到主虚拟机用命令行查看数据库,看看刚在 navicat 写进 mycat 的数据有没有显示出来

mycat 的账号密码登录到主虚拟机的 mycat,查看并添加一条数据 tom

mysql -uroot -ptest -h127.0.0.1 -P8066

 

1:注意不要用mysql -uroot -ptest -hlocalhost -P8066
localhost会直接连接到mysql 
注意要mysql -uroot -p -hlocalhost -P8066
先不要密码,然后在输入密码。
2

schema.xml中数据库名称注意要对称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值