msyql5.7主从复制(代码片段)

上海一亩地 上海一亩地     2022-12-04     394

关键词:

目录

mysql主从复制

合理的mysql主从复制需要3台机器,每台机器上都有mysql。
3台中,一台是master节点,负责数据写入。另外两台负责读取。
绝大多数的业务场景都是高读取、低写入。所以通过3个mysql配置成组合复制就能做出一个mysql的读写分离版本。

主从原理

  1. 当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。
  2. slave从库连接master主库,Master有多少个slave就会创建多少个binlog dump线程。
  3. 当Master节点的binlog发生变化时,binlog dump 线程会通知所有的salve节点,并将相应的binlog内容推送给slave节点。
  4. I/O线程接收到 binlog 内容后,将内容写入到本地的 relay-log。
  5. SQL线程读取I/O线程写入的relay-log,并且根据 relay-log 的内容对从数据库做对应的操作。

    主从复制的详细理论介绍推荐这篇博客

配置主从复制

准备3台机器,每台机器都安装了mysql5.7。编译安装方法可以参考这篇博客:
https://blog.csdn.net/qq_43626147/article/details/124732329

三台机器的ip:
10.0.0.101 master
10.0.0.102 slave1
10.0.0.103 slave2

master主节点配置

mysql -u root -p
Enter password: 123456

# 主节点上创建slave用户,用于和两台slave节点进行复制操作
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 给slave用户添加复制binlog的权限
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
# 刷新mysql权限表
mysql> flush privileges;

mysql> exit;
Bye

# 开启binlog功能,这是实现主从复制的关键功能
vim /etc/mysql/conf.d/mysql.cnf
-------------------------------
[mysqld]  # 注意这里是mysqld,不是mysql
server-id=1 # 确保每台master或slave的server id不一样。
log-bin=mysql-bin
binlog_ignore_db=mysql # 不同步mysql库的binlog
# binlog-do-db=xxxx  # 你也可以选择只对某个db进行主从复制,这样性能更好。

# 重启mysql
systemctl restart mysqld

# 查看mysql master状态
mysql -u root -p
Enter password: 123456

mysql> show master status;
# 能显示file就表示binlog启动成功
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      769 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

slave从节点配置

# 编辑配置文件
vim /etc/mysql/conf.d/mysql.cnf
-------------------------------
[mysqld] # 注意这里是mysqld,不是mysql
relay-log=slave-bin
server-id=2

# 重启
systemctl restart mysqld

# 在slave上的mysql主动连接master
mysql -u root -p
Enter password: 123456

# 下面的命令中 master_log_file 和 master_log_pos的值来自主节点配置时show master status;的返回值。
mysql> change master to master_host='10.0.0.101',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=769;

# 启动slave
mysql> start slave;

# 查看主从复制是否已启动 ,能出现类似如下的返回说明是正常的,如果没有,等待一会看看或者自行排错。
mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  2 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
|  3 | system user |           | NULL | Connect |   29 | Waiting for master to send event                       | NULL             |
|  4 | system user |           | NULL | Connect |   29 | Slave has read all relay log; waiting for more updates | NULL             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)

# 查看slave的详细信息
mysql> show slave status;

到此主从复制就完成了。
实际上这个属于异步同步模式,是mysql默认的主从复制模式,如果你想实现半同步复制和GTID模式,自行百度,然后修改配置重启mysqld即可。

mysql主从复制(代码片段)

目录主从复制基础主从复制简介主从复制前提主从复制搭建主库配置(3307实例)从库配置(3308实例)主从复制原理主从复制相关文件主从复制相关线程主从复制图解原理主从故障监控/分析/处理IO线程故障连接主... 查看详情

主从复制(代码片段)

文章目录主从复制(replication)的工作原理主从复制binlog日志有几种记录方式,说说各自的优缺点主从复制有几种方式?异步复制半同步复制增强半同步复制主从复制(replication)的工作原理复制(replic... 查看详情

redis主从复制(代码片段)

文章目录一、Redis主从复制概述(1)主从复制概述(2)Redis主从的同步策略二、配置Redis的主从复制(1)实验环境(2)实验目的(3)实验步骤一、Redis主从复制概述(1)主从复制概... 查看详情

mysql主从复制(代码片段)

MySQL主从复制前言:一.什么叫高可性:二.MySQL设计思路三.MySQL主从复制原理3.1MySQL的复制类型3.2MySQL主从复制默认使用的机制3.3MySQL主从复制工作过程四.主从复制配置4.1主从服务器时间同步4.2配置主从同步4.3配置规则4.4验... 查看详情

gtid主从复制(代码片段)

目录一、基于GTID的主从复制1.什么是GTID2.GTID主从复制的优点3.GTID主从复制的缺点4.搭建GTID主从复制5.GTID复制和传统复制的区别一、基于GTID的主从复制1.什么是GTID1.全局事务标识符2.组成:UUID+TID f03a53e0-cd46-11ea-a2c4-000c292c767e:12.GTID... 查看详情

主从复制和读写分离(代码片段)

主从复制和读写分离一.概述二.主从复制原理1.mysql复制类型2.mysql主从复制的工作过程三.Mysql读写分离1.读写分离原理2.读写分离方案3.读写分离存在的意义4.什么时候要读写分离四.Mysql主从复制和读写分离实验案例拓扑图:思... 查看详情

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从库... 查看详情

主从复制故障处理(代码片段)

目录主从复制线程管理命令IO线程故障连接主库:connecting排查思路解决此类问题请求日志,接收日志(Binlog)解决此类问题查询binlog的相关命令SQL线程故障SQL主要做什么工作?relay-log故障本质解决此类问题避免一定程度的SQL线程... 查看详情

mysql数据库——主从复制与读写分离(代码片段)

文章目录前言一、MySQL主从复制1.支持的复制类型2.主从复制的工作过程是基于日志3.请求方式4.主从复制的原理5.MySQL集群和主从复制分别适合在什么场景下使用6.为什么使用主从复制、读写分离7.用途及条件8.mysql主从复制存在的... 查看详情

详解redis主从复制(代码片段)

文章首发于公众号“蘑菇睡不着”前言Redis的主从复制和MySQL差不多,主要起着数据备份,读写分离等作用。所以说主从复制对Redis来说非常重要,而无论是面试还是工作总,了解Redis主从复制底层实现有非常有必要,那么接下来... 查看详情

redis主从复制-哨兵-集群相关部署(代码片段)

Redis主从复制+哨兵+集群一.主从复制-哨兵-集群二.主从复制1.主从复制的作用2.主从复制流程3.部署Redis主从复制三.哨兵模式1.哨兵模式的原理2.哨兵模式的作用3.哨兵结构由两部分组成,哨兵节点和数据节点部署哨兵模式... 查看详情

mysql的主从复制(代码片段)

MySQL的主从复制Whyweneed主从复制?复制功能复制方式复制原理复制流程图复制过程复制中线程的作用从节点主节点从节点需要建立二进制日志文件吗?Mysql复制特点主从复制配置过程主节点从节点配置演示主机修改my.ini配置文... 查看详情

mysql主从复制与读写分离!(代码片段)

mysql主从复制与读写分离一.前言二.主从复制原理1.mysql的复制类型(1)STATEMENT(基于SQL语句):(2)ROW(基于行)(3)MIXED推荐使用2.主从复制的过程详解(1)核心点(2)详细复制过程... 查看详情

redis(主从复制哨兵模式集群)概述及部署(代码片段)

Redis(主从复制、哨兵模式、集群)概述及部署前言一、Redis主从复制1、Redis主从复制的概念2、Redis主从复制的作用3、Redis主从复制的流程4、Redis主从复制的搭建1、环境配置/安装包2、安装Redis(所有主机)3、修改... 查看详情

mysql主从复制详解(代码片段)

前言:在MySQL中,主从架构应该是最基础、最常用的一种架构了。后续的读写分离、多活高可用架构等大多都依赖于主从复制。主从复制也是我们学习MySQL过程中必不可少的一部分,关于主从复制的文章有很多,笔者也来凑凑热... 查看详情

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主从复制(代码片段)

一、主从复制介绍1.1什么是主从复制将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态,称之为主从复制。一句话表示就是,主数据库做什么,从数据库就跟着做什么。1.2为何要做主从&... 查看详情