返回顶部
首页 > 资讯 > 数据库 >什么是MySQL主从复制
  • 880
分享到

什么是MySQL主从复制

2024-04-02 19:04:59 880人浏览 泡泡鱼
摘要

这篇文章主要介绍“什么是Mysql主从复制”,在日常操作中,相信很多人在什么是mysql主从复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Mysql主从复制”的疑惑

这篇文章主要介绍“什么是Mysql主从复制”,在日常操作中,相信很多人在什么是mysql主从复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Mysql主从复制”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.主从复制简介及原理

主从复制(也称 AB 复制)是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器既可充当主机,也可充当从机。MySQL默认采用异步复制方式。

主从复制的过程及原理可以总结如下:

  1. master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中。

  2. slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件。

  3. 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致。

2.基于二进制文件位置配置主从复制

基于二进制文件位置的主从复制又可以称为传统复制,即从服务器依赖于主服务器的binlog文件位置,当主库发生数据变更时,binlog pos位点会增长,从库会感应到变化来完成同步。

配置主从复制,我们首先要准备至少两台MySQL实例,一台充当主服务器、一台充当从服务器。由于主从复制依赖于binlog,所以主库必须开启binlog,且主从要配置不同的server_id,下面具体展示下配置过程:

2.1 确认主从库配置参数

MySQL主从服务器建议有如下配置,可以先确认下,如果未配置,则需要修改配置文件然后重启。

# 主库参数配置 要有以下参数
vim /etc/my.cnf 
[mysqld] 
log-bin = binlog  //启用二进制日志
server-id = 137  //服务器唯一ID,默认值是1,一般设置为IP地址的最后一段数字
binlog_fORMat = row //bilog设置为row模式 防止复制出错
# 从库建议配置以下参数
vim /etc/my.cnf 
[mysqld] 
relay-log = relay-bin
server-id = 138

2.2 确定主库二进制位置,创建同步账号

若主从库都是刚刚初始化完成,且主库无操作时,从库可不用同步主库的数据,直接确定主库的binlog位置即可。

# 查看主库binlog文件位置
show master status;
# 主库创建同步账号
create user 'repl'@'%' identified by '123456';
grant replication slave on *.* to 'repl'@'%';

若主库已经运行了一段时间,有业务数据在,而从库刚刚初始化完成,此时则需要备份主库的数据,然后导入从库,使得主从数据一致。

# 主库创建同步账号
create user 'repl'@'%' identified by '123456';
grant replication slave on *.* to 'repl'@'%';
# 全备主库数据
mysqldump -uroot -pxxxx -A -R -E --single-transaction --master-data=2 > all_db.sql
# 从库端恢复
mysql -uroot -pxxxx < all_db.sql
# 从备份文件中可以找到主库的binlog位置

2.3 进入从库,开启主从复制

找到主库二进制文件位置且完成主从数据一致后,我们就可以正式开启主从复制了。

# 进入从库MySQL命令行 执行change master语句连接主库
# 二进制文件名及pos位置由上面步骤获得
CHANGE MASTER TO MASTER_HOST='MySQL主服务器IP地址',
    MASTER_PORT=3306,
    MASTER_USER='repl',
    MASTER_PASSWord='123456',
    MASTER_LOG_FILE='binlog.000002',
    MASTER_LOG_POS=154;
# 开启主从复制 并坚持状态
start slave;
show slave status \G //查看slave状态 确保Slave_IO_Running: Yes Slave_SQL_Running: Yes
3.基于GTID的主从复制

GTID是MySQL 5.6的新特性,其全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover。GTID用于在binlog中唯一标识一个事务。当事务提交时,MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog。

在基于GTID的复制中,首先从服务器会告诉主服务器已经在从服务器执行完了哪些事务的GTID值,然后主库会有把所有没有在从库上执行的事务,发送到从库上进行执行,并且使用GTID的复制可以保证同一个事务只在指定的从库上执行一次,这样可以避免由于偏移量的问题造成数据不一致。也就是说,无论是级联情况,还是一主多从的情况,都可以通过GTID自动找位置,而无需像之前那样通过File_name和File_position找主库binlog位置了。

基于GTID的主从复制与上面基于二进制文件位置的主从复制搭建步骤类似,同样简单展示下搭建过程:

3.1 确认主从库配置,开启GTID

# 主库参数配置 要有以下参数
vim /etc/my.cnf 
[mysqld] 
server-id = 137
log-bin = binlog  
binlog_format = row 
gtid-mode = ON //开启gtid模式
enforce-gtid-consistency = ON   //强制gtid一致性,用于保证启动gitd后事务的安全 
# 从库建议配置以下参数
vim /etc/my.cnf 
[mysqld] 
server-id = 138
log-bin = binlog  
binlog_format = row 
gtid-mode = ON 
enforce-gtid-consistency = ON 
relay-log = relay-bin

3.2 创建同步账号,保持主从库数据一致

若主库刚初始化完成或者主库端保留有全部二进制文件,则从库无需手动同步数据。否则需要手动同步数据使得主从一致。

# 主库创建同步账号
create user 'repl'@'%' identified by '123456';
grant replication slave on *.* to 'repl'@'%';
# 若主库刚初始化或保留有完整二进制文件 则无需执行下面步骤
# 全备主库数据
mysqldump -uroot -pxxxx -A -R -E --single-transaction  > all_db.sql
# 从库端恢复
mysql -uroot -pxxxx < all_db.sql

3.3 进入从库,开启主从复制

# 进入从库MySQL命令行 执行change master语句连接主库
CHANGE MASTER TO MASTER_HOST='MySQL主服务器IP地址',
    MASTER_PORT=3306,
    MASTER_USER='repl',
    MASTER_PASSWORD='123456',
    MASTER_AUTO_POSITION = 1;
# 开启主从复制 并坚持状态
start slave;
show slave status \G

到此,关于“什么是MySQL主从复制”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: 什么是MySQL主从复制

本文链接: https://lsjlt.com/news/62366.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySql主从复制是什么
    小编给大家分享一下MySql主从复制是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!一、什么是Mysql主从复制MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服...
    99+
    2024-04-02
  • 什么是MySQL主从复制
    这篇文章主要介绍“什么是MySQL主从复制”,在日常操作中,相信很多人在什么是MySQL主从复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是MySQL主从复制”的疑惑...
    99+
    2024-04-02
  • mysql主从复制策略是什么
    这篇文章主要介绍“mysql主从复制策略是什么”,在日常操作中,相信很多人在mysql主从复制策略是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql主从复制策略是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • 什么是主从复制
    这篇文章给大家介绍什么是主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。复制的方式在集群中实现复制主要通过两种方式:状态转移(State Transfer):主机(Primary...
    99+
    2024-04-02
  • mysql主从复制的原理是什么
    mysql主从复制的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据...
    99+
    2023-06-15
  • MySQL的主从复制原理是什么
    这篇“MySQL的主从复制原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL的主从复制原理是什么”文章吧。前...
    99+
    2023-07-02
  • mysql主从复制的作用是什么
    MySQL主从复制的作用是实现数据的备份和读写分离。通过主从复制,将主数据库的数据同步复制到从数据库,从而实现数据的备份,提高数据的...
    99+
    2024-04-09
    mysql
  • Redis的主从复制是什么,主从复制的原理又是什么?
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有...
    99+
    2024-04-02
  • redis主从复制是什么
    Redis主从复制是一种数据同步机制,其中一个Redis实例(称为主节点)将其数据异步复制到其他一个或多个Redis实例(称为从节点...
    99+
    2023-09-09
    redis
  • MySQL中主从复制的原理是什么
    MySQL中主从复制的原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。0. 主从复制首先主从复制是什么简单来说是让一台MySQL服务器...
    99+
    2024-04-02
  • Mysql MHA部署中什么是主从复制
    这篇文章给大家介绍Mysql MHA部署中什么是主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mysql MHA部署-主从复制架构说明:参考:http://www.zhaibi...
    99+
    2024-04-02
  • MySQL主从复制延迟原因是什么
    本篇内容主要讲解“MySQL主从复制延迟原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL主从复制延迟原因是什么”吧! ...
    99+
    2024-04-02
  • Couchbase主从复制机制是什么
    Couchbase的主从复制机制是一种用于在分布式数据库集群中实现数据复制和数据同步的技术。在Couchbase中,主从复制机制由两...
    99+
    2024-04-09
    Couchbase
  • mysql主从复制有什么用
    mysql 主从复制用于提高数据冗余、可用性、负载均衡、数据隔离、灾难恢复、数据分发、读写分离、备份、审核和合规性。 MySQL 主从复制的用途 MySQL 主从复制是一种部署 MyS...
    99+
    2024-06-02
    mysql 数据丢失
  • MySql中主从复制机制的原理是什么
    今天就跟大家聊聊有关MySql中主从复制机制的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。主从复制机制MySQL基于binlog实现主从复制,从节点跟踪并获取主节点bin...
    99+
    2023-06-14
  • mysql基于日志的主从复制是什么
    这篇文章主要介绍了mysql基于日志的主从复制是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。       ...
    99+
    2024-04-02
  • MySQL主从架构的复制原理是什么
    MySQL主从架构的复制原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 复制概述Mysql内建的复制功能是构建大型,高性能...
    99+
    2024-04-02
  • MySQL主从复制的底层原理是什么
    这篇文章给大家介绍MySQL主从复制的底层原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。主从复制原理(1) Master 将数据改变记录到二进制日志(binary log)中...
    99+
    2024-04-02
  • mysql主从复制
    一.主从复制简介 2015年5月28日11时,12小时后恢复,损失:平均每小时106.48W$ 1)高可用 2)辅助备份 3)分担负载 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例。 1)主服务器将所有数据和...
    99+
    2019-04-07
    mysql主从复制
  • 【MySQL】主从复制
    纸上得来终觉浅,绝知此事要躬行。 概述 复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多...
    99+
    2015-07-01
    【MySQL】主从复制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作