ITPub博客

首页 > 数据库 > MySQL > CentOS7系统下使用Mycat实现mysql读写分离部署

CentOS7系统下使用Mycat实现mysql读写分离部署

原创 MySQL 作者:dba_sam 时间:2021-06-20 11:15:33 1 删除 编辑

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

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

具体介绍请参考:

 

OS: CentOS Linux release 7.9.2009 (Core)

序号

主机

IP

部署内容

备注

1

mycat1

192.168.56.111

mycat 节点


6

Node1

192.168.56.109

搭建主备同步,并创建1个database(jumpserver)

主库

7

Node2

192.168.56.110

从主库同步信息

备库

 

关闭系统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数据库生效

主库配置

# 编辑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;

备库配置

# 编辑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;

创建数据库

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

create database jumpserver default charset 'utf8';

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

show databases;


安装

安装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

安装

# 创建软件存放目录

mkdir /opt/app

 

# 下载Mycat

cd /opt/app

wget

 

# 解压缩

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

配置

# 配置数据源

/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

配置防火墙

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

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

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

firewall-cmd --reload


-----------END-----------------


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70000068/viewspace-2777483/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
本人从事oracle、mysql、postgresql等数据库管理多年,具备丰富的实战经验,同时维护大型企业的Linux操作系统、vmware虚拟化、openstack云计算平台,具有部署、优化、故障处理等经验。

注册时间:2021-05-16

  • 博文量
    49
  • 访问量
    33609