mysql运维主从复制--主从复制概述主从复制原理搭建mysql主从复制(代码片段)

CodeJiao CodeJiao     2022-12-03     619

关键词:

文章目录

1. 主从复制概述

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

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

MySQL 复制的优点主要包含以下三个方面:

  • 主库出现问题,可以快速切换到从库提供服务。
  • 实现读写分离,降低主库的访问压力。
  • 可以在从库中执行备份,以避免备份期间影响主库服务。

2. 主从复制原理

MySQL主从复制的核心就是 二进制日志,具体的过程如下:

  1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。
  2. 从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。
  3. slave重做(对这些日志重新执行)中继日志中的事件,从而使得从库和主库的数据保持同步。

3. 搭建


3.1 服务器准备


准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备(安装、密码配置等操作)工作。 其中:

  • 192.168.200.200 作为主服务器master
  • 192.168.200.201 作为从服务器slave

3.2 主库配置


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

编辑 /etc/my.cnf文件

vim /etc/my.cnf

添加下面的内容,因为我们要同步所有数据库,所以不指定binlog-ignore-dbbinlog-do-db

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1 
server-id=1 
#是否只读,1 代表只读, 0 代表读写 
read-only=0 
#忽略的数据, 指不需要同步的数据库 
#binlog-ignore-db=mysql 
#指定同步的数据库 
#binlog-do-db=db01


3.2.2 重启MySQL服务器

systemctl restart mysqld


3.2.3 登录mysql,创建远程连接的账号,并授予主从复制权限

可以参考该文章

# 创建一个itcast的用户, 并指定登陆密码为 Root@123456
CREATE USER 'itcast'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';
#为 'codejiao'@'%' 用户分配主从复制权限
GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';

3.2.4 通过指令,查看二进制日志坐标

show master status ;


字段含义说明:

  • file : 从哪个日志文件开始推送日志文件
  • position : 从哪个位置开始推送日志
  • binlog_ignore_db : 指定不需要同步的数据库

3.3 从库配置


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

编辑 /etc/my.cnf文件

vim /etc/my.cnf

添加下面的内容

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,和主库不一样即可
server-id=2
#是否只读,1 代表只读, 0 代表读写
read-only=1


3.3.2 重新启动MySQL服务

systemctl restart mysqld

3.3.3 登录mysql,设置主库配置


CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.200.200', SOURCE_USER='itcast', SOURCE_PASSWORD='Root@123456', SOURCE_LOG_FILE='binlog.000004', SOURCE_LOG_POS=663;

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

CHANGE MASTER TO MASTER_HOST='192.168.200.200', MASTER_USER='itcast', MASTER_PASSWORD='Root@123456', MASTER_LOG_FILE='binlog.000004', MASTER_LOG_POS=663;

3.3.4 开启同步操作

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


3.3.5 查看主从同步状态

show replica status ; #8.0.22之后 
show slave status ; #8.0.22之前


3.4 测试


  1. 在主库 192.168.200.200 上创建数据库、表,并插入数据
create database db01;
use db01;
create table tb_user
(
    id   int(11) primary key not null auto_increment,
    name varchar(50)         not null,
    sex  varchar(1)
) engine = innodb
  default charset = utf8mb4;

insert into tb_user(id, name, sex)
values (null, 'Tom', '1'),
       (null, 'Trigger', '0'),
       (null, 'Dawn', '1');
  1. 在从库 192.168.200.201 中查询数据,验证主从是否同步


3.5 说明

刚才演示这种主从复制,是从二进制日志的当前位置往后开始同步的。如果我们需要把之前的数据也同步到从库,我们可以先把主库的数据导出到sql脚本中,然后在从库中执行sql脚本。这样先保证主库和从库的初始数据是一致的,然后再从当前位置往后开始同步。


4. 小结



主从复制原理以及实践

Mysql主从复制原理及配置输入的命令蓝色字体:注释黄色背景:重要小标题:蓝底白字1.复制概述Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台... 查看详情

mysql主从复制原理

MySQL主从复制原理  MySQL的主从复制是一个异步的复制过程,数据将从一个MySQL数据库复制到另一个MySQL数据库,在master与slave之间实现整个主从复制的过程是由三个线程参与完成的。其中有两个线程(SQL线程和I/O线程)在sl... 查看详情

mysql深入浅出主从复制数据同步原理(代码片段)

【MySQL】深入浅出主从复制数据同步原理参考资料:全解MySQL之主从篇:死磕主从复制中数据同步原理与优化MySQL日志:undolog、redolog、binlog有什么用?文章目录【MySQL】深入浅出主从复制数据同步原理一、主从复制... 查看详情

mysql主从复制(代码片段)

目录主从复制基础主从复制简介主从复制前提主从复制搭建主库配置(3307实例)从库配置(3308实例)主从复制原理主从复制相关文件主从复制相关线程主从复制图解原理主从故障监控/分析/处理IO线程故障连接主... 查看详情

主从复制和读写分离(代码片段)

主从复制和读写分离一.概述二.主从复制原理1.mysql复制类型2.mysql主从复制的工作过程三.Mysql读写分离1.读写分离原理2.读写分离方案3.读写分离存在的意义4.什么时候要读写分离四.Mysql主从复制和读写分离实验案例拓扑图:思... 查看详情

mysql主从复制原理和使用(代码片段)

...库的高可用,不会只有一个数据库节点。至少会搭建主从复制的数据库架构,从库可以作为主库的数据备份,以免主数据库损坏的情况下丢失数据;当访问量增加的时候可以作为读节点承担部分流量等。下面就进... 查看详情

mysql数据库运维之主从复制搭建(代码片段)

上篇文章详细介绍了MySQL数据库的单机多实例搭建,本篇文章将在上篇文章的基础上介绍MySQL主从复制过程,其中常见的复制架构有:异步复制,半同步复制及同步复制。常用的复制架构有异步复制及半同步复制!一、常见的复... 查看详情

mysql数据库运维之主从复制搭建(代码片段)

上篇文章详细介绍了MySQL数据库的单机多实例搭建,本篇文章将在上篇文章的基础上介绍MySQL主从复制过程,其中常见的复制架构有:异步复制,半同步复制及同步复制。常用的复制架构有异步复制及半同步复制!一、常见的复... 查看详情

mysql主从复制架构实现(代码片段)

...3)并联复制(一主多从)4)双主复制三、MySQL主从复制的搭建(AB复制)1.传统AB复制架构(M-S)2.环境准备3.MySQL主从复制核心思路4.MySQL主从复制实现1)安装MySQL软件2)安全配置3)配置my.cnf(重点... 查看详情

主从复制:主从复制的概述一主一从架构搭建主从复制的原理同步数据一致性问题(代码片段)

文章目录1.主从复制的概述1.1如何提升数据库的并发能力1.2主从复制的作用2.主从复制的原理2.1原理剖析2.2复制的最大问题2.3复制的基本原则3.一主一从架构搭建3.1准备工作3.2主机配置文件3.3从机配置文件3.4建立账户并授权3.5配置... 查看详情

mysql数据库——主从复制与读写分离(代码片段)

文章目录前言一、MySQL主从复制1.支持的复制类型2.主从复制的工作过程是基于日志3.请求方式4.主从复制的原理5.MySQL集群和主从复制分别适合在什么场景下使用6.为什么使用主从复制、读写分离7.用途及条件8.mysql主从复制存在的... 查看详情

从理论到实战,彻底搞懂mysql主从复制原理(代码片段)

文章目录前言常见主从架构模式单向主从双向主从级联主从多主一从主从原理基于语句复制(STATEMENT)基于行复制(ROW)混合模式(MIXED)主从实战一主一从双向主从级联主从多主一从半同步复制实战GTID前... 查看详情

mysql主从复制原理

在mysql的主从复制中涉及到一个复制点的定位,binlog+position对复制点进行定位MySQL的主从复制中主要有三个线程:master(binlogdumpthread)、slave(I/Othread、SQLthread)。binlogdumpthread主要负责当主库中有数据更新的时候,会按... 查看详情

mysql主从复制原理

在mysql的主从复制中涉及到一个复制点的定位,binlog+position对复制点进行定位MySQL的主从复制中主要有三个线程:master(binlogdumpthread)、slave(I/Othread、SQLthread)。binlogdumpthread主要负责当主库中有数据更新的时候,会按... 查看详情

mysql数据库运维之主从复制延迟问题排查(代码片段)

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单,但是在实际使用过程中,更多的是解决问题,本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。... 查看详情

mysql数据库运维之主从复制延迟问题排查(代码片段)

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单,但是在实际使用过程中,更多的是解决问题,本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。... 查看详情

mysql主从复制与读写分离(原理深刻,过程详细,值得一看)(代码片段)

...是读写分离(2)为什么要读写分离(3)什么时候要读写分离(4)主从复制与读写分离2.MySQL主从复制(1)mysql支持的复制类型(2)主从复制的工作过程(3)mysql主从复制高延迟的原因(4)mysql主从复制高延迟的解决办法3.常见的MySQL读写分离方式(1)... 查看详情

mysql主从复制(代码片段)

MySQL主从复制前言:一.什么叫高可性:二.MySQL设计思路三.MySQL主从复制原理3.1MySQL的复制类型3.2MySQL主从复制默认使用的机制3.3MySQL主从复制工作过程四.主从复制配置4.1主从服务器时间同步4.2配置主从同步4.3配置规则4.4验... 查看详情