目录
1. 认识读写分离
(1)读写分离概念
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
(2)读写分离的作用
因为数据库的“写”(写100,00条数据到MySQL可能要3分钟)操作是比较耗时的,但是数据库的“读”(从MySQL读100,00条数据可能只要5秒钟)。所以读写分离可以解决数据库写入时影响查询效率的问题。
(3)读写分离应用场景
数据库不一定总要读写分离,如果程序使用数据库较多、更新较少、查询较多的情况下会考虑使用。利用数据库主从同步,可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。例如使用memcache、分表、搜索引擎等方法。
(4)主从复制、读写分离的基本设计
在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过一台主、多台从节点,主节点提供写操作,从节点提供读操作来实现读写分离,从而提升数据库的并发负载能力。
2.构建读写分离的数据库集群
(1)基础环境配置
修改主机名
使用hostnamectl命令修改3台主机的主机名。
Mycat节点修改主机名命令:
# hostnamectl set-hostname mycat
# bash
db1节点修改主机名命令:
# hostnamectl set-hostname db1
# bash
db2节点修改主机名命令:
# hostnamectl set-hostname db2
# bash
编辑hosts文件
3台集群虚拟机的/etc/hosts文件配置部分:
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.49.6 mycat
192.168.49.18 db1
192.168.49.20 db2
配置Yum安装源
数据库集群需要安装MariaDB数据库服务,需要给集群虚拟机配置Yum安装源文件,使用提供的gpmall-repo文件上传至3个虚拟机的/opt目录下,设置本地Yum源。
首先将3个节点/etc/yum.repo.d目录下的文件移动到/media下,命令如下:
# mv /etc/yum.repos.d/* /media/
3台集群虚拟机的Yum安装源文件配置部分:
# cat /etc/yum.repos.d/local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1
安装JDK环境
部署Mycat中间件服务需要先部署JDK 1.7或以上版本的JDK软件环境,这里部署JDK 1.8版本。
Mycat节点安装Java环境:
# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
...
# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
关闭防火墙(全部节点)
#iptables -F
#iptab