mysql的主从复制原理

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: mysql的主从复制原理

原理介绍

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现 从库 的数据和 主库 的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制, 就是通过该binlog实现的。默认MySQL是未开启该日志的。

image.pngMySQL复制过程分成三步:

1). MySQL master 将数据变更写入二进制日志( binary log)

2). slave将master的binary log拷贝到它的中继日志(relay log)

3). slave重做中继日志中的事件,将数据变更反映它自己的数据

配置

主库配置:

[mysqld] 
#开启二进制日志log-bin=mysql-bin#标识唯一id(必须),一般使用ip最后位server-id=1#不同步的数据库,可设置多个binlog-ignore-db=information_schemabinlog-ignore-db=performance_schemabinlog-ignore-db=mysql#指定需要同步的数据库(和slave是相互匹配的),可以设置多个binlog-do-db=test

添加日志存储方式和规则(选填)

#设置存储模式不设置默认binlog_format=MIXED#日志清理时间expire_logs_days=7#日志大小max_binlog_size=100m#缓存大小binlog_cache_size=4m#最大缓存大小max_binlog_cache_size=521m

重启数据库服务mysqld

service mysqld restart

登陆MySQL数据库允许从库获得主库日志

[root@localhost~]#mysql-uroot-p登陆#给从库放权限 
mysql>GRANT FILE ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'root password'#创建用户 
mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'root password'#修改用户权限 
mysql>select host ,user ,password from mysql.user#查看是否修改成功 
mysql>FLUSH PRIVILEGES#刷新权限 

重启MySQL服务,登录MySQL,查看主库信息

root@localhost~]#servicemysqldrestart#重启mysql服务[root@localhost~]#mysql-uroot-p#登陆mysqlmysql>showmasterstatus; #查看master状态##显示内容+------------------+----------+--------------+----------------------------------+-------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+------------------+----------+--------------+----------------------------------+-------------------+ 
| mysql-bin.000006 |    120 | ufind_db | information_schema,performance_schema,mysql | | 
+------------------+----------+--------------+----------------------------------+-------------------+ 
1 row in set (0.00 sec

注:如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对,请回去重新检查配置步骤。

配置从库

[root@localhost~]#vi/etc/my.cnf#开启二进制日志 
log-bin=mysql-bin 
server-id=2 
binlog-ignore-db=information_schema 
binlog-ignore-db=performance_schema 
binlog-ignore-db=mysql 
#与主库配置保持一致 
replicate-do-db=test 
replicate-ignore-db=mysql 
log-slave-updates 
slave-skip-errors=all 
slave-net-timeout=60 


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
30 0
|
2月前
|
存储 关系型数据库 MySQL
深入理解MySQL索引:从原理到最佳实践
深入理解MySQL索引:从原理到最佳实践
200 0
|
3月前
|
算法 关系型数据库 MySQL
【MySQL 解析】数据库的乐观锁和悲观锁实现原理
【1月更文挑战第11天】【MySQL 解析】数据库的乐观锁和悲观锁实现原理
|
17天前
|
负载均衡 容灾 关系型数据库
mysql主从复制
mysql主从复制
32 1
|
1月前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
36 0
|
16天前
|
SQL 关系型数据库 MySQL
mysql主从复制
mysql主从复制
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
1月前
|
SQL 网络协议 关系型数据库
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
面试官:MySQL主从复制了解吧?嗯嗯了解的。主要是利用了MySQL的Binary Log二进制文件。那我把二进制文件丢给从库,从库复制整个文件吗。噢噢不是的。
48 1
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
|
1月前
|
监控 负载均衡 关系型数据库
|
2月前
|
存储 SQL 关系型数据库
MySQL事务底层原理和MVCC机制
MySQL事务底层原理和MVCC机制
38 1