构建读写分离的数据库集群(mycat)

本文介绍如何利用Mycat实现MySQL主从复制及读写分离,包括环境准备、主从复制配置、Mycat服务部署及读写分离验证等步骤。

简介

1、 从MySQL的主从复制和读写分离,到ZooKeeper分布式协调服务,再到Kafka消息中间件和Nginx的代理功能,此功能主要同步各个主机之间的配置文件和一些重要的信息,方便运维人员不用再从每个机器上来更改信息,只需要注册了监听机器IP就能实现同步。
2、Kafka消息中间件主要是为了防止消息锁死,方便用户随用随取。
3、Nginx在本章主要实现了代理作用,其实Nginx的功能很多,譬如负载均衡、web服务、缓存等,现在很多企业都在使用这个Nginx服务。
4、最后,介绍了Zabbix这个监控开源平台,该平台主要方便运维人员及时发现服务器问题和解决问题。

在这里插入图片描述

MySQL复制技术的特点

① 数据分布(Data distribution)
② 负载平衡(load balancing)
③ 备份(Backups)
④ 高可用性和容错行(High availability and failover) 

主从复制的工作机制

① Master将改变记录到二进制日志(binary log)中,这些记录叫做二进制日志事件(binary log events); ② Slave将master的binary log events拷贝到它的中继日志(relay log); ③ Slave重做中继日志中的事件,将改变反映它自己的数据。

复制概述
MySQL内建的复制功能是构建大型、高性能应用程序的基础。

1、将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slave)上,并重新执行一遍来实现的。
2、复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环。这些日志可以记录发送到从服务器的更新。
3、当一个从服务器连接主服务器时,它通知主服务器和从服务器在日志中读取最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

环境准备

规划节点

IP 主机名 节点
10.30.59.205 db1 MariaDB数据库集群主节点
10.30.59.215 db2 MariaDB数据库集群从节点
10.30.59.222 mycat Mycat中间件服务节点

2台虚拟机db1和db2部署MariaDB数据库服务,搭建主从数据库集群;一台作为主节点,负责写入数据库信息;另一台作为从节点,负责读取数据库信息。
使用一台虚拟机部署Mycat数据库中间件服务,将用户提交的读写操作识别分发给相应的数据库节点。这样将用户的访问操作、数据库的读与写操作分给3台主机,只有数据库集群的主节点接收增、删、改SQL语句,从节点接收查询语句,分担了主节点的查询压力。

修改主机名

[root@localhost ~]# hostnamectl set-hostname mycat
[root@localhost ~]# bash
[root@mycat ~]# 

[root@localhost ~]# hostnamectl set-hostname db1
[root@localhost ~]# bash
[root@db1 ~]# 

[root@localhost ~]# hostnamectl set-hostname db2
[root@localhost ~]# bash
[root@db2 ~]# 

编辑hosts文件(在所有节点)

[root@db1 ~]# vi /etc/hosts
10.30.59.205  db1
10.30.59.215  db2
10.30.59.222  mycat

secureFX上传文件(所有节点)

[root@mycat ~]# ll
total 326660
-rw-------. 1 root root      1260 Mar 29 23:35 anaconda-ks.cfg
-rw-r--r--. 1 root root 318829093 Jun 18 11:01 gpmall-repo.tar.gz
-rw-r--r--. 1 root root  15662280 Jun 18 10:14 Mycat-server-1.6-RELEASE-20161028204710-linux .tar.gz
[root@db1 ~]# mv gpmall-repo.tar.gz /opt
[root@db1 ~]# cd /opt
[root@db1 ~]# ll
[root@db1 ~]# yum install -y unzip
[root@db1 ~]# unzip gpmall-repo.tar.gz

配置Yum安装源(所有节点)

[root@db1 ~]# cd /etc/yum.repos.d/
[root@db1 yum.repos.d]# ll
total 32
-rw-r--r--. 1 root root 1664 Apr 29  2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Apr 29  2018 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Apr 29  2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Apr 29  2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Apr 29  2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Apr 29  2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 4768 Apr 29  2018 CentOS-Vault.repo
[root@db1 yum.repos.d]# mv /etc/yum.repos.d/C* /media/
[root@db1 yum.repos.d]# mkdir /opt/cdrom
[root@db1 yum.repos.d]# mount /dev/cdrom /opt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[root@db1 yum.repos.d]# vi /etc/yum.repos.d/local.repo
[mariadb]
name=mariadb     
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1
[cdrom]      本地yum源
name=cdrom
baseurl=file:///opt/cdrom
gpgcheck=0
enabled=1
[root@db1 yum.repos.d]# yum clean all
[root@db1 yum.repos.d]# yum repolist

关闭防火墙(所有节点)
[root@db1 ~]# systemctl stop firewalld
[root@db1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@db1 ~]# setenforce 0
[root@db1 ~]# iptables -F
[root@db1 ~]# iptables -X
[root@db1 ~]# iptables -Z
[root@db1 ~]# iptables-save

配置 ftp 连接另两个节点(在db1节点)

[root@db1 ~]# yum install -y vsftpd
[root@db1 ~]# vim /etc/vsftpd/vsftpd.conf 
anon_root=/opt       添加此段
[root@db1 ~]# systemctl start vsftpd
[root@db1 ~
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值