目录
一、目标实现
- 了解mycat提供的读写分离功能
- 了解mysql数据库的主从架构
- 构建以mycat为中间件的读写分离数据库群集
二、项目准备
- 软件:
VMware Workstation 15.5 Pro
MobaXterm_Personal_22.0
- 软件包:
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
- 物理配置:
CentOS7/2vCPU/4G内存/50G硬盘
- 节点规划:
IP |
主机名 |
节点 |
172.16.51.6 |
mycat |
Mycat中间件服务节点 |
172.16.51.18 |
db1 |
MariaDB数据库集群主节点 |
172.16.51.30 |
db2 |
MariaDB数据库集群从节点 |
三、项目实施
1.配置基础环境
1.1修改主机名
mycat:
[root@localhost ~]# hostnamectl set-hostname mycat #修改主机名为mycat
[root@localhost ~]# bash #刷新
[root@mycat ~]#
db1:
[root@localhost ~]# hostnamectl set-hostname db1 #修改主机名为db1
[root@localhost ~]# bash #刷新
[root@db1 ~]#
db2:
[root@localhost ~]# hostnamectl set-hostname db2 #修改主机名为db2
[root@localhost ~]# bash #刷新
[root@db2 ~]#
1.2配置3台群集虚拟机的/etc/hosts文件
mycat、db1、db2:
[root@mycat/@db1/@db2 ~]# vi /etc/hosts
{
#ip地址 主机名/域名(主机别名)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.51.6 mycat
172.16.51.18 db1
172.16.51.30 db2
}
补充知识:hosts文件是linux系统中负责ip地址与域名快速解析的文件,它包含了ip地址和主机名之间的映射,以ASCII格式保存在/etc目录下。在没有域名服务器的情况下,它可以充当dns服务器角色(dns缓存>hosts>dns服务)
1.3.配置网卡
单独配置:
mycat:
[root@mycat ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
{
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=eabcfae9-7b72-41db-8f65-d6e51132239e
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.51.6 #IP地址
PREFIX=24 #子网掩码
GATEWAY=172.16.51.254 #网关
DNS1=8.8.8.8 #首选DNS
}
db1:
[root@db1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
{
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2268a449-8cb3-450e-a990-4562256fbec9
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.51.18
PREFIX=24
GATEWAY=172.16.51.254
DNS1=8.8.8.8
}
db2:
[root@db2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
{
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=23a65a6d-6a6f-4399-b68a-b0807913f4df
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.51.30
PREFIX=24
GATEWAY=172.16.51.254
DNS1=8.8.8.8
}
综合配置
1.4.配置本地yum源
[root@mycat/@db1/@db2 ~]# mv /etc/yum.repos.d/* /media/ #移动yun源原配置至文件/media/下
[root@mycat/@db1/@db2 ~]# mkdir /opt/gpmall-repo #创建挂载点
[root@mycat/@db1/@db2 ~]# mount /dev/cdrom /opt/gpmall-repo #挂载
(mount: no medium found on /dev/sr0 #错误提示:没有找到光驱介质,将光盘映像重新连接即可)
[root@mycat/@db1/@db2 ~]# mount /dev/cdrom /opt/gpmall-repo #解决问题后重新挂载
(mount: /dev/sr0 is write-protected, mounting read-only #挂载成功)
[root@mycat/@db1/@db2 ~]# vi /etc/yum.repos.d/local.repo #vi新建并编辑一个repo源文件
{
[mariadb] #yum源名称
name=mariadb #yum源描述
baseurl=file:///opt/gpmall-repo #yum镜像路径地址
gpgcheck=0 #不启用校验(检查包来源)
enabled=1 #启用yum源
}
补充知识:1.目录/media:设备连接后自动挂载的目录。
2. baseurl也可以是=ftp:// 和 http:// 。
2.部署Mycat中间件服务
2.1安装KDJ环境
为什么要安装KDJ环境?
MyCat是java工程师开发的,需要配置java虚拟机环境,所以必须要安装KDJ环境,且部署环境要求JDK必须是1.7及以上版本。
[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel #安装KDJ(1.8版本)
(Complete! #安装成功)
[root@mycat ~]# java -version #检查JDK版本
(
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
#有这三条数据即安装成功
)
3.部署MariaDB主从数据库集群服务
3.1安装MariaDB服务
[root@db1/@db2 ~]# yum install -y mariadb mariadb-server #安装数据库MariaDB服务
(Complete! #安装成功)
[root@db1/@db2 ~]# systemctl start mariadb #启动mariadb服务
[root@db1/@db2 ~]# systemctl enable mariadb #将mariadb服务设置为开机自自启
(Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. #此数据意为在创建从/etc/……到/usr/……的符号链接)
3.2初始化MariaDB数据库
[root@db1/@db2 ~]# mysql_secure_installation #安全配置向导
(
Enter current password for roo