准备工作
- 两台虚拟机服务器(可自行扩展至多台),centos 7.6操作系统,主库ip:192.168.174.130,从库ip:192.168.174.128
- 安装jdk 1.8+
- mysql 5.7 数据库服务器
- mycat-1.6.7.3 数据库中间件服务器
- 数据库连接工具mysql workbench 6.3.10
mysql5.7主从复制配置
mysql5.7安装可以网上百度,有很多教程。这里主要讲解主从配置的设置,从库不设置只读操作
主库配置
- 开启bin-log功能
# 编辑my.cnf文件
vi /etc/my.cnf
# 修改如下配置
[mysqld]
log_bin=mysql-bin # 二进制日志的文件名称
server_id=1 # 服务器的唯一id
# 为了在使用InnoDB和事务的复制设置中获得最大的持久性和一致性,建义配置以下两项
innodb_flush_log_at_trx_commit=1
sync_binlog=1
# 重启服务器
systemctl restart mysqld
- 创建从库连接帐号
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; # 创建用户,生产环境不建议放开ip
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; # 分配权限
flush privileges; # 刷新权限数据
- 查看主库状态
SHOW MASTER STATUS;
从库配置
- 修改my.cnf配置文件,vi /etc/my.cnf
[mysqld]
server-id=2 # 增加此项配置,值是唯一,与主库的不重复
- 重启mysql服务
systemctl restart mysqld
- 登录mysql从库,配置主库信息
# MASTER_LOG_FILE指主服务器二进制文件名称,MASTER_LOG_POS指同步的下标位置,可通过查看主库master状态得到
CHANGE MASTER TO MASTER_HOST='192.168.174.130', MASTER_USER='slave', MASTER_PASSWORD='123456'; MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=1063;
- 开始并查看从库状态
START SLAVE; # 开启从库
STOP SLAVE; # 停止从库
SHOW SLAVE STATUS; # 查看从库状态
这两项都为Yes表明从库能正常复制主库的数据。
mycat读写分离配置
mycat是一款性能好、功能强大、稳定的数据库中间件。使用简单,可用于数据库读写分离、分库分表。提高数据存储层的性能和存储容量。对业务代码透明,不需要修改dao层即可无缝扩展。
可以把mycat看成一个数据库,就像使用mysql一样的去连接和使用,没有任何区别。mycat是用java语言开发的,可以想像成一个类似于tomcat的程序,安装简单。下载好tar包,解压后,修改配置文件,起动即可。
安装mycat
- 下载mycat程序包,使用的是Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz版本
wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
- 解压缩tar包
tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz -C /usr/local/
解压后的目录结构如下: