MyCat + MySQL 主从部署流程(上)

背景

本周研究了一下数据库中间件 MyCat ,并验证了 MyCat 单机 + MySQL 主从复制 的部署方案,本文将整理 MyCat 单机的 Schema 的几种部署方案,并以 MyCat 单机 + MySQL 主从复制的部署流程为主,详细介绍这一方案的部署过程。

环境准备

使用 MyCat 单机 + MySQL 主从,最少需要两台机器,本文使用一主一从,MyCat 单独部署,总共三个虚拟机节点。

由于连接的是无线网络,切换工作地时,会出现网络问题,先调整 VirtualBox 的虚拟机节点的 IP,保证宿主机、各节点间网络通畅。

首先,ipconfig 查看本机无限局域网信息,记住默认网关:
MyCat + MySQL 主从部署流程(上)_第1张图片
其次,启动 VirtualBox 实例,编辑网卡文件 ifcfg-xxx ,设置动态 IP 并将网关配置与宿主机一致:
MyCat + MySQL 主从部署流程(上)_第2张图片
第三,/etc/init.d/network restart 重启网卡服务,ifconfig 命令查看节点的 IP,然后再调整 SecureCRT 的连接配置,指向新的 IP。

三个虚拟机实例对应的信息如下:

作用 主机名称 IP
MyCat 宿主机 MyCat 172.20.10.4
MySQL 主服务器 hostM1 172.20.10.3
MySQL 从服务器 hostS1 172.20.10.5

介质准备

选择 MyCat 的稳定版本 1.6.7 和 MySQL 社区版最新版本 5.7.31 ,JDK1.8,需要的安装介质:

文件名称 作用 下载地址
jdk-8u60-linux-x64.rpm JDK 安装包 JDK1.8
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz MySQL 安装包 MySQL社区版
Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz MyCat 安装包 MyCat1.6.7

编写安装脚本

先说说为什么要编写安装脚本?MyCat 和 MySQL 都是免安装的,解压后做一些常规的用户创建、目录授权、文件配置就可以了。虽然这些操作都不复杂,但每次部署时,手动敲命令,也很劳心劳力呀,能用程序解决的问题,绝不用亲自动手,这是程序员的一贯思维,所以编写脚本是必不可少的。

更重要的是,生产部署的时候,有自动化部署脚本,效率会高很多。

部署 MyCat + MySQL 主从环境,除了 JDK 安装外【这个以前写过】,笔者写了五个脚本:

脚本名称 作用 特点
jdk_install.sh 安装 JDK 环境变量配置
master_install.sh 安装 MySQL 主节点 my.cnf 添加主节点配置
slave_install.sh 安装 MySQL 从节点 my.cnf 添加从节点配置
master_grant.sh Master 授权 授权复制权限给从节点
slave_grant.sh Slave 配置 设置主节点信息
mycat_install.sh 安装 MyCat 创建 MyCat 用户和组

master_grant.sh 为例,它主要是创建一个临时 SQL 脚本,然后以 MySQL 主节点的帐号执行该 SQL 操作集,脚本的参数是 MySQL 的主节点认证密码,内容为:

#!/bin/sh
######################################################################
###### put mycat directory to /home/ 
###### sh grant_master.sh rootPwd
######################################################################
echo 'Create user and grant master.'

#master server password of ip
mysqlrootpwd=$1
if [ "$mysqlrootpwd" = "" ]; then
   echo "Error: You must tell me the password of master root."
   exit 1
fi
echo "MySQL master server root password is:$mysqlrootpwd"

#create grant sql script
cat > /tmp/mysql_sec_script<<EOF
create user 'replaccount'@'%' identified by 'ReplPassword'; 
grant replication slave on *.* to 'replaccount'@'%';
show grants for 'replaccount';
show master status \G;
EOF

#print script content
cat /tmp/mysql_sec_script
echo '\n to execute grant sql.'

#use mysql command to execute grant sql
/data/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script

#remove temp sql script
rm -f /tmp/mysql_sec_script

脚本地址,感兴趣的小伙伴们可以点击解锁。

部署流程

脚本编写好了之后,部署过程就比较简单了,操作步骤为:

  1. 安装 JDK:执行 jdk_install.sh;
  2. 安装 MySQL 主节点:执行 master_install.sh;
  3. 为主节点创建复制帐号并授权复制权限:执行 master_grant.sh;
  4. 安装 MySQL 从节点:执行 slave_install.sh;
  5. 为从节点设置 Master 信息:执行 slave_grant.sh;
  6. 安装 MyCat:执行 mycat_install.sh;
  7. 根据主从节点信息,配置 MyCat 的 schema.xml 和 server.xml;
  8. 启动 MyCat。

后记

笔者用的是一台 8G 内存的 Dell 电脑,开启了三个虚拟机节点,没有宽带的情况下,使用手机热点搭建环境的写成此文的,过程还挺很流畅的。

4G 信号,加上热点,感觉都不用装宽带了。亲自体验了一把手机热点的网速后,终于相信了网上调侃程序员地铁站或者路边蹲着改 bug 的报道不是段子,而是真实职场不易了……

囿于篇幅太长,不利于阅读,本文先搭框架,下一篇接着介绍具体的部署过程。

你可能感兴趣的:(项目开发,MyCat,MySQL主从,java)