前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 主从复制

MySQL 主从复制

作者头像
2546610233
发布2024-05-08 16:22:34
710
发布2024-05-08 16:22:34
举报
文章被收录于专栏:误入歧途误入歧途

 环境:

  系统:centos7 x3

  master:192.168.220.133

  slave1:192.168.220.136

  slave2:192.168.220.137

主从复制步骤思路 

代码语言:javascript
复制
1.slave服务器上执行change master to ,启动start slave,主从复制启动

2.此时sql的io线程会通过(change master 指定的在master服务器授权的用户)请求连接master,并从指定的logbin文件的指定位置pos点,发送数据

3.master 收到io线程的请求,然后就会启动一个dump线程,分批读取logbin指定位置之后的语句发给你slave,除此之后,还给了下次我要用那个logbin和pos点

4.当slave io线程拿到logbin文件之后,就放在relaylog中,并且将master给的下次连接的logbin和pos点一起保存,

5.slave sql线程检测到relaylog有变化,就读取,并执行,
 

 主从复制 主要的两个进程(I/O线程,SQL从线程):

一、master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。 二、slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。 三、SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

 主从复制搭建的前提:

  1、主从mysql版本一致   2、主库开启binlog日志(设置log-bin参数)   3、主从server-id不同

1、从库服务器能连通主库

代码语言:javascript
复制
[localhost~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

2、主库和从库数据版本一致

3、主库在配置文件中开启二进制日志功能server-id不同:(vim /etc/my.cnf)

代码语言:javascript
复制
log-bin=mysql-bin
server-id=1 2 #server-id不同

4、主库授权从库

代码语言:javascript
复制
格式:grant replication slave on *.* to '授权用户'@'从库IP' identified by '授权密码';
mysql>grant replication slave on *.* to 'slave'@'192.168.0.*' identified by 'slave123';

5、刷新策略

代码语言:javascript
复制
mysql>flush privileges;

 6、master:查看日志文件

代码语言:javascript
复制
mysql>show master status\G;

 7、slave:从库配置同步参数

代码语言:javascript
复制
格式:
  change master to
  master_host='主库IP',
  master_user='授权用户',
  master_password='授权密码',
  master_log_file='mysql-bin.000003, 主库日志文件
  master_log_pos=931;

8、slave :开启同步,检查同步状态

代码语言:javascript
复制
mysql>start slave;

 9.如果还需要在家从库的话,再从执行加入主库的命令:

代码语言:javascript
复制
mysql>change master to master_host='192.168.220.133',master_user='slave',master_password='root',master_log_file='mysql-bin.000003',master_log_pos=931;

mysql>start slave;

这里就部署完成!!!

注:

  Slave_IO_Running及Slave_SQL_Running均为Yes即为配置成功   Slave_IO_Running 负责读取主库的二进制日志并写入从库的中继日志中   Slave_SQL_Running 负责将中继日志转换成SQL语句后执行   如果有一个不是Yes,请仔细检查上边的所有配置 发现错误先停止主从同步   stop slave; 修改完成后再启动主从同步   如果是Connecting,就是从库无法访问主库   如果是No,日志文件名及日志位置没有对应

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档