锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 数据库
  4. MySQL数据库主从搭建(详细图文)

MySQL数据库主从搭建(详细图文)

0
  • 数据库
  • 发布于 2024-09-28
  • 13 次阅读
黄健
黄健

MySQL数据库主从搭建(详细图文)

前言
主从原理:

MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的"事件"执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

一、主从搭建准备

1.主从数据库版本一致
2.主从数据库内数据保持一致
3.克隆虚拟机,只需在一个虚拟机搭建环境,然后克隆两台虚拟机当做从机(我搭建的是一主两从)

二、Master

1.修改mysql配置文件

cd /etc 
vim my.cnf
或者 vim /etc/my.cnf
./etc/my.cnf

##master 中my.cnf需要添加的内容
server-id=188    //master  192.168.88.188  去最后的188作为id
log-bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=0

binlog-do-db=news    //news 为数据库的名称


2.创建授权用户
//开启mysql服务

service mysqld start

//查看mysql运行状态

service mysqld status

//进入mysql

mysql -u root -p

注意复制粘贴后将标点符号更改为西文符号!!

//创建一个从机用户 并指定可以从本机外部进行访问
//MySQL5.7clone为密码,设置一个自己能记住的密码

create user 'slave'@'%' identified by 'MySQL5.7clone'

//设置slave远程从机账户拥有一个可以复制的权限

grant replication slave,replication client on *.* to 'slave'@'%'

3.查看日志和宿主机master的状态

代码如下(示例):

查看log_bin日志是否属于开启状态

show variables like 'log_bin';

查看当前操作的宿主机是否为master状态

show master status;



这里要记住 file和position,后面配置slave会用到

该处使用的url网络请求的数据。

三、slave操作

1.修改宿主机的server-id
进入从库宿主机后修改my.cnf配置文件加入server-id即可
同master操作
但是只需要 添加server-id即可

2.进入mysql执行相关命令
//首先要关掉slave

stop slave

//重点
//执行下面的语句 将下面的语句复制到记事本上,保证是一行数据,然后复制到mysql中
//master_host为master的ip
//master_password 为授权时设置的密码
//master_log_file 分别为上文中需要你记住的file和position

change master to master_host='192.168.88.188', master_port=3306,master_user='slave',master_password='MySQL5.7clone',master_log_file='mysql-bin.000001',master_log_file=617



//执行完后开启slave
start slave;

查看同步状态

show slave status \G

若下面两个状态都是yes,则搭建成功,若是Slave_IO_Running为NO,则去查看master和slave的uuid是否一致

  Slave_IO_Running: No
  Slave_SQL_Running: Yes
```prism language-powershell
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.25.136
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 617
               Relay_Log_File: localhost-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: No
            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: 617
              Relay_Log_Space: 154
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 1593
                Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 136
                  Master_UUID: 
             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: 201114 11:40:14
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

3.UUID的相关配置

//查看主机与从机的uuid

Show variables like '%uuid%'

//如果两边一致就需要将从库的auto.cnf文件删除
//可以选择备份 或者删除
//备份

mv auto.cnf  ./auto.cnf.back

//删除

rm -rf auto.cnf

删除后在启动从机mysql服务进入客户端执行salve状态

show slave status \G

//状态会变为

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四、测试

在数据库工具新建连接,一个为master,将master的数据导出
新建两个slave连接,将数据导入
修改master连接中的数据,查看从库是否改变,改变则MySql数据库主从搭建成功

原文链接: https://blog.csdn.net/weixin_43735086/article/details/141127282

标签: #数据库 67 #MySQL 49
相关文章

深入理解MySQL InnoDB中的B+索引机制 2024-09-30 14:41

目录 一、InnoDB中的B+ 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序

mysql中B+树的数据存储 2024-09-29 16:36

B+树索引基础分析 B+树 的定义 B+树是一种自平衡的树形数据结构,常用于数据库和操作系统的索引结构。它具有以下特点: 所有数据都存储在叶子节点,非叶子节点仅存储键值和子节点的指针。 叶子节点之间通过指针相互连接,形成一个有序链表,便于范围查询。 每个节点可以拥有多个键值,键值之间是有序的。 B+

MySQl索引事务(B树) 2024-09-29 16:36

目标: 索引 事务 1.索引 1.1概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 1.2作用 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 索引所起的作用类似书籍

MySQL数据库的备份与恢复 2024-09-26 17:57

MySQL数据库的备份与恢复 在现代信息时代,数据已成为企业和个人的重要资产,数据的安全性和可恢复性直接影响到业务的连续性和稳定性。MySQL作为广泛使用的关系型数据库管理系统,其数据的备份与恢复显得尤为重要。本文将详细探讨MySQL数据库的备份与恢复策略,包括备份的重要性、备份类型、常用备份方法及

MySQL中创建数据库和表 2024-09-26 17:57

在MySQL中创建数据库和表是数据库管理的基础步骤,它们构成了数据存储和操作的基础结构。下面,我将详细介绍如何在MySQL中创建数据库和表,包括创建数据库的基本语法、设计表的考虑因素、表的创建过程、数据类型和约束的使用等,力求内容详尽且不少于2000字。 一、创建数据库 在MySQL中,数据库是一个

MySQL数据库主从搭建(详细图文) 2024-09-28 15:11

MySQL数据库主从搭建(详细图文) 前言 主从原理: MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.