MySQL主从同步+mycat读写分离
1.1环境准备
主机名 IP 系统版本/MYSQL版本 角色
Qing4 192.168.1.5 Centos7.5/5.7.26 Master
Qing5 192.168.1.6 Centos7.5/5.7.26 slave
Qing6 192.168.1.7 Centos7.5/5.7.26 Qing
1.2配置主数据库服务器qing4,创建主库所同步的库。
mysql> create database qing1;
mysql> use qing1;
1.2(1)在同步的库中创建同步的表
mysql> create table test1(id int,name char(10));
1.2(2)插入数据,以便查看主从同步结果
mysql> insert into test1 values(1,‘ln’),(2,‘fb’);
1.3创建主从同步的授权用户:
mysql> grant replication slave on . to slave@‘192.168.1.%’ identified by ‘123456’;
刷新一下权限:mysql> flush privileges;
2配置主机上的my.cnf文件
在 vim /etc/my.cnf 文件下添加
[mysqld]
…………… //省略部分内容
log-bin=/data/mysql/log/mysql-bin-master #启用二进制日志
server-id=1 #数据库服务器ID标识
binlog-do-db=qing1 #可以被从服务器复制的库, 即二进制需要同步的数据库名
2.2重启MySQL服务并查看master 状态
[root@guoqing4 ~]# systemctl restart mysqld
2.(1)进入到主库中
mysql> show master status; //显示主服务器的当前binlog文件及事件位置
2.3查看二进制日志
mysql> show binlog events\G
3.到出数据库
因为咱们先创建的qing1库和test1表,才开启的binlog,所以binlog没有记录之前的sql语句,复制前要保证同步的数据库一致
[root@guoqing4 ~]# mysqldump -uroot -p123456 -B qing1 > qing1.sql #可以导出数据库
将导出的数据库传给从服务器
[root@guoqing4 ~]# scp qing1.sql root@192.168.1.6:/root
4.配置从数据库服务器qing5
4.1两台数据库服务器MySQL版本要一致,查看一下
mysql> show variables like ‘%version%’; #qing4
mysql> show variables like ‘%version%’; #qing5
4.2测试连接到主服务器是否成功
mysql -uslave -p123456 -h 192.168.1.5
mysql> show databases; #只有复制的权限, 是看不到其他库的。正常
4.3导入服务器,和主数据库服务器保持一致
[root@guoqing5 ~]# mysql -uroot -p123456 < qing1.sql
4.4修改从服务器配置文件
从服务器没必要开启bin-log日志
4.5关闭MySQL并修改/etc/my.cnf文件
[root@guoqing5 ~]# systemctl stop mysqld
vim /etc/my.cnf
server-id = 2 #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。这些ID值能唯一识别复制服务器群集中的每个服务器实例
relay-log=/data/mysql/log/relay-log-bin #中继日志文件的路径名称
relay-log-index=/data/mysql/log/slave-relay-bin.index #中继日志索引文件的路径名称
4.6重启服务器
[root@guoqing5 ~]# systemctl restart mysqld
4.7配置MySQL数据库从服务
4.7(1)在配置从库之前要先去主库看一下主节点的状态
mysql> show master status;
4.7(2)进入从库
[root@guoqing5 ~]# mysql -uroot -p123456
mysql> stop slave; #停止slave
4.7(3)指定主节点,和主库对应
mysql>change master to master_host=‘192.168.1.5’,master_user=‘slave’,master_password=‘123456’,master_log_file=‘mysql-bin-master.000002’,master_log_pos=154;
mysql> start slave; #启动slave
mysql> show slave status\G #查看slave的状态是否同步成功
5.实验一下,看是否同步成功
5.(1)去从库看下
5.(2)查看一下现在的从库表内容
5.(3)去主库在表中新插入两条数据,并查看从库是否同步
搭建mycat
1.1三台机器分别修改主机名,并做hosts绑定
vim /etc/hosts
192.168.1.7 mycat-node qing6
192.168.1.5 qing4
192.168.1.6 qing5
2.1将mycat软件包上传到qing6上
RZ上传 ls查看
2.2将此文件解压到/usr/local/下
tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local/
2.3去到mycat目录下
cd /usr/local/mycat/ ls查看一下cd回去
2.4再将jdk上传
RZ上传 ls查看
2.5将此文件解压到/usr/local/下
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
2.6配置JDK环境变量
vim /etc/profile #在文件最后加入一下行
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=J A V A H O M E / b i n : JAVA_HOME/bin:JAVAHOME/bin:PATH
CLASSPATH=J A V A H O M E / j r e / l i b / e x t : JAVA_HOME/jre/lib/ext:JAVAHOME/jre/lib/ext:JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
source /etc/profile #使环境变量生效
2.7查看Java环境
java –version
2.8配置mycat环境变量 将mycat/bin/的所有软链接到/local/bin/下
ln -s /usr/local/mycat/bin/* /usr/local/bin/
2.9配置server.Xml文件
去到conf目录下
cd /usr/local/mycat/conf/
将server.xml文件备份一下
cp server.xml server.xml.bak
配置文件 vim sercer.xml
设置mycat的管理员用户,用来登陆mycat
设置mycat的普通用户,只有只读权限
3配置schema.xml文件,搭建集群
3.1去到conf目录下
cd /usr/local/mycat/conf/
cp schema.xml schema.xml.bak
vim schema.xml
4给所有mysql root远程登陆权限
4.1在所有的mysql服务器上执行:mysql> grant all on . to root@‘192.168.1.%’ identified by ‘123456’; 刷新一下:mysql>flush privileges;
4.2启动mycat服务
mycat console #先使用console进行检测
4.启动一下
[root@qing6 conf]# mycat start
4.2检查端口8066
netstat -antup | grep 8066
如果没有端口,查看日志
tail /usr/local/mycat/logs/mycat.log
4.3使用root账号登陆测试
mysql -uroot -p123456 -P 8066 -h 192.168.1.7