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下载地址
a、http://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

说明:name mycat连接账号相当于mysql的账号;
schemas 中的Test是逻辑数据库,对应schema.xml
readOnly账号是否只读;
5、配置/mycat/conf/schema.xml
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,测试步骤:
- , 进去会有初始化后的TESTDB数据库(新建数据表TESTDB,加入ID,NAME表单);
2), 往mycat插入一条数据,提交刷新;
3),观察刚插入的数据;
4), 通过从库查看发现有刚新添加的数据;
5),通过主库查看发现也有这条刚添加的数据;
==========读
1),在从库的TESTDB插入一条数据(生产环境不建议这样测试);
2),在mycat刷新可以看见有新数据记录,在主库没有数据记录,说明读取数据在从库;
数据分离成功!