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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 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
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
29天前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
MySQL主从复制原理和使用
|
28天前
|
运维 关系型数据库 MySQL
运维|MySQL 数据库被黑,心力交瘁
前一阵有一个测试用的 MySQL 数据库被黑了,删库勒索的那种,这里记录一下事情经过,给自己也敲个警钟。
35 2
|
29天前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
1月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
47 1
|
1月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
65 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
93 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
1月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
28 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
1月前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
19 0
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
54 4
下一篇
无影云桌面