打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CentOS7 使用Mycat实现mysql读写分离部署

一、mycat简介

 MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

 MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度

 具体介绍请参考: mycat官方网站

二、环境准备

OS: CentOS Linux release 7.9.2009 (Core)

关闭系统SELINUX 功能:

执行命令如下:

sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config 

或vi 编辑/etc/selinux/config 文件,更改SELINUX=disabled 

更改后,执行命令:reboot 重启系统生效 

重启后,运行:getenforce 检查selinux状态是否为Disabled状态

*mysql数据库服务器关闭SELINUX

*运行在Linux下的mysql,需要配置 lower_case_table_names=1 不区分大小写

添加到mysql配置文件中 /etc/my.cnf

配置完成后,重启mysql数据库生效

二、主备库搭建

2.1 node1主库配置

# 编辑mysql配置文件,在[mysqld]下加入以下参数

vim /etc/my.cnf

enforce_gtid_consistency=ON

gtid_mode=ON

log_bin=mysql-bin

log_bin_index=mysql-bin.index

binlog_format=row

relay_log=reay-log

relay_log_index=relay-log.index

server-id=1

# 重启mysql服务

systemctl restart mysqld

# 备份mysql

mysqldump --all-databases --single-transaction --triggers --routines --set-gtid-purged=OFF --host=127.0.0.1 --port=3306 --user=root --password > backup.sql

# 创建同步账号

create user 'repl'@'192.168.56.110' identified by 'Musen123!@#';

grant replication slave on *.* to 'repl'@'192.168.56.110';

flush privileges;

2.2 node2备库配置

# 编辑mysql配置文件,在[mysqld]下加入以下参数

vim /etc/my.cnf

enforce_gtid_consistency=ON

gtid_mode=ON

log_bin=mysql-bin

log_bin_index=mysql-bin.index

log_slave_updates=ON

server-id=2

binlog_format=row

relay_log=reay-log

relay_log_index=relay-log.index

# 重启mysql服务

systemctl restart mysqld

# 恢复mysql数据库

主库备份文件backup.sql传至备库/tmp目录下

登录mysql数据库后,执行如下指令

source /tmp/backup.sql;

# 连接主库进行同步

change master to master_host='192.168.56.109', master_user='repl',master_password='Musen123!@#',master_port=3306,master_auto_position=1;

start slave;

# 确认主备库同步状态

show slave status \G;

3.3创建数据库

在主库上执行创建数据库脚本

create database jumpserver default charset 'utf8';

执行完成后,在备库上查询是否有jumpserver数据库

show databases;

三、Mycat搭建

3.1 JDK安装

安装jdk1.8可以直接使用yum install java-1.8.0-openjdk.x86_64 -y 进行安装。

以下部署,采用手动部署jdk1.8,去官网下载jdk1.8的程序包,下载后文件为jdk-8u291-linux-x64.tar.gz

# 上传jdk1.8安装包至mycat服务器

# 上传到/usr/local 目录下,并进行解压

tar xzf jdk-8u291-linux-x64.tar.gz

# 配置系统环境变量

vi /etc/profile   #编辑文件,在末尾处加入以下内容

export JAVA_HOME=/usr/local/jdk1.8.0_291

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

# 保存并退出

# 使配置生效

source /etc/profile

# 验证版本

java -version

3.2 Mycat安装

# 创建软件存放目录

mkdir /opt/app

# 下载Mycat

cd /opt/app

wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

# 解压缩

tar xzf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

# 设置Mycat环境变量

echo 'export MYCAT_HOME=/opt/app/mycat' >> /etc/profile

source /etc/profile

3.3 Mycat配置

# 配置数据源

/opt/app/mycat/conf/schema.xml中定义了后端数据源、逻辑库/表等。

dataHost:Mycat后端连接的数据库(物理库,真实的数据库),即后端数据源,可以是mysql、oracle等。

schema:逻辑库,可以看做是一个或多个后端数据库集群构成的逻辑库。

dataNode:数据分片,逻辑库的构成,即一个逻辑库可能分为多个分片,数据分片最终会落在一个或多个物理库。

以下配置是配置读写分离的配置截图

注意balance属性 负载均衡类型,目前的取值有3 种: 

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

balance="1",全部的readHost 与stand by writeHost 参与select 

语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1 与M2 互为主备),正常情况下,M2,S1,S2 都参与select语句的负载均衡。 

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

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

力,注意balance=3 只在1.4 及其以后版本有,1.3 没有。

# 配置mycat用户

/opt/app/mycat/conf/server.xml中定义mycat的系统配置和用户等。可以通过xml新增和修改mycat用户信息。

以下为schema:test添加了两个用户root和user,应用使用这两个账号连接mycat进行数据的操作,如果不用user用户,可以删除里面的配置。

# mycat启动

/opt/app/mycat/bin/mycat start

# mycat运行端口查看

netstat -antup | grep 8066

# mycat管理端口查看

netstat -antup | grep 9066

# 使用mysql客户端连接mycat 验证

mysql -u root -h 192.168.56.111 -P 8066 -p

# mycat管理命令

管理命令需要连接mycat的9066默认端口

mysql -u root -h 192.168.56.111 -P 9066 -p

3.4 配置防火墙

添加防火墙过滤规则,允许8066与9066通过

firewall-cmd --permanent --zone=public --add-port=8066/tcp

firewall-cmd --permanent --zone=public --add-port=9066/tcp

firewall-cmd --reload

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mysqldump
MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
Mycat
MySQL5.6 Replication主从复制(读写分离) 配置完整版
生产环境中linux下的mysql安装
MySQL主从复制能完美解决数据库单点问题吗?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服