背景
本周研究了一下数据库中间件 MyCat ,并验证了 MyCat 单机 + MySQL 主从复制 的部署方案,本文将整理 MyCat 单机的 Schema 的几种部署方案,并以 MyCat 单机 + MySQL 主从复制的部署流程为主,详细介绍这一方案的部署过程。
环境准备
使用 MyCat 单机 + MySQL 主从,最少需要两台机器,本文使用一主一从,MyCat 单独部署,总共三个虚拟机节点。
由于连接的是无线网络,切换工作地时,会出现网络问题,先调整 VirtualBox 的虚拟机节点的 IP,保证宿主机、各节点间网络通畅。
首先,ipconfig 查看本机无限局域网信息,记住默认网关:
[图片上传失败...(image-495317-1598141304980)]
其次,启动 VirtualBox 实例,编辑网卡文件 ifcfg-xxx ,设置动态 IP 并将网关配置与宿主机一致:
在这里插入图片描述
第三,/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 安装包
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
MySQL 安装包
Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
MyCat 安装包
编写安装脚本
先说说为什么要编写安装脚本?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<
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
脚本地址,感兴趣的小伙伴们可以点击解锁。
部署流程
脚本编写好了之后,部署过程就比较简单了,操作步骤为:
安装 JDK:执行 jdk_install.sh;
安装 MySQL 主节点:执行 master_install.sh;
为主节点创建复制帐号并授权复制权限:执行 master_grant.sh;
安装 MySQL 从节点:执行 slave_install.sh;
为从节点设置 Master 信息:执行 slave_grant.sh;
安装 MyCat:执行 mycat_install.sh;
根据主从节点信息,配置 MyCat 的 schema.xml 和 server.xml;
启动 MyCat。
后记
笔者用的是一台 8G 内存的 Dell 电脑,开启了三个虚拟机节点,没有宽带的情况下,使用手机热点搭建环境的写成此文的,过程还挺很流畅的。
4G 信号,加上热点,感觉都不用装宽带了。亲自体验了一把手机热点的网速后,终于相信了网上调侃程序员地铁站或者路边蹲着改 bug 的报道不是段子,而是真实职场不易了……
囿于篇幅太长,不利于阅读,本文先搭框架,下一篇接着介绍具体的部署过程。