首页 > 数据库 >【MySQL主从复制】揭秘高效数据库架构,轻松应对大数据挑战!

【MySQL主从复制】揭秘高效数据库架构,轻松应对大数据挑战!

时间:2024-11-22 16:17:42浏览次数:3  
标签:主从复制 Slave Log MySQL SSL Master SQL Last 揭秘

MySQL 主从复制概述

MySQL 主从复制是一种数据复制技术,用于将一个 MySQL 数据库服务器(主库)的数据实时复制到一个或多个 MySQL 数据库服务器(从库)。这种机制常用于实现读写分离、负载均衡和数据备份等目的。

主从复制的基本步骤

  1. 配置主库:在主库上启用二进制日志,并创建一个具有复制权限的用户。
  2. 配置从库:在从库上设置主库信息,并启动复制进程。
  3. 验证复制状态:检查从库是否成功接收到主库的数据。

配置主库

1. 启用二进制日志

my.cnf 文件中添加以下内容:

[mysqld]
log-bin = mysql-bin
server-id = 1

然后重启 MySQL 服务以使配置生效。

2. 创建复制用户
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
3. 获取主库的二进制日志文件名和位置
SHOW MASTER STATUS;

输出示例:

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

配置从库

1. 编辑从库的配置文件 my.cnf

my.cnf 文件中添加以下内容:

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

然后重启 MySQL 服务以使配置生效。

2. 设置从库的主库信息
CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

请将 master_host 替换为主库的实际 IP 地址或主机名,其他参数根据实际配置填写。

3. 启动从库的复制进程
START SLAVE;
4. 验证复制状态
SHOW SLAVE STATUS\G;

输出示例:

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master_host
                  Master_User: replica_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 154
              Relay_Log_Space: 472
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: a8b9cdef-1234-5678-9abc-def012345678
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0

主要关注以下几个字段:

  • Slave_IO_Running: 应为 Yes
  • Slave_SQL_Running: 应为 Yes
  • Seconds_Behind_Master: 应为 0,表示没有延迟。
  • Last_Error: 应为空,表示没有错误。

常见问题及解决方法

1. 主从复制中断

如果 Slave_IO_RunningSlave_SQL_Running 显示 No,可以使用以下命令重新启动复制进程:

STOP SLAVE;
START SLAVE;
2. 主从数据不一致

如果发现数据不一致,可以重新同步数据:

STOP SLAVE;
RESET SLAVE ALL; -- 清除所有复制状态信息
-- 然后重新执行 CHANGE MASTER TO ... 和 START SLAVE;

总结

通过上述步骤,您可以配置和管理 MySQL 的主从复制,实现数据的实时同步和高可用性。在实际生产环境中,建议定期监控复制状态,并做好备份和故障恢复措施。

标签:主从复制,Slave,Log,MySQL,SSL,Master,SQL,Last,揭秘
From: https://blog.csdn.net/Q2024107/article/details/143917290

相关文章

  • mysql一次性写入大量数据的时候报错
     修改mysql配置参数解释1、innodb_buffer_pool_size=8G作用: 这是InnoDB存储引擎用于缓存表和索引数据的内存区域大小。 数据库主要从内存中读取数据而非磁盘,因此该值越大,系统性能越好(特别是对于大数据量的场景)。初始值: MySQL5.7及以下:通常为128MB。 ......
  • 免费送源码:Java+django+MySQL django 教师培训反馈系统 计算机毕业设计原创定制
           目   录摘  要IAbstractII第1章  前  言31.1 研究背景31.2 研究现状31.3 系统开发目标3第2章  系统开发环境62.1HTTP协议62.2HTML网页技术62.3B/S结构62.4django脚本语言72.5MySQL数据库72.6Apache简介8第......
  • win10同时安装Mysql5和mysql8
    1.下载安装包,解压。 2.添加环境变量,导入各自的bin到系统变量Path中。    3.进入mysql5的安装目录,新建my.ini文件,粘贴信息,注意更改安装目录路径。1[mysql]2#设置mysql客户端默认字符集3default-character-set=utf84[mysqld]5#设置3305端口6po......
  • 炸裂,MySQL9.0创新版发布!功能又进化了!
    炸裂,MySQL9.0创新版发布!功能又进化了!原创 MySQL 作者:wddwr7307914 时间:2024-07-0210:44:58  976  0作者:IT邦德中国DBA联盟(ACDU)成员,10余年DBA工作经验,Oracle、PostgreSQLACECSDN博客专家及B站知名UP主,全网粉丝10万+擅长主流Oracle、MySQL、PG、高斯及Greenp......
  • MySQL第一章 dos窗口mysql命令合集(超详细!!!)一篇就够了
    前言:        本章节主要学习MySQL数据库在dos窗口下的基础命令,sql语句等相关知识点,收录于MySQL基础系列,该系列主要讲解MySQL数据库dos命令/sql约束/sql语句/sql连接查询等相关知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目标:1连接Mysql1.1连接本机上......
  • mysql A表中的列数据 是否在B表中,存在那些列,不存在哪些列
    全部列数【65条】 不存在的列(22条)SELECTa.*FROMtest_unitaWHERENOTEXISTS(  SELECTb.`name`  FROMtra_unitb  WHEREa.name=b.name); 存在的列,以及其他列信息(43条)SELECTt2.name,t2.idFROM`test_unit`t1INNERJOINtra_unitt2ont1.......
  • python+pymysql
    python操作mysql一、python操作数据库1、下载pymysql库,方法一:pip3installpymysql或pipinstallpymysql方法二:在pycharm中setting下载pymysql2、打开虚拟机上的数据库3、pymysql连接(1)连接方式:pymysql.Connection或者pymysql.connect(2)包含内容a.host主机:填......
  • Spring Boot 与腾讯云 MySQL 监听 Binlog 数据变化,并使用 UI 展示页面效果
    引言在现代的分布式系统和微服务架构中,数据同步和变更监控是保证系统一致性和实时性的核心问题之一。MySQL数据库的binlog(二进制日志)功能能够记录所有对数据库的修改操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)等,是实现实时数据变更同步的有效工具。结合SpringBoot框......
  • MySQL · 最佳实践 · 如何索引JSON字段
    目录标题概述示例数据增加虚拟字段在虚拟字段上加索引小结概述MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL......
  • Mysql没有开启binlog日志还会执行二阶段提交吗?
    ......