简介
MySQL是整个互联网行业最常用的数据库产品之一,但是平时开发大多数时间使用的都是单机数据库。而在实际的生产环境当中,数据的处理量是很大的,并且对于数据的安全性要求也相对更高,所以单个服务器部署数据库显然已经无法满足业务需求。但是得益于分布式服务的理念出现,MySQL也有集群部署的选择。
MySQL主从集群是MySQL集群的一种比较经典的集群部署方式,基于该集群可以实现一些高可用架构,在这个基础上配合部分中间件还可以实现读写分离架构,若是数据量确实非常的庞大,还可以实现分库分表架构。
为什么搭建MySQL主从集群?
简单来说,就是搭建MySQL主从集群有什么好处。主从架构最明显的好处就是可以缓解数据库读写的压力。
除了缓解数据库压力之外,另一方面也保证了数据的安全,两台服务器就能做到相互备份,同时,在一台服务器祭天之后还有另一台服务器维系服务的运作,让业务不至于连带着也祭天。
其次,两台数据库服务器可以实现读写分离。虽然在大部分的业务场景都是读取多写入少,但是当读的请求远超写的请求时,从服务器也能分担部分读请求。
一般来说,如果数据库的访问压力不大的话,并不需要做读写分离,但是主从架构和高可用架构规则是必须的。一方面是方便后续扩容,另一方面则是实现服务的高可用,避免服务祭天造成损失。
MySQL集群同步的原理
MySQL服务的主从架构一般是通过binlog日志文件进行。举个例子,当在主服务器上打开binlog日志记录一次数据库操作之后,在从服务器上的一个IO线程会与主服务器建立TCP连接,请求主服务器将binlog传输到从服务器。
此时主库的IO dump线程会通过TCP连接将binlog日志传输给从服务器的IO线程。收到binlog日志的从服务器会通过IO线程将数据写入relay日志文件当中,紧接着从服务器的slave sql线程会从relay日志读取日志然后应用到slave从节点本地,从而保持主从服务器的数据的一致性。
这种通过IO流实现的同步还可以应用在Redis、Kafka等中间件上,实现数据的实时流转。
MySQL集群部署的要求
1.部署集群的服务器上安装的MySQL版本最好一致,即便不一致从服务器的版本也不能低于主服务器。
2.部署集群的服务器需要保持时间同步,最好在部署之前进行一次时间同步,避免后续部署出现问题。
MySQL主从复制集群部署
笔者环境
操作系统:CentOS7 64位 DVD-2009
MySQL版本:5.7
ip地址
master:192.168.184.120
slave:192.168.184.121
一、安装MySQL
sudo curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm
(若提示无公钥)
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum install mysql-community-server
sudo yum install mysql-community-server
sudo yum list installed mysql-*
启动mysql
systemctl start mysqld
systemctl status mysqld
二、编辑MySQL配置
设置密码
sudo grep 'temporary password' /var/log/mysqld.log
2022-09-18T06:29:30.077519Z 1 [Note] A temporary password is generated for root@localhost: xmUtxdru)6h9
sudo mysql -uroot -p
Ente