关键词:
MySQL主从复制
1. 为什么需要主从复制?
-
在业务复杂的系统中,有这么一个情景:如果有一句sql语句需要
锁表
,导致暂时不能使用读
的服务,那么就很影响运行中的业务。使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。 -
做数据的
热备
-
业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
2. 什么是主从复制?
MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到
一个
或多个
从节点。
MySQL 默认采用异步复制
方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中所有的数据库或者特定的数据库,或者特定的表。
3. 原理
master服务器
将数据的改变记录二进制binlog日志
,当master上的数据发生改变
时,则将其改变写入二进制日志中。slave服务器
会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread
请求master二进制事件。- 同时主节点为每个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语句逐一执行。
4. 配置
4.1 准备两台服务器(已经安装了MySQL)
master:xxx
slave:xxx
4.2 修改配置
两台机子同时创建一个同名的数据库。
create database test_db charset=utf8mb4;
4.2.1 master 主服务器
- 找到
my.cnf
sudo vim /etc/mysql/my.cnf
- 添加这些信息
#在mysqld模块中添加如下配置信息
[mysqld]
log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1 # 要求各个服务器的id必须不一样
binlog-do-db=test_db # 同步的数据库名称
- 配置从服务器登录主服务器的账号授权
grant replication slave on *.* to 'root'@'%' identified by 'root';
- 刷新权限
flush privileges;
- 重启master服务器
service mysql restart
- 在mysql中查看
master
的status
show master stataus
4.2.2 slave 从服务器
- 找到
my.cnf
文件
- 配置信息
这个server-id
记得一定要和主服务器的不一样
!
- 重启
mysql
服务
service mysqld restart
- 连接主服务器
change master to master_host='主服务地址',master_user='root',master_password='root',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;
这个master_log_file
就是上面那个show master stataus
的信息。
这个master_log_pos
就是上面那个show master stataus
的信息。
- 启动slave
start slave
- 查看slave
show slave status \\G(注意没有分号)
当我们看着这两个都是YES
的时候就可以了,注意不能是其他CONNECTING
- 停止slave
stop slave
4.2.3 验证
-
master
主服务器
-
slave
子服务器
两个服务器都是空
的状态
那首先我们可以先在master节点
上进行插入一条语句
然后在slave节点
上查看
于是我们看到已经实现主从复制
了。
mysql的主从复制(代码片段)
MySQL的主从复制Whyweneed主从复制?复制功能复制方式复制原理复制流程图复制过程复制中线程的作用从节点主节点从节点需要建立二进制日志文件吗?Mysql复制特点主从复制配置过程主节点从节点配置演示主机修改my.ini配置文... 查看详情
mysql主从复制的简单搭建(代码片段)
文章目录1、MySQL一主一从的简单搭建1.1、主从复制简介1.2、MySQL主从复制简介1.3、主从复制的架构1.4、前期准备1.5、主要配置实现1.5.1、测试环境1.5.2、配置my.cnf文件1.5.3、启动mysql测试1.5.4、配置主从结构1.5.4.1、主服务器配置1.5.4... 查看详情
mysql主从复制的简单搭建(代码片段)
文章目录1、MySQL一主一从的简单搭建1.1、主从复制简介1.2、MySQL主从复制简介1.3、主从复制的架构1.4、前期准备1.5、主要配置实现1.5.1、测试环境1.5.2、配置my.cnf文件1.5.3、启动mysql测试1.5.4、配置主从结构1.5.4.1、主服务器配置1.5.4... 查看详情
mysql运维主从复制--主从复制概述主从复制原理搭建mysql主从复制(代码片段)
文章目录1.主从复制概述2.主从复制原理3.搭建3.1服务器准备3.2主库配置3.2.1修改配置文件/etc/my.cnf3.2.2重启MySQL服务器3.2.3登录mysql,创建远程连接的账号,并授予主从复制权限3.2.4通过指令,查看二进制日志坐标3.3从库... 查看详情
mysql主从复制(代码片段)
目录主从复制基础主从复制简介主从复制前提主从复制搭建主库配置(3307实例)从库配置(3308实例)主从复制原理主从复制相关文件主从复制相关线程主从复制图解原理主从故障监控/分析/处理IO线程故障连接主... 查看详情
msyql5.7主从复制(代码片段)
目录mysql主从复制主从原理配置主从复制master主节点配置slave从节点配置mysql主从复制合理的mysql主从复制需要3台机器,每台机器上都有mysql。3台中,一台是master节点,负责数据写入。另外两台负责读取。绝大多数的业... 查看详情
mysql主从复制配置(代码片段)
1.环境介绍192.168.1.101master192.168.1.102slave12.安装mysqlhttps://blog.csdn.net/weixin_45955039/article/details/123137325?spm=1001.2014.3001.55023.master上的配置3.1在文件/etc/my.cnf中添加以下内容,切记要添加在[mysql 查看详情
mysql主从复制架构实现(代码片段)
...3)并联复制(一主多从)4)双主复制三、MySQL主从复制的搭建(AB复制)1.传统AB复制架构(M-S)2.环境准备3.MySQL主从复制核心思路4.MySQL主从复制实现1)安装MySQL软件2)安全配置3)配置my.cnf(重点... 查看详情
《mysql系列-主从相关》docker安装mysql,实现主从复制(代码片段)
Docker安装MySQL,实现主从复制一、前言1Docker安装MySQL参考历史文章Docker安装MySQL,准备两台MySQL容器master节点容器名称MySQL01容器IDfaf2312fd62a端口33061slave节点容器名称MySQL01容器IDdfc693c2bb04端口330622MySQL主从复制配置实操参考... 查看详情
mysql主从复制搭建(代码片段)
目录1.环境信息2.安装mysql数据库3.配置主从同步4.配置从服务器登录主服务器的账号授权5.从服务器的配置(my.cnf)6.重启主服务器7.从服务器配置8.测试主从同步9遇到的问题9.1uuid重复造成io为No1.环境信息克隆好两台虚拟机... 查看详情
主从复制和读写分离(代码片段)
主从复制和读写分离一.概述二.主从复制原理1.mysql复制类型2.mysql主从复制的工作过程三.Mysql读写分离1.读写分离原理2.读写分离方案3.读写分离存在的意义4.什么时候要读写分离四.Mysql主从复制和读写分离实验案例拓扑图:思... 查看详情
mysql5.7.26做主从复制配置(代码片段)
一、首先两台服务器安装好mysql数据库环境参照linuxrpm方式安装mysql5.1https://www.cnblogs.com/sky-cheng/p/10564604.html二、主库master上创建主从复制账号mysql>grantreplicationslave,replicationclienton*.*to‘repl‘@‘%‘identifiedby‘[email 查看详情
mysql主从复制及读写分离实际部署与验证(代码片段)
MySQL主从复制及读写分离前言:一、主从复制1.原理:2.准备来做主从复制和读写分离的服务器如下:3.主从复制具体步骤1.关闭所有服务器的防火墙2.Mysql主从服务器都进行时间同步3.主从服务器mysql配置4.从服务器的mysq... 查看详情
mysql主从配置(代码片段)
MySQL主从配置一:简介二:优点三:流程(docker下mysql的主从配置)1.docker中安装mysql2.配置主(master)服务器3.配置从(slave)容器4.主从复制5.问题及解决方案第一种错误情况第二种错误情况一:简介主从同... 查看详情
mysql主从配置(代码片段)
MySQL主从配置一:简介二:优点三:流程(docker下mysql的主从配置)1.docker中安装mysql2.配置主(master)服务器3.配置从(slave)容器4.主从复制5.问题及解决方案第一种错误情况第二种错误情况一:简介主从同... 查看详情
主从复制和读写分离(代码片段)
主从复制和读写分离一.概述二.主从复制原理1.mysql复制类型2.mysql主从复制的工作过程三.Mysql读写分离1.读写分离原理2.读写分离方案3.读写分离存在的意义4.什么时候要读写分离四.Mysql主从复制和读写分离实验案例拓扑图:思... 查看详情
mysql数据库--主从复制读写分离(代码片段)
文章目录一、主从复制1、原理2、二进制日志的保存方式3、主从复制策略4、搭建MySQL主从复制二、读写分离1、原理2、读写分离3、读写分离的好处4、实现方式4.1、Amoeba简介五、搭建MySQL读写分离1、实验准备2、amoeba(192.168.35.30)安... 查看详情
使用mysqldump或mydumper配置mysql主从复制(代码片段)
1.使用mysqldumpcatdump_and_replication.sh#!/bin/bashsource~/.bashrcmysql-uroot-p123456-S/data/3306/mysqldata/mysql.sock-Ddb1-e"setglobalsql_log_bin=0;altertablet1dropprimarykey,dropindexIndex_1, 查看详情