千家信息网

mysql中怎么实现主从复制

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家介绍mysql中怎么实现主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0、为什么需要主从复制?1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁
千家信息网最后更新 2026年11月04日mysql中怎么实现主从复制

这篇文章给大家介绍mysql中怎么实现主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

0、为什么需要主从复制?

1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

2、做数据的热备

3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

1、什么是mysql的主从复制?

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

2、mysql复制原理

原理:

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

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

(3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

也就是说:

  • 从库会生成两个线程,一个I/O线程,一个SQL线程;

  • I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;

  • 主库会生成一个log dump线程,用来给从库I/O线程传binlog;

  • SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行;

注意:

1--master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master一定要开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。2--slave开启两个线程:IO线程和SQL线程。其中:IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。3--Mysql复制至少需要两个Mysql的服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。4--Mysql复制最好确保master和slave服务器上的Mysql版本相同(如果不能满足版本一致,那么要保证master主节点的版本低于slave从节点的版本)5--master和slave两节点间时间需同步

具体步骤:

1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave

2、从库的IO线程和主库的dump线程建立连接。

3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。

4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。

5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中

6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

mysql主从复制安装配置

1、基础设置准备

#操作系统:centos6.5#mysql版本:5.7#两台虚拟机:node1:192.168.85.11(主)node2:192.168.85.12(从)

2、安装mysql数据库

#详细安装和卸载的步骤参考对应的文档

3、在两台数据库中分别创建数据库

--注意两台必须全部执行create database msb;

4、在主(node1)服务器进行如下配置:

#修改配置文件,执行以下命令打开mysql配置文件vi /etc/my.cnf#在mysqld模块中添加如下配置信息log-bin=master-bin #二进制文件名称binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。server-id=1   #要求各个服务器的id必须不一样binlog-do-db=msb   #同步的数据库名称

5、配置从服务器登录主服务器的账号授权

--授权操作set global validate_password_policy=0;set global validate_password_length=1;grant replication slave on *.* to 'root'@'%' identified by '123456';--刷新权限flush privileges;

6、从服务器的配置

#修改配置文件,执行以下命令打开mysql配置文件vi /etc/my.cnf#在mysqld模块中添加如下配置信息log-bin=master-bin#二进制文件的名称binlog-format=ROW#二进制文件的格式server-id=2#服务器的id

7、重启主服务器的mysqld服务

#重启mysql服务service mysqld restart#登录mysql数据库mysql -uroot -p#查看master的状态show master status;

8、重启从服务器并进行相关配置

#重启mysql服务service mysqld restart#登录mysqlmysql -uroot -p#连接主服务器change master tomaster_host='192.168.150.11',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=334;#启动slavestart slave#查看slave的状态show slave status\G(注意没有分号)

关于mysql中怎么实现主从复制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

服务 线程 数据 服务器 日志 二进制 配置 数据库 语句 文件 节点 主从 内容 版本 业务 一致 两个 信息 名称 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 互联网是第几次科技革命的成果 互联网科技公司的优势 互联网巨头反垄断金融科技 互联网络科技有限公司 上海挚品互联网科技 互联网科技英文 紫鲸互联网科技 九亚互联网科技 丰台科技园 互联网 上海致骋互联网科技 互联网科技小额贷款 上游互联网科技 科技互联网的估值 银川新华互联网科技职业技术培训学校图片 无锡工业互联网科技有限公司 互联网科技包装股份有限公司上市 互联网科技包装股 九思连强互联网电子科技有限公司 互联网金融运营模式中的金融科技 互联网科技官网 互联网巨头反垄断金融科技 山东吉时兔互联网科技有限公司 阿大互联网科技有限公司 移动互联网年度科技创新 互联网公司黑科技创始人 互联网界的黑科技 福仕德教育科技互联网 广西泛欧互联网科技有限公司 武汉亿视互联网科技有限公司
0