mysql5.7配置主从

原理:
MySQL主从复制的工作原理如下:

1. 主服务器产生Binlog日志

当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。

2. 从服务器读取Binlog日志 

从服务器会向主服务器发送请求,主服务器把自己产生的Binlog日志信息发送给从服务器。

3. 从服务器应用Binlog日志

从服务器接收到Binlog日志后,会按照日志顺序执行这些日志里记录的操作,使数据库的数据保持一致。

4. IO线程和SQL线程

主从复制在从服务器上有两个线程来完成同步工作:

- IO线程:负责与主服务器通信,拉取二进制日志事件。

- SQL线程:负责解析并执行从IO线程读取的二进制日志事件,使得slave端数据实时与master保持同步。

5. relay log

从IO线程读取到的日志记录会写入中继日志(relay log),然后由SQL线程读取并解析执行,实现数据库操作同步。

6. 并发插入处理

对于并发插入,采用自增步长策略。主从数据库的id生成取不同offset,防止主从id重复。

7. SQL处理

复杂的SQL语句如事务或触发器等,先记录日志,之后在slave端执行,保证数据一致性。

总之,通过主服务器产生binlog日志,从服务器不断拉取并执行,就能实现主从数据实时同步的目的。两台数据库的数据将实时保持一致。

操作:

一、主从复制概述

MySQL主从复制是通过日志同步的方式,实现主库数据库修改同步到从库数据库。它可以用于读写分离、负载均衡、故障恢复等场景。主从复制基于MySQL的binlog日志功能实现。

二、环境准备

采用的MySQL版本为5.7,采用Linux操作系统。主从服务器硬件配置相同,软件环境均安装latest版本MySQL。

三、主库配置

  1. 配置my.cnf开启二进制日志log_bin;
  2. 设置唯一的server_id;
  3. 创建用户与权限用于主从同步;
server-id = 1             #id要唯一
log-bin = mysql-bin         #开启binlog日志
auto-increment-increment = 1   #在Ubuntu系统中MySQL5.5以后已经默认是1
auto-increment-offset = 1 

在这里插入图片描述

四、从库配置

  1. 配置my.cnf开启二进制日志;
  2. 设置唯一的server_id;
  3. 创建用户与权限用于主从同步;
server-id = 3             #这个设置3
log-bin = mysql-bin         #开启binlog日志
auto-increment-increment = 1   #这两个参数在Ubuntu系统中MySQL5.5以后都已经默认是1
auto-increment-offset = 1 

在这里插入图片描述

五、数据同步
主库锁表操作:
FLUSH TABLES WITH READ LOCK
5. 在主库使用mysqldump备份数据;
mysqldump -uroot -p123 --routines --single_transaction --master-data=2 --databases weibo > weibo.sql
6. 恢复备份到从库;
7.source /tmp/ weibo.sql;
8. 查看日志位点信息; SHOW MASTER STATUS;
在这里插入图片描述

  1. 从库配置变更点同步主库; SHOW SLAVE STATUS\G
    在这里插入图片描述

  2. 启动从库IO、SQL线程;
    在这里插入图片描述UNLOCK TABLES;

六、验证同步
在这里插入图片描述

查看Slave状态变量是否一致,在从库查看是否同步新增数据

七、处理常见问题

断线后自动同步、binlog错误处理、SQL线程报错等问题解决办法

八、总结

此次通过mysqldump+binlog日志方式实现了MySQL主从配置,支持读写分离和故障恢复。

以上内容系统性地介绍了MySQL主从配置的全过程,可作为主从实践参考。如有不足,还请指出,共同进步。

参考链接:
https://zahui.fan/posts/86a9c8f5/
https://www.xiadmin.com/39172
https://blog.csdn.net/demored/article/details/123351935
https://www.forasp.cn/html/3021.html
https://www.cnblogs.com/OceanWaves/p/17312432.html

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要查看MySQL5.7主从同步的状态,你可以按照以下步骤进行操作: 1. 进入主库的MySQL控制台:使用命令`docker exec -it db1 mysql -uroot -p`进入主库的MySQL容器,并输入密码。 2. 在主库控制台中,执行命令`show master status;`来查看主库的同步状态。这将显示出主库的binlog文件名和位置。 3. 记下主库的binlog文件名和位置。 4. 进入从库的MySQL控制台:使用命令`docker exec -it db2 mysql -uroot -p`进入从库的MySQL容器,并输入密码。 5. 在从库控制台中,执行命令`stop slave;`来停止从库的同步进程。 6. 执行命令`change master to master_host='主库IP', master_user='主库用户名', master_password='主库密码', master_log_file='主库的binlog文件名', master_log_pos=主库的binlog位置;`来配置从库连接主库。将命令中的参数替换为实际的值。 7. 执行命令`start slave;`来启动从库的同步进程。 8. 执行命令`show slave status\G;`来查看从库的同步状态。在输出中,可以查看到以下信息:Slave_IO_Running和Slave_SQL_Running字段的值应该都是"YES",表示主从同步正在运行。 通过以上步骤,你可以查看MySQL5.7主从同步状态,并确保主从同步正常工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL5.7 设置主从同步](https://blog.csdn.net/qq_32733527/article/details/130731031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值