15天学习MySQL计划-主从复制(运维篇)第十三天

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 15天学习MySQL计划-主从复制(运维篇)第十三天

15天学习MySQL计划-主从复制(运维篇)第十三天

主从复制

1.概述

主从复制是指主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫做重做),从而使得从库和主库的数据保持同步


MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。


fe7c64392d9c4cf596d64c95e772f5e9.png


MySQL复制的有点主要包括以下三个方面:


1.主库出现问题,可以快速切换到从库提供服务。


2.实现读写分离,减低主库的访问压力。


3.可以在从库中执行备份,以避免备份期间影响主库服务


2.原理


MySQL的主从复制原理如下:


60744a4ea8424a8e85c8fd61cc042bd4.png


从上图来看,复制分为三步:

1.master主库在事务提交时,会把数据变更记录在二进制日志文件binlog中。


2.从库读取主库的二进制日志文件binlog,写入到从库的中继日志relay log。


3.slave重做中继日志中的时间,将改变反映它自己的数据。


3.主库配置


部署图


8dca07473cf8482b901251b8bfde80ac.png

1.初始化准备工作

关闭指定的3306端口号
firewall-cmd --zone=public --add-port=3306/tcp -permanent
firewall-cmd-reload
关闭服务器的防火墙:
systemctl stop firewalld
systemctl disable firewalld

2.主库配置

1.修改配置文件/etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
2.重启MySQL
systemctl restart mysqld
3.登录MySQL,创建远程连接的账号,并授予主从复制权限
#创建itcast用户,并设置用户密码,该用户可在任意主机连接该MySQL服务’
create user 'mycopy'@'%' identified with mysql_native_password by '1234.Com';
#为itcast用户分配主从复制权限
grant replication slave on *.* to 'mycopy'@'%';
4、通过指令,查看二进制日志坐标
show master status;
字段说明:
file:从哪个日志文件开始推送日志文件
position:从哪个开始推送日志
binlog_ignore_db:指定不需要同步的数据库

4.从库配置

1.修改配置文件/etc/my.cnf

#MySQL服务ID,保证整个集群环境中唯一
server-id=2
#是否只读,1代表只读,0代表读写  super-read-only=1 #超级管理员也为只读
read-only=1

2.重启MySQL

systemctl restart mysqld

3.登录MySQL,设置主库设置

create replication source to source_host='xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;

上述是8.0.23中的语法。如果MySQL是8.0.23之前的版本,执行如下SQL:

change master to master_host='xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;

image.png


4.开启同步操作

start replica; #8.0.22之后
start salve;  #8.0.22之前

5.查看主从同步状态

show replica status; #8.0.22之后
show slave status;   #8.0.之前
查看主要信息:
replica_io_running:yes    #IO线程运行是否正常 读写二进制日志 和写入中继日志
replica_sql_running:yes   #SQL显示 用来执行SQL

5.测试

1.从主库上创建数据库,表,并插入数据

查看主要信息:


replica_io_running:yes #IO线程运行是否正常 读写二进制日志 和写入中继日志

replica_sql_running:yes #SQL显示 用来执行SQL

### 5.测试
1.从主库上创建数据库,表,并插入数据
2.在从库中查询数据,**验证主从是否同步**
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
41 6
|
14天前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
30 1
|
15天前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
23天前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
32 3
|
23天前
|
SQL 关系型数据库 MySQL
如何学习 MySQL?
如何学习 MySQL?
26 3
|
1月前
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
51 0
|
1月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
29 2
|
1月前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 如何减少主从复制延迟?
在Linux中,mysql 如何减少主从复制延迟?
|
1月前
|
SQL 关系型数据库 MySQL
学习mysql基础操作
【8月更文挑战第20天】学习mysql基础操作
30 1
|
1月前
|
关系型数据库 MySQL 网络安全
MySQL主从复制详细教程
配置MySQL的主从复制是一个细致的过程,需要仔细遵循上述步骤进行。一旦配置完成并运行正常,主从复制将大大提高数据库的可用性和读写性能。在操作过程中,务必保持谨慎,确保数据的一致性和安全性。
116 0