【MySQL】 主从复制及其配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL主从复制1. 为什么需要主从复制?2. 什么是主从复制?3. 原理4. 配置4.1 准备两台服务器(已经安装了MySQL)4.2 修改配置4.2.1 master 主服务器4.2.2 slave 从服务器4.2.3 验证

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语句逐一执行。

image.png


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


image.png


添加这些信息

#在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

image.png


4.2.2 slave 从服务器

找到 my.cnf文件

image.png


配置信息

这个server-id记得一定要和主服务器的不一样!

image.png


重启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(注意没有分号)


image.png


当我们看着这两个都是YES的时候就可以了,注意不能是其他CONNECTING


停止slave

stop slave


4.2.3 验证

master 主服务器

image.png


slave 子服务器

image.png


两个服务器都是空的状态


那首先我们可以先在master节点上进行插入一条语句

image.png


然后在slave节点上查看

image.png

于是我们看到已经实现主从复制了。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
28天前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
36 0
|
21天前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
109 8
centos7 mysql安装及配置
|
6天前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
24 6
|
7天前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
19 1
|
7天前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
20天前
|
SQL 关系型数据库 MySQL
MySQL----配置双主双从
本文档详细介绍了如何在四台服务器上配置MySQL的双主双从架构。首先,通过关闭防火墙和SELinux确保网络通信畅通无阻。接着,设置各服务器的主机名和本地Host,确保名称解析正确。然后,通过YUM安装MySQL并修改初始密码。接下来,逐步配置四个节点(master01、master02、slave01、slave02),包括修改配置文件、创建用户和授权等步骤,实现主从复制。最后,通过SQL命令验证主从同步是否成功。
|
27天前
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
49 0
|
28天前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
28 2
|
29天前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
29天前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 如何减少主从复制延迟?
在Linux中,mysql 如何减少主从复制延迟?

热门文章

最新文章