mysql 复制原理与实践应用详解

Mysql 复制原理与实践应用详解

什么是MySQL复制

Mysql 复制是指将一个Mysql服务器上的数据,同步到另一个Mysql服务器上的一个过程,主要用于:
- 分布式集群:多台MySQL服务器组成一个集群,进行负载均衡和故障转移。
- 数据备份:主服务器上的数据可以被同步到备用服务器上,以用于备份或恢复。

MySQL 复制的工作原理

Mysql 复制的工作原理是基于二进制日志(binlog)实现的。binlog 是MySQL服务器上一种记录数据库操作日志的机制。binlog 会记录数据库的DDL、DML操作语句以及事务信息。数据同步主要是通过主库生成binlog, 然后备库根据主库中的binlog进行数据更新。

具体步骤如下:
1. 主库生成binlog,存储到本地的二进制日志文件中(mysql-bin.000001,mysql-bin.000002...)
2. 备库连接主库,启动I/O线程,读取主库的binlog日志保存到本地的relay log文件中。(relay log 是备用服务器生成的中转日志文件)
3. 备库连接主库,启动SQL线程。主库上记录的二进制日志被传给备库后,通过SQL线程在备库上执行,从而完成备库中的数据同步操作。
4. 备库定期心跳检测,判断与主库是否正常连接。当主库发生故障无法连接时,备库会成为主库的角色。

MySQL 复制的配置

MySQL 复制包含主库和从库,主库用于生产binlog,从库通过读取binlog文件,执行主库的操作即可实现数据的同步。因此,需要对主库和从库进行配置。

主库配置步骤

  1. 编辑MySQL服务器配置:my.cnf文件,开启binlog功能
log-bin=mysql-bin  #开启二进制日志
binlog_format=STATEMENT #配置binlog日志格式
server_id=<主库编号> #主库编号要唯一
  1. 创建从库用户,并给予从库复制权限
grant replication slave on *.* to 'slave_user'@'从库IP地址' identified by 'password';
flush privileges;

从库配置步骤

  1. 编辑MySQL服务器配置:my.cnf文件,开启从库在本地放置Binary Log的选项
log-bin=mysql-slave-bin # 开启binlog,用于从库生成中转日志文件。
  1. 配置从库连向主库的信息
change master to master_host='主库IP地址', master_user='slave_user', 
master_password='password', master_port=<主库端口号>, master_log_file= '<主库二进制日志文件名>', 
master_log_pos=<主库二进制日志位置>;
  • master_host : 主库的ip地址
  • master_user : 主库用户名称,该用户必须拥有复制权限
  • master_password : 主库的用户密码
  • master_port : 主库使用的端口号,默认为3306
  • master_log_file : 主库上正在写入二进制日志的文件名
  • master_log_pos : 正在写入的二进制日志文件的位置。

  • 开启从库的复制服务 begin

mysql> start slave;

MySQL复制的应用实践

实践1:主从同步

  1. 配置主库,开启binlog功能,并创建slave_user, 并给予从库复制权限,此处不再赘述。
  2. 配置从库连向主库的信息
change master to master_host='192.168.0.188', master_user='slave_user', 
    master_password='password', master_port=3306, master_log_file= 'mysql-bin.000012', 
    master_log_pos=4952239;

注意: master_log_filemaster_log_pos的值应该和主库上保持一致,用于数据同步。

  1. 开启从库的复制服务
mysql> start slave;

此时可以通过show slave status\G;命令查看从库的状态,确保从库的无错状态:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.188
   ..........

实践2:主主同步

主主同步是指两个服务器之间的相互备份。实现步骤同上,这里介绍不同之处。
1. 配置主库1开启binlog功能,创建slave_user,并给予从库复制权限,此处不再赘述。
2. 配置主库2与主库1同步,开启binlog功能。
3. 配置主库1从主库2同步,如下:

change master to master_host='主库2的IP地址', master_user='slave_user', 
    master_password='password', master_port=3306, master_log_file= 'mysql-bin.000012', 
    master_log_pos=4952239;

mysql> start slave;

然后在两个库之间进行数据的修改,主库2的数据也会同步到主库1中。

总结

MySQL复制通过binlog文件实现数据同步。需要进行主库和从库的配置,主库开启binlog, 从库连向主库并开启复制服务即可完成数据同步的操作。同时,MySQL复制支持主从同步,以及主主同步,用于完成数据的备份,负载均衡和故障转移等操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 复制原理与实践应用详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL 搭建MHA架构部署的步骤

    MySQL Master High Availability,简称MHA,是一个开源的高可用性方案,可用于MySQL数据库的容错和故障转移。以下是MySQL搭建MHA架构部署的步骤: 安装和配置MySQL 在实施MHA之前,确保在每个MySQL实例运行在相同的操作系统和版本。 安装MySQL服务器并将其配置为主服务器,并设置从服务器以恢复主服务器上的数据。 …

    database 2023年5月18日
    00
  • CentOS安装配置MySQL8.0的步骤详解

    CentOS安装配置MySQL8.0的步骤详解 1. 安装MySQL8.0 1.1 安装包下载 从MySQL官网下载适合你系统的MySQL 8.0版本安装包,选择”Generic Linux”并下载。 1.2 安装包安装 执行以下命令进行安装包解压: tar -zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz 解…

    database 2023年5月22日
    00
  • MySQL多表查询机制

    MySQL多表查询是指在查询过程中涉及到多个表的数据,需要通过多表连接查询机制来实现查询的目的。下面我将从以下几个方面详细讲解MySQL多表查询的完整攻略: 多表连接分类 MySQL中的多表连接主要分为以下三种: 内连接:查询两个表中共有的数据 左连接:查询左边表中所有数据以及两个表中有相同数据的右边表数据 右连接:查询右边表中所有数据以及两个表中有相同数据…

    database 2023年5月22日
    00
  • 最强IDE微软Visual Studio 2017正式版新功能详细汇总(附官方下载地址)

    最强IDE微软Visual Studio 2017正式版是一款非常强大的开发工具,它为开发者提供了许多实用的功能和工具。下面我们来详细讲解一下Visual Studio 2017的新功能。 Visual Studio 2017新功能汇总 支持多种语言 Visual Studio 2017支持多种语言,包括C ++, C#, F#, Visual Basic和…

    database 2023年5月22日
    00
  • SQL将一个表中的数据插入到另一个表中的方法

    要将一个表中的数据插入到另一个表中,我们可以使用SQL中的INSERT INTO语句。下面是具体的攻略及示例说明: 1. 创建目标表 首先,我们需要创建一个目标表,用于存储将要插入的数据。假设我们需要将一个名为”students”的表中的数据插入到另一个名为”new_students”的表中,我们首先需要创建”new_students”表: CREATE T…

    database 2023年5月22日
    00
  • Mybatis配置之别名配置元素解析

    下面是Mybatis配置之别名配置元素解析的完整攻略。 1. 简介 Mybatis中,可以通过配置元素来为Java类型指定别名。通过为Java类型指定别名,可以方便的在映射文件中使用指定的别名代替原来的Java类型名。 2. 配置方式 别名配置有两种方式: 2.1 package方式 在元素内,使用子元素指定一个Java包名。Mybatis会自动将指定包名下…

    database 2023年5月21日
    00
  • Python利用Scrapy框架爬取豆瓣电影示例

    下面我来详细讲解Python利用Scrapy框架爬取豆瓣电影的攻略。 爬虫框架Scrapy简介 Scrapy是一款使用Python语言编写的开源网络爬虫框架,目的是帮助开发者高效地爬取Web站点的信息内容。它通过定制配置的方式对每个请求进行处理,从而实现高效率、快速的数据抓取。 Scrapy框架具有以下特点: 强大的抓取性能,支持异步处理和并发下载; 灵活的…

    database 2023年5月22日
    00
  • 软件开发中产品和过程的区别

    软件开发中,常常听到产品和过程两种概念。它们之间存在很大的区别,本攻略将详细讨论它们的概念和区别。 产品 产品的概念 产品是指软件开发实践中的最终成果物,它是以软件为基础的解决方案。产品包括各种形式的软件、文档和相关的软件支持等。产品是软件开发的重要成果,也是衡量软件开发工作效果的一个指标。 产品的特点 可见性。产品是软件开发工作的最终成果,它可以像其他成果…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部