MySQL主从同步+MyCat数据读写分离

一. Centos7安装mysql5.7步骤

----------------------------------------

环境准备:

centos7系统

1,网络:192.168.X.130(master),192.168.X.131(slave)

2,连接外网

3,装epel-release仓库

4,装wget/vim等;

5,  关闭防火墙 # systemctl stop firewalld.service

# systemctl  disable firewalld.service

    或者:

# firewall-cmd --permanent--zone=public --add-port=3306/tcp                

# firewall-cmd --permanent --zone=public--add-port=3306/udp    

# firewall-cmd --reload   #设置新的防火墙规则生效

----------------------------------------

a. 准备

准备两台Centos7环境的虚拟机,我用的两台:192.168.X.130(master),192.168.X.131(slave)

b. 下载mysql的repo源(下载-安装-配置-起服务)

# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

c. 安装源

# rpm -ivh mysql57-community-release-el7-8.noarch.rpm

d. 安装数据库  # yum install mysql-server

e.修改配置文件

# vim /etc/my.cnf

f. 启动数据库 

# systemctl start mysqld

# systemctl status mysqld

g.登录数据库

 5.7版本默认对于root帐号有一个随机密码,可以通过

# grep "password" /var/log/mysqld.log

或者:

# cat /var/log/mysqld.log |grep password

#mysql -uroot -p        回车,粘贴随机密码

h.设置新密码,需要严格按照规范去设置密码

>set password=password('数据库新密码');

关闭虚拟机做快照,克隆虚拟机,UUID会重复,问题已解决

================================

二、搭建MySQL5.7 主从复制服务器

1、Master

a. 修改Master的配置# /etc/my.cnf,并重启mysql

server-id=1

log_bin=mysql-bin

# service mysqld restart  #重启

b. 查记录File与Position的值,此处的查询结果,将在下面Slave建立与Master联系时用到。

> show master status;

c.在master上为slave建立用户

>grant replication slave, reload, super on *.* to 'repl'@'192.168.X.131' identified by 'password';

--------------------增加访问权限后期检验使用:

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

--------------------

>GRANT ALL PRIVILEGES ON *.* TO 'repl'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

-------------

需要立即生效:

> flush privileges;

#systemctl restart mysqld

到此Master配置完毕!

2、Slave

a. 修改Slave的配置my.cnf,并重启mysql

server-id=2

log_bin=mysql-bin

# service mysqld restart  #重启

b.Slave建立与Master联系

登录执行

--------------------

mysql> change master to

    -> master_host='192.168.X.130',

    -> master_port=3306,

    -> master_user='repl',

    -> master_password='password',

    -> master_log_file='mysql-bin.00000X',

    -> master_log_pos=XXX;

-------------------

或者:

-------------------

>change master to master_host='192.168.X.130',master_port=3306,master_user='repl',master_password='password',master_log_file='mysql-bin.00000X',master_log_pos=XXX;

--------------------增加访问权限后期检验使用:

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

-------------

c. 启动Slave

# start slave;    #启动

# stop slave;     #关闭

d. 查看slave状态

show slave status \G;

检查:

   Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

e.测试

用数据库连接工具同时连接Master和Slave,在Master里面创建数据库Test,并创建表user。此时可以看到Slave也出现了Test数据库和Test。向user表添加数据效果也一样。

master:

>create databases test;

>show databases;

>use test;

>show tables;

slave:

>show databases;

可以看到数据已经插入。记录已经存在,到这里整个主从复制的过程就完成了。

=========================

三,MyCat实现读写分离

master:

1、下载JDK环境包:jdk-8u11-linux-x64.tar.gz

a、解压到/usr/local

b在/etc/proflie配置java环境变量及mycat Home路径

2、Mycat下载地址

ahttp://dl.mycat.io/

b我下载的是Mycat-server-1.6-RELEASE-20161028204710-linux.tar 

3,安装

a解压到/usr/local目录下,即mycat目录

b 在/etc/profile配置java环境变量及mycat Home路径

立即生效

#source /etc/profile

3、修改   wrapper.conf文件

   主要修改下面这一行代码:

4、查看/mycat/conf/server.xml

<user name="user">

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

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

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

</user>

说明:name mycat连接账号相当于mysql的账号;

schemas 中的Test是逻辑数据库,对应schema.xml

readOnly账号是否只读;

5、配置/mycat/conf/schema.xml

-------------------------------------

<?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="localhost1" database="TESTDB" />

  

        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"

                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

                <heartbeat>select user()</heartbeat>

                <!-- can have multi write hosts -->

                <writeHost host="hostM1" url="192.168.X.130:3306" user="root"

                                   password="数据库密码">

                        <!-- can have multi read hosts -->

                        <readHost host="hostS2" url="192.168.X.131:3306" user="root"              password="数据库密码"  />

 </writeHost>

        </dataHost>

</mycat:schema>

----------------------------------------------------

6启动Mycat

#/mycat/bin/mycat start    #对比自己的安装路径

StartingMycat-server...

-------------------------------------

#mycat/bin/mycat restart

#mycat/bin/mycat stop

#mycat/bin/mycat status

-------------------------------------

7、测试

用在master连接

# mysql -uroot -p123456 -h127.0.0.1 -P8066

或者用Navicat Preminum (防火墙和mysql访问权限)连接。

以下用Navicat Preminum进行测试:

点击连接测试,成功以后在点击确定即连接mycat成功了。

     =========写

   4,测试步骤:

   1)  ,  进去会有初始化后的TESTDB数据库(新建数据表TESTDB,加入ID,NAME表单);

   2),  往mycat插入一条数据,提交刷新;

   3),观察刚插入的数据;

   4),   通过从库查看发现有刚新添加的数据;

   5),通过主库查看发现也有这条刚添加的数据;

   ==========读

   1),在从库的TESTDB插入一条数据(生产环境不建议这样测试);

   2),在mycat刷新可以看见有新数据记录,在主库没有数据记录,说明读取数据在从库;

数据分离成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值