随着单位业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析了下问题出现在哪儿呢?关系型数据库本身比较容易成为系统瓶颈、单机存储容量、连接数、处理能力有限。当单表的数据量达到1000W或100G以后,由于查询纬度较多,及时添加从库、优化索引,做很多操作时性能仍下降严重。
本文章采用三台虚拟机部署MySQL集群,利用MyCat中间件进行操作
虚拟机安装相对简单,不做赘述,建议先安装一台虚拟机即可,待装好MySQL进行克隆另外两台。
参考:Hive安装部署_不图安逸的小码农的博客-CSDN博客
Mysql版本:mysql-5.7.38-1.el7.x86_64.rpm-bundle
安装完成后,clone两台node2、node3
修改node2\node3主机名:
- hostnamectl set-hostname node2
-
- hostnamectl set-hostname node3
修改node2\node3的IP地址
至此,三台虚拟机及MySQL已经安装成功!
3306:MySQL端口号;8066:MyCat数据访问端口;9066:MyCat数据库管理端口
2182:zookeeper端口号;8022:MyCat-Web访问端口号
- #开放指定防火墙3306、8066、9066、2181、8022端口
-
- firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
- firewall-cmd --zone=public --add-port=8066/tcp --permanent
-
- firewall-cmd --zone=public --add-port=9066/tcp --permanent
-
- firewall-cmd --zone=public --add-port=2181/tcp --permanent
-
- firewall-cmd --zone=public --add-port=8082/tcp --permanent
-
- #重启防火墙
-
- firewall-cmd --reload
-
- #查看防火墙开放端口
-
- firewall-cmd --list-ports
-
本示例所有软件都安装再software文件夹中
在 /usr/local 下新建software
上传jdk至node1 software文件夹
- 查看自带jdk
- yum list installed |grep java
-
- 卸载自带
- yum -y remove java
-
- 在software下新建文件夹jdk,将安装包上传至文件夹
- 解压
- tar -zxvf jdk-8u333-linux-x64.tar.gz
-
- 配置变量
- vim /etc/profile
键盘:大G小o插入
- #set java environment
- JAVA_HOME=/usr/local/software/jdk/jdk1.8.0_333
- CLASSPATH=.:$JAVA_HOME/lib.tools.jar
- PATH=$JAVA_HOME/bin:$PATH
- export JAVA_HOME CLASSPATH PATH
- source /etc/profile
-
- java -version
先检查三台服务器启动情况,运行中即可
systemctl status mysqld
新建mycat文件夹,在software/mycat解压
特别说明:新建mycat文件夹后,在文件夹内解压,会有两层mycat目录,操作时没注意这个问题,所以不建议用户新建mycat文件夹,直接在software中解压mycat压缩包
- tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz
-
- #######删除mycat/lib下的mysql-connector-java-5.1.35
-
- rm -rf mysql-connector-java-5.1.35
建议替换mycat中lib文件夹下的mysql-connector-java-5.1.35 .而使用 mysql-connector-java-8.0.22,原因如下
官网链接:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html
下载地址:https://dev.mysql.com/downloads/connector/j/
下载mysql-connector-java-8.0.22 并上传
文件操作权限不够
chmod 777 mysql-connector-java-8.0.22
开始配置文件:
切换到mycat的conf目录,配置schema.xml
为了方便编辑,可以用notepad++操作,其他方便操作的软件亦可,没有NppFTP的话,可以点击”插件管理“安装一下
点击 Add new
连接上之后,选择schema.xml进行编辑
- mycat:schema SYSTEM "schema.dtd">
- <mycat:schema xmlns:mycat="http://io.mycat/">
-
- <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
- <table name="TB_ADCP" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
- schema>
-
- <dataNode name="dn1" dataHost="dhost1" database="testdb" />
- <dataNode name="dn2" dataHost="dhost2" database="testdb" />
- <dataNode name="dn3" dataHost="dhost3" database="testdb" />
-
- <dataHost name="dhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
- <heartbeat>select user()heartbeat>
-
- <writeHost host="master" url="jdbc:mysql://xxx:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456">
-
- dataHost>
-
- <dataHost name="dhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
- <heartbeat>select user()heartbeat>
-
- <writeHost host="master" url="dbc:mysql://xxx:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456">
-
- dataHost>
-
- <dataHost name="dhost3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
- <heartbeat>select user()heartbeat>
-
- <writeHost host="master" url="ldbc:mysql://xxx:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456">
-
- dataHost>
-
- mycat:schema>
选择server.xml进行编辑
1、server.xml用户编辑
2、server.xml中方便mycat-web的SQL统计的 useSqlStat要进行修改,修改为1,不然mycat-web安装好后,无法监控SQL语句
<property name="useSqlStat">1property>
- bin/mycat start
-
- bin/mycat stop
进入mycat的log文件夹,查看输出日志,是否启动正确
tail -f logs/wrapper.log
连接mycat同连接mysql一样
mysql -h 10.50.50.22 -P 8066 -u root -p
输入server.xml中配置的密码,连接上mycat
利用DataGrip数据库软件连接三台集群的MySQL,各新建实体数据库,名称为schema.xml中配置
向逻辑表中插入数据,测试
- CREATE TABLE tb_adcp(
- id BIGINT(20) NOT NULL,
- sensor VARCHAR(100) NOT NULL,
- PRIMARY KEY(id)
- )
- ENGINE=INNODB DEFAULT CHARSET=utf8;
返回DataGrip查看集群实体库中表是否绑定并建好
在mycat命令行中insert 数据,此时Datagrip连接的MySQL中数据应该也刷新变化
下载地址:官网Apache ZooKeeper
Index of /dist/zookeeper/zookeeper-3.4.6 安装包地址
上传zookeeper安装包至文件夹software
- 解压当前目录
-
- tar -zxvf zookeeper-3.4.6.tar.gz #之后可以删除安装包
- 解压完成后,切换到zookeeper安装目录
-
- cd zookeeper-3.4.6/
-
- mkdir data #存放zookeeper数据的目录
-
- cd data #进入文件夹
-
- pwd #获取当前文件夹路径,复制路径
-
退出当前目录,进入到conf目录,开始配置文件
- 对示例文件重命名
-
- mv zoo_sample.cfg zoo.cfg
- Vim zoo.cfg
-
- 修改dataDir= /usr/local/software/zookeeper-3.4.6/data
- 退出到zookeeper文件夹,启动zookeeper
-
- bin/zkServer.sh start
bin/zkServer.sh status #查看启动状态,单机版运行,standalone
网站:MyCat2 Index of /
http://dl.mycat.org.cn/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
- 这时候mycat-web与zookeeper其实是关联的,可以进到以下目录
-
- /usr/local/software/mycat-web/mycat-web/WEB-INF/classes
-
- 查看
-
- cat mycat.properties
-
- 已经定义了zookeeper端口号,如果mycat-web与zookeeper不在一台服务器,需要配地址
- 到mycat-web文件下,启动
-
- sh start.sh
安装成功!
主机IP:8082/mycat/ 查看mycat监控信息
添加信息
已经实现分库分表部署
如果新建表需要去schema.xml中配置
程序连接mycat时,只需将3306端口号改为8066即可