首页 > 数据库 >MySQL的 主从同步

MySQL的 主从同步

时间:2024-10-22 17:18:17浏览次数:9  
标签:同步 配置 MASTER MySQL 服务器 主从

1. 概述

MySQL 主从同步(Replication)是一种数据备份和灾难恢复的解决方案,同时也可以用于负载均衡和读写分离。通过主从同步,可以将一个 MySQL 数据库服务器(主服务器)的数据实时复制到另一台或多台 MySQL 服务器(从服务器)。本文档将介绍如何配置 MySQL 主从同步,并提供示例操作。

2. 原理

MySQL 主从同步基于以下原理:

  1. 主服务器将所有更新记录到二进制日志(Binary Log)。

  2. 从服务器通过 I/O 线程读取主服务器的二进制日志,并将这些日志事件(Log Events)写入到本地的中继日志(Relay Log)。

  3. 从服务器通过 SQL 线程执行中继日志中的事件,从而实现数据的同步。

3. 环境准备

  • 两台安装了 MySQL 的服务器(本文以 MySQL 5.7 版本为例)。

  • 主服务器 IP:192.168.1.100

  • 从服务器 IP:192.168.1.101

4. 配置主服务器

4.1 修改配置文件

编辑主服务器的 MySQL 配置文件 my.cnf(或 my.ini),添加以下配置:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire_logs_days = 10

4.2 创建复制用户

在主服务器上创建一个用于复制的用户,并授予相应的权限:

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

4.3 获取主服务器状态

在主服务器上执行以下命令,记录下 FilePosition 的值,稍后会在从服务器配置中使用:

SHOW MASTER STATUS;

5. 配置从服务器

5.1 修改配置文件

编辑从服务器的 MySQL 配置文件 my.cnf(或 my.ini),添加以下配置:

[mysqld]
server-id = 2
relay-log = mysql-relay-bin

5.2 配置从服务器

在从服务器上执行以下命令,配置主从同步:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replicator',
MASTER_PASSWORD='replicator_password',
MASTER_LOG_FILE='mysql-bin.000001',  -- 之前记录的 File 值
MASTER_LOG_POS=154;                  -- 之前记录的 Position 值

5.3 启动从服务器复制线程

在从服务器上执行以下命令,启动复制线程:

START SLAVE;

5.4 检查从服务器状态

在从服务器上执行以下命令,检查复制状态:

SHOW SLAVE STATUS\G

如果 Slave_IO_RunningSlave_SQL_Running 都是 Yes,则表示主从同步配置成功。

6. 测试主从同步

在主服务器上创建一个测试数据库和表:

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255));
INSERT INTO test_table (value) VALUES ('Test Value');

在从服务器上检查是否同步成功:

USE testdb;
SELECT * FROM test_table;

如果从服务器上能够查询到主服务器插入的数据,说明主从同步正常工作。

7. 注意事项

  • 确保主从服务器的时间同步,以免出现同步错误。

  • 如果主服务器已经运行了一段时间,需要在从服务器上初始化数据,然后指定同步位置。

  • 根据实际需求,可以配置不同的复制模式(如基于语句的复制、基于行的复制等)。

8. 结语

通过以上步骤,我们成功配置了 MySQL 主从同步。在实际生产环境中,主从同步有助于提高数据安全性和系统可用性,是数据库运维的重要手段。

标签:同步,配置,MASTER,MySQL,服务器,主从
From: https://blog.csdn.net/wu73guang5jian/article/details/143163861

相关文章

  • django+mysql怎么开局
    后端开局:django+mysql思路是这篇:vue3+django+mysql实现一个简单的前后端分离的小案例-CSDN博客首先,用pycharm创建的时候我选的是anaconda3虚拟环境然后创建项目的时候选择django项目,会帮你创建好基础的东西。然后你需要在终端使用命令来创建apps文件夹。(看这篇:django创建......
  • 火锅店管理系统/火锅店管理软件/餐饮管理系统/火锅店收银系统/餐厅管理软件/火锅店ERP
    博主介绍......
  • 小型诊疗预约平台/小型诊疗/预约平台/医疗预约/诊所预约/医生预约/网上预约/医疗服务/
    博主介绍......
  • MySQL基于gtid同步,新增slave节点
    环境说明:当前MySQL集群为一主一从,新增加Slave节点,将架构变更为一主两从,集群已经运行了很长时间,主节点得binlog早就被purged,启动slave得时候会报错,1236、1062等操作步骤:备份master数据,从节点resetmaster,导入数据1.备份主节点数据:在进行任何操作之前,首先需要对主节点的数据进......
  • mysql建议单表2000万条数据的由来
    Mysql在建表之初就要考虑到他的存储量和性能问题,所以一般Mysql数据库建议单表最大两千万,但是为啥是两千万呢这里我们解释一下,知其然还要知其所以然!这一块的知识解释起来会涉及一点存储引型的相关知识了这里给提供一个基本概念,但是了解完之后会对InnonDB引型会有一定的了解数据......
  • 保姆级 | MySQL的安装配置教程(非常详细)
    一、下载Mysql从官网下载MySQL,这里我选用的是Mysql8.0.34版本   二、安装Mysql下载完成后直接双击进行安装,打开后的页面如下所示:“DeveloperDefault”是开发者默认“Serveronly”仅作为服务器安装“Clientonly”仅作为客户端安装“Full”是完整安装“Custom”......
  • 用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗?
    在默认条件下,用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗?WHAT?报错如下:[root@node234~]#mysql-ushukuinfo-p'123456'-h172.16.1.223mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.ERROR2026(HY000):SSLconn......
  • 金融交易系统延迟,NTP时间同步服务器为其保驾护航
    金融交易系统延迟,NTP时间同步服务器为其保驾护航金融交易系统延迟,NTP时间同步服务器为其保驾护航京准电子科技官微——ahjzsz“2024年9月27日,上海证券交易所(上交所)的交易系统出现了延迟现象,导致投资者在关键时刻无法及时进行操作。这一现象不仅影响了多家交易平台,还引发了投资......
  • mysql innodb_data_file_path参数忘记设置或者重新调整办法
    目录mysqlinnodb_data_file_path参数忘记设置或者重新调整办法mysqlinnodb_data_file_path参数忘记设置或者重新调整办法my.cnf文件中,默认配置为innodb_data_file_path=ibdata1:10M:autoextend目前该文件已经扩大到了1g多:-rw-r-----1mysqlmysql14701035524月161......
  • MySQL和Elasticsearch使用场景
    来源:https://www.zhihu.com/question/637732937ES的底层实现:倒排索引正排索引(ForwardIndex)的实现方式为,通过文档ID去查找整个文档内容,适用于全部文档遍历或根据某个文档ID查找内容的场景。而倒排索引(InvertedIndex)的实现方式,则是通过文档中的关键词去查找文档ID列表,这也就是其非......