【数据库】mysql主从复制原理、搭建

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 文章目录前言一、工作原理1.1 示意图1.2 文字解释

一、工作原理

1.1 示意图


1.2 文字解释

  • 主服务器开启二进制日志,从服务器开启中继日志
  • 主服务器日志发生更新后,从服务器通过I/O线程探测到更新并发送请求二进制事件
  • 主服务器通过dump线程将更新的二进制日志事件发送给从服务器
  • 从服务器将事件写入中继日志,通过SQL线程将日志读取为sql语句,重放执行语句,保持数据的统一性

二、搭建

2.1 架构

模拟环境 IP地址 所需工具
主服务器 192.168.13.10 mysql-boost-5.7.20.tar
从服务器 192.168.13.20 mysql-boost-5.7.20.tar

2.2 主服务器

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname Mysql1
vim /etc/my.cnf
  server-id = 1
  log_bin = master-bin
  log-slave-updates = true
systemctl restart mysqld.service 
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
mysql -uroot -pabc123
  grant replication slave on *.* to 'myslave'@'192.168.13.%' identified by '123';
  grant all privileges on *.* to 'mha'@'192.168.13.%' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql1' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql2' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql3' identified by 'manager';
  flush privileges;
  show master status;
}

  • 主服务器的日志名为mysql-bin.000001,偏移量为915

2.3 从服务器

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname Mysql2
vim /etc/my.cnf
  server-id = 2
  log_bin = master-bin
  relay-log = relay-log-bin
  relay-log-index = slave-relay-bin.index
systemctl restart mysqld.service 
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
mysql -uroot -pabc123
  grant replication slave on *.* to 'myslave'@'192.168.13.%' identified by '123';
  grant all privileges on *.* to 'mha'@'192.168.13.%' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql1' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql2' identified by 'manager';
  grant all privileges on *.* to 'mha'@'Mysql3' identified by 'manager';
  flush privileges;
  change master to master_host='192.168.13.10',master_user='myslave',master_password='123',master_log_file='master-bin.000001',master_log_pos=915; 
  start slave;
}

2.4 验证

  • 进入主服务器创建任意库;
  • 进入从服务器查看所有库,发现数据同步;

三、思维导图

四、结语

  • Slave_IO_Running: No:途中我遇到了两次这种情况
  • 一:检查自己的防火墙是否关闭
  • 二:检查自己文件名及偏移量是否输入错误
  • 三:检查mysql数据库的UUID是否相同,我是源码编译,路径为:/usr/local/mysql/data//auto.cnf,若是主从的数据库UUID是相同的,则无法连接成功,随便改动一个数据库的UUID其中任意一个字母即可
  • 四:/etc/my.cnf 的配置文件有问题
  • 五:网络不通
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
10 0
|
2天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
|
3天前
|
存储 算法 关系型数据库
MySQL连接的原理⭐️4种优化连接的手段性能提升240%🚀
MySQL连接的原理⭐️4种优化连接的手段性能提升240%🚀
|
3天前
|
SQL canal 运维
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
|
3天前
|
SQL 存储 关系型数据库
MySQL查询原理,看这一篇就够了!
MySQL查询原理,看这一篇就够了!
|
3天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
15 0
|
4天前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
|
5天前
|
SQL 存储 负载均衡
关系型数据库读写分离与主从复制
关系型数据库读写分离与主从复制
20 5
|
11天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)