Mysql架构篇--Mysql(M-S) 主从同步

这篇具有很好参考价值的文章主要介绍了Mysql架构篇--Mysql(M-S) 主从同步。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言:


一、主从同步是什么?

MySQL主从同步(MySQL Replication)是MySQL服务器的一个常用特性,它能够将MySQL服务器数据自动同步到其他MySQL服务器上,从而实现数据备份和负载均衡的功能。在实际应用中,MySQL主从同步可以用于实现高可用、灾备转移、读写分离等。

二、主从同步实现:

1.准备工作:

  • 首先需要有大于等于2个的mysql 实例,一个作为master,其它的作为slave;

2.开启主从复制:

2.1 mysql 服务端配置文件修改:

  • 作为master 的节点需要在配置文件中开启binlog,代码如下:
# log-bin 开启binlog 日志,master-log 为记录日志的文件前准名字
log-bin=master-log
# master 的服务节点唯一id
server-id=1
# 可选参数配置哪些数据库是需要被同步的
binlog-do-db=rep
binlog-do-db=user
# 可选参数配置哪些数据库是不需要被同步的
binlog-ignore-db=mysql
binlog-ignore-db=test
# 此处演示使用配置使用旧的密码方式进行数据传输,因为mysql8 默认已经按照ssl 进行加密传输了
default_authentication_plugin=mysql_native_password
  • 作为slave 的节点,配置节点id,代码如下:
server-id=2
default_authentication_plugin=mysql_native_password

配置完成记得重启master和slave mysql 的服务

2.2 mysql master 节点用户创建:

-- 创建slave_rep 用户,密码是123456,可以被连接的ip 段是192.168.75
CREATE USER 'slave_rep'@'192.168.75.%' IDENTIFIED BY '123456';  
-- 对创建的用户赋予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave_rep'@'192.168.75.%';

2.3 mysql slave 节点开启数据复制:

  • 在master 节点查看状态:
show master status;

mysql主从同步,java工具篇,db数据库,mysql,架构

  • slave 节点设置数据同步节点:
change master to master_host='192.168.75.128',master_user='slave_rep',master_password='123456', master_port=3306,
master_log_file='master-log.000002', master_log_pos=340

其中,master_ip_address是主服务器的IP地址,username和password是用于同步的用户名和密码,master-log.000002和340是主服务器上二进制日志文件的名称和位置,需要根据实际情况修改。

  • slave 启动主从同步:
start slave;
  • slave 查看主从同步状态:
show slave status ;

mysql主从同步,java工具篇,db数据库,mysql,架构

如果发现 Slave_IO_Running和Slave_SQL_Running都显示为Yes,说明配置MySQL主从成功。 但凡有一个不是Yes,是什么Connecting,No之类的,说明没配置成功。


  • 配置成功后,在master 创建允许同步的数据库,修改数据都会被同步到slave 节点;

3.新加入slave的节点如何开启主从复制:

对于已经存在的主从同步 节点,现在如果要在增加一个slave 从节点;

3.1 slave 从节点设置节点id:

server-id=3
default_authentication_plugin=mysql_native_password

配置完成记得重启 mysql 服务

3.2 在slave节点新建数据库:

注意和master节点中要同步的数据库名称保持一致

3.3 在slave节点还原数据库:

将master 下要同步得数据数据全量备份后,还原到slave 节点的对应的数据库中

3.4 开启主从同步:

步骤同 2.3 mysql slave 节点开启数据复制:相同

三、主从同步原理:

1.binlog 日志:

binlog 记录了对于数据操作的ddl 和dml 语句,这些语句是可以直接执行;

2.binlog 日志记录:

2.1 日志记录格式:

在 MySQL 8 中,binlog-format 参数已经被弃用,被 default_binlog_format 参数所取代。在 MySQL 8 中,如果未显式指定二进制日志的格式,default_binlog_format 参数将控制 MySQL 记录二进制日志的格式。
default_binlog_format 参数有以下可选值:

  • ROW:记录行级别别更改。在 MySQL 8 中,这是默认的二进制日志格式。
  • STATEMENT:记录每个需要记录的 SQL 语句。
  • MIXED:混合使用 ROW 和 STATEMENT 两种格式,选择使用哪一种格式取决于具体的 SQL 语句。

2.2 三种记录格式的区别:

  • 基于语句级别的复制(statement-based replication,SBR):这种方式是最初的复制方式,将主服务器上执行的修改数据的SQL语句记录到二进制日志文件中,然后将这些SQL语句发送到从服务器,从服务器再执行这些SQL语句完成数据同步。此方法的优点是复制过程中只传输SQL语句,网络传输量小;缺点是可能会有一些数据不一致的情况出现,例如在主服务器上执行的一些非确定性函数(如 uuid,date 等),或者在从服务器上存在不存在的表或数据行。

  • 基于行级别的复制(row-based replication,RBR):这种方式是在SBR基础上发展而来,它直接将修改数据的二进制数据发送到从服务器,然后在从服务器上执行相同的二进制数据完成数据同步。此方法的优点是能够保证数据一致性,能够处理一些复杂的SQL语句;缺点是对于大量的操作,可能会产生大数据量传输。

  • 基于混合复制(mixed-based replication,MBR):它是综合了SBR和RBR两种方式的优点,即在不同的情况下选择不同的方式。例如,对于不涉及大量数据变更的SQL语句使用语句级别的方式,对于大量数据变更的SQL语句使用行级别方式。该方式比较灵活,能够平衡性能和数据一致性的关系。

需要注意的是,建议在配置主从复制时明确指定二进制日志的格式,以避免误解和不必要的问题。在一致性设置和数据同步方面,明确定义二进制日志格式可以提高主从数据同步的效率和稳定性。

2.3 binlog 主从复制流程:

mysql主从同步,java工具篇,db数据库,mysql,架构

  • slave 节点先发送请求给到主节点,主节点在有数据变化时就可以推送数据给到 从节点;
  • 从节点接到数据后先写到log 中,然后在由其它的线程对log 数据进行解析然后入库;

四、总结:

Mysql 主从同步主要是通过master 节点开启binlog 日志,然后slave 节点消费binlog 日志的数据,将数据更新到各自的库中。文章来源地址https://www.toymoban.com/news/detail-702901.html

到了这里,关于Mysql架构篇--Mysql(M-S) 主从同步的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统中MySQL 数据库的主从同步

    在主数据库服务器上配置: 编辑主数据库服务器的配置文件(my.cnf) : 打开 MySQL 配置文件,一般路径为 /etc/my.cnf 或 /etc/mysql/my.cnf。 确保以下参数已启用或配置正确: 注: 一定是[mysqld]代码块中 创建用于复制的用户 : 登录到 MySQL 控制台: mysql -u root -p 创建用于复制的用户

    2024年03月23日
    浏览(58)
  • 发现Mysql的主从数据库没有同步,差点凉凉了

    摘要: 今天发现Mysql的主从数据库没有同步,瞬间整个人头皮发麻。 本文分享自华为云社区《糟了,生产环境数据竟然不一致,人麻了!》,作者:冰 河 。 今天发现Mysql的主从数据库没有同步 先上Master库: 查看下进程是否Sleep太多。发现很正常。 也正常。 再到Slave上查看

    2023年04月17日
    浏览(90)
  • 使用Docker构建的MySQL主从架构:高可用性数据库解决方案

    MySQL主从架构,我们已经在vmware虚拟机上实践过了,接下来我们一起探讨在docker中如何使用MySQL主从架构。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺

    2024年02月08日
    浏览(89)
  • 7 - MySQL主从同步|主从同步模式

    1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型 2 - 表结构 | MySQL键值 3 - 字段约束|MySQL索引|MySQL用户管理 4 - 基础查询进阶|连接查询 5 - 视图|存储过程 6 - 数据备份与恢复|innobackupex 7 - MySQL主从同步|主从同步模式 8 - MySQL数据读写分离|MySQL多实例

    2024年02月02日
    浏览(39)
  • 【mysql】MySQL 主从同步延迟排查

    错误日志: ○ 寻找与同步问题相关的错误消息或警告。 复制状态: ○ SHOW SLAVE STATUS 并行复制设置: ○ 确保 slave_parallel_workers 的值合适。如果值过高,可能会导致资源竞争,而值过低可能会导致性能下降。 长事务: ○ 查询长时间运行的事务,可能会影响到复制的正常进行

    2024年02月07日
    浏览(44)
  • mysql 主从同步

    角色 ip master 192.168.233.100 slave1 192.168.233.101 slave2 192.168.233.102 禁用 selinux 跟 firewal l情况下: 新路径已修改为 /var/lib/mysql/new_bin master 节点信息 在 master 节点新建同步账号 在 master 与 slave 节点创建数据库 在 slave1 节点配置 发现错误:Last_IO_Error: Fatal error: The slave I/O thread stops be

    2024年02月07日
    浏览(35)
  • 配置mysql的主从同步

    添加用户 添加用户权限 显示主库状态 配置从库 启动从库 如果要重新修改配置 ,需要先停止 最后查看从库状态

    2024年02月21日
    浏览(34)
  • mysql 主从同步案例集合

      relay log 损坏了,导致从库的 SQL 线程解析 relay log 时出现异常。从库恢复方式是通过手动设置当时出错的 GTID 的下一个值,让从库不从主库同步这个 GTID,最后从库就能正常同步这个 GTID 之后的 binlog 了,后续 SQL 线程也能正常解析 relay log 了。 你好,我是悟空。 本文主要内

    2023年04月14日
    浏览(42)
  • 使用本地mysql+linux实现mysql主从同步

    1.1修改该linux配置文件 1.2重启linux的mysql 1.3使用账户密码登录linux中的mysql,查看是否配置成功 若显示有FIile和Posttion就表示注linux的主节点配置成功 注意事项: 本地的这个数据库的权限必须是管理员权限,否则会出现数据库不能进行访问,配置就会失败 2.1修改本地mysql中的 my.ini 文

    2024年02月09日
    浏览(36)
  • MySQL主从同步(不开GTID)

    一、背景 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 二、目标 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 IP地址 MySQL版本 主从关系 192.168.3.244 5.6.51 Master 192.168.3.245 5.7.41 Slaver 192.168.3.246 8.0.33 Slaver 三、过程 1、安

    2024年02月06日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包