基于CentOS7,MySQL5.7的主从复制架构搭建实战

基于CentOS7,MySQL5.7的主从复制架构搭建实战1




一、环境说明

1. 软件版本

环境&软件版本
虚拟机&VMware Workstation15 Pro
服务器&CentOSCentOS-7-x86_64-DVD-1810.iso
数据库&Mysql5.7.28
远程文件传输&WinSCP、Xftp5
远程连接&Xshell5

2. 架构介绍

机器名称角色权限IP
Master数据库Master可读写、主库192.168.80.128
Slave1数据库Slave只读、从库192.168.80.55
Slave2数据库Slave只读、从库192.168.80.56
MHAMHA Manager高可用监控192.168.80.110

在这里插入图片描述

3. 软件下载地址:

  1. 操作系统:centos7下载地址 提取码:5555
  2. MySQL数据库:mysql5.7下载地址 提取码:pb3c
  3. MHA:mha下载地址 提取码:owwj
  4. Xshell:xshell5下载地址 提取码:xdao



二、环境准备—MySQL数据库安装(Master)

1. 将mysql拷贝到centos系统中

在这里插入图片描述


2. 对mysql安装包进行解压缩

在这里插入图片描述
注意:不需要全部安装rpm包,把核心和后续需要安装的rpm包进行安装即可
rpm包之间存在依赖关系,因此安装的时候注意安装顺序


3. 检查并卸载centos7中的自带的mysql数据库mariadb

  • 查看是否存在
    在这里插入图片描述

  • 卸载并再次查看
    在这里插入图片描述

注意: centos7中的自带的mysql数据库mariadb,需要卸载,否则回存在冲突


4. 安装MySQL

4.1 安装common

在这里插入图片描述

4.2 安装libs

在这里插入图片描述

4.3 安装libs的补丁包

在这里插入图片描述

4.4 安装client

在这里插入图片描述

4.5 安装server

报错:
缺少依赖(这里根据系统不同,缺少什么依赖就安装相应依赖的安装包即可)
在这里插入图片描述
解决依赖:(根据提示得知缺少perl依赖)

		1.查找依赖对应包
				yum search perl

		2.yum安装对应包
	 			yum -y install perl.x86_64		

在这里插入图片描述

4.6 再次安装server,安装成功

在这里插入图片描述

5. 初始化mysql,此操作会 生成【root超级用户的默认登陆的密码】

在这里插入图片描述


6. 查看生成的密码 在这里插入图片描述

7. 启动mysql服务,查看mysql的状态

在这里插入图片描述

8.登陆mysql

在这里插入图片描述

9. 修改密码,重新登陆

在这里插入图片描述

10.关闭防火墙,方便多台主机正常通讯

  • 如果安装了iptables,需要停止iptables (没有安装就直接跳过此步骤)

  • centos7默认,默认防火墙是firewalld
    在这里插入图片描述

  • 每次开机都禁用防火墙
    在这里插入图片描述




三、主从同步架构搭建

1. 主从同步架构概述


MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默
认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,从节点可以复制主数据库
中的所有数据库,或者特定的数据库,或者特定的表。

在这里插入图片描述

  • mysql主从复制用途:
    1. 实时灾备,用于故障切换(高可用)
    2. 读写分离,提供查询服务(读扩展)
    3. 数据备份,避免影响业务(高可用)
  • 主从部署必要条件:
    1. 从库服务器能连通主库
    2. 主库开启binlog日志(设置log-bin参数)
    3. 主从server-id不同

2. 主从同步架构原理介绍


在这里插入图片描述
主从复制整体分为以下三个步骤:

	* 主库将数据库的变更操作记录到Binlog日志文件中
	* 从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中
	* 从库读取中继日志信息在从库中进行Replay,更新从库数据信息

在上述三个过程中,涉及了Master的BinlogDump Thread和Slave的I/O Thread、SQL Thread,它们
的作用如下:

	* Master服务器对数据库更改操作记录在Binlog中,BinlogDump Thread接到写入请求后,读取Binlog信息推送给Slave的I/O Thread。
	* Slave的I/O Thread将读取到的Binlog信息写入到本地Relay Log中。
	* Slave的SQL Thread检测到Relay Log的变更请求,解析relay log中内容在从库上执行。

上述过程都是异步操作,俗称异步复制,存在数据延迟现象。

下图是异步复制的时序图。
在这里插入图片描述

3. 使用主节点MySQL Master克隆从节点MySQL Slave1


使用vmware自带克隆功能,对当前的虚拟机master进行克隆
在这里插入图片描述
选择完整克隆
在这里插入图片描述
设置存储位置
在这里插入图片描述
设置MySQL_Slave1的ip地址为:192.168.80.55

	vi /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述
重启网卡:

	systemctl restart network

注意

	直接克隆主库master上的数据库到从库slave,需要避免uuid重复;防火墙的状态也需要注意保持关闭状态。

在这里插入图片描述
解决:删除从库的 /var/lib/mysql/auto.cnf 文件(否则,在后续从节点的状态中可能查看到错误:The slave I/O thread stops because master and slave have equal MySQL server UUIDs


4. 搭建主从架构


4.1 配置主库:MySQL Master

4.1.1 修改MySQL的配置文件:

	/etc/my.cnf

在这里插入图片描述

4.1.2 添加配置信息:

	log_bin=mysql-bin   # 开启binlog
	server-id=1  # 保证不冲突即可
	sync-binlog=1   # 每次执行写入行操作,都进行磁盘同步

#设置同步,不同步库
	binlog-ignore-db=information_schema
	binlog-ignore-db=performance_schema
	binlog-ignore-db=sys
	#binlog-do-db=xxx   

在这里插入图片描述
4.1.3 重启MySQL数据库,并授权

	重启mysql:systemctl restart mysqld

在这里插入图片描述

授权1:

	主库对从库进行授权操作(**只有经过主库授权的从库才能进行复制操作**)

在这里插入图片描述

授权2:

 	赋予远程操作权限,刷新权限
	grant all privileges on *.* to 'root'@'%'  identified by 'root';

在这里插入图片描述

查看主库状态:
在这里插入图片描述


4.2 配置从库:MySQL Slave1

4.2.1 修改MySQL的配置文件:

	/etc/my.cnf

在这里插入图片描述

添加配置信息:

	#log_bin=mysql-bin   从库不需要配置此项,从主库传递到从库,从库没必要开启binlog
	server-id=2  # 保证不冲突即可
	relay_log=mysql-relay-bin  # 不写就使用默认的名称
	read_only=1  # 设置只读,根据需求进行配置

在这里插入图片描述

4.2.2 重启MySQL数据库,并授权

	重启mysql:systemctl restart mysqld

在这里插入图片描述

查看从库状态:

	show slave status \G;
	因为第一次配置,所以没有内容;如果存在数据,说明已经配置过了,不需要重复配置。

授权1: 同步初始化设置(针对前面配置的主库master中的binlog文件进行同步配置

	命令:
		change master to master_host='192.168.80.128' ,master_port=3306,master_user='root',
				master_password='root',master_log_file='mysql-bin.000002',master_log_pos=869;

在这里插入图片描述

配置的参数参考主节点的配置即可

查看从节点状态:

	启动从节点,查看从节点状态

在这里插入图片描述
4.2.3 测试主从是否同步

	在主库master中创建数据库和数据表,从库slave1中会自动同步主库master中的数据

在这里插入图片描述
注意

	如果没有同步成功,可以查看从节点的状态,从而对症下药

在这里插入图片描述


5. mysql主从复制:优化


问题:从机是根据主机master的某个二进制文件的某个pos点之后的信息进行同步;之前的数据就没法同步了,如果运行一段时间了,还以此参数进行同步,数据量会很大;因此都是从某个位置某个时间点进行同步的,之前的数据是没有处理的!

解决: 可以针对最近最新的从库,对主库进行完全的备份(mysqldump),此时再去配置主从同步的速度就会得到很大的提升!


在主库master中执行命令:

	mysqldump --all-databases > mysql_datas_backup.sql -uroot -proot

在这里插入图片描述

将主库中的备份文件拷贝到从库中,进行复制即可


6. mysql主从复制存在的问题和解决方法(异步复制方式)


mysql主从复制存在的问题

  • 主库宕机后,数据可能丢失
  • 从库只有一个SQL Thread,主库写压力大,复制很可能延时

解决方法

  • 半同步复制(解决数据丢失的问题)
  • 并行复制(解决从库复制延迟的问题)



在下一节将进行介绍:半同步复制和并行复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿城大饼

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值