• MySql主从复制(博主已踩过所有坑...)


    在学习之前,我们首先要学会在Linux系统安装MySQL,还没安装成功的同学可以点连接进去学习,纯干货哦!——>Linux安装MySQL5.7——避开所有坑!

    一、简介

    ( 注意:一个主库可以有多个从库)

    二、了解Mysql主从复制的三个关键步骤

            1、master将改变  记录到二进制日志(binary log)

            2、slave 将 master 的  binary log  拷贝到它的中继日志(relay log)

            3、slave重做中继日志中的事件,将改变应用到自己的数据库中

     三、实现MySql主从复制

    提前准备好两台服务器,分别安装MySql并启动成功

    • 主库Master
    • 从库Slave

    1、进入其中一台服务器中的MySQL,将此库作为Master主库来配置,修改MySQL的配置问文件

         增加两行设置,开启MySQL的二进制日志功能,设置服务器的唯一标识(前面也提到过,一个主库可能对应多个从库,为了区分开来,把每个从库的id设置唯一)。保存并退出。

     

     2、重启数据库

    3、先刷新一下权限表。把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。

    mysql> flush privileges;

    4、登录你的作为主库使用的Linux中的MySQL后:输入下面命令:

            MySQL8之前的数据库版本使用这个命令

    mysql> grant replication slave on*.*to'user1'@'%'identified by 'user1@123456';

            MySQL8及之后的数据库版本使用这两个命令

    1. mysql> create user user1 identified with 'mysql_native_password' by 'user1@123456';
    2. mysql> grant replication slave on*.*to user1;

    (上面的SQL用于创建一个用户user1,密码为user1@123456,并给user1用户授予replication slave权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权,具有该权限的用户才能通过该用户复制。说白了user1就是个工具人,用来提供建立主从复制的权限)

    5、执行下面SQL,记录下结果中的File和Position的值

    1. //查看主库的状态
    2. show master status

     注:上面的操作执行完毕后就不在主库中执行其他操作了,因为我们执行其他操作的时候,结果中的File和Position的值会变化,现在从库的这个文件名和position在从库中会使用到。

    至此,主库Master已经设置好了,下面我们来设置从库Slave

    ---------------------------------------------------------------------------------------------------------------------------------

    6、配置作为从库的服务器中的 my.cnf文件,加入服务器唯一ID

    server-id=101 #服务器唯一id

    7、重启MySQL服务器,让配置文件生效

    service mysql restart

    8、登录MySQL数据库,执行下面的SQL

    1. mysql> change master to master_host='192.168.80.100',master_user='user1',master_password='user1@123456',master_log_file='mysql-bin.000010',master_log_pos=154;
    2. #启动slave线程(底层就是一个IO_THREAD)
    3. mysql> start slave

      简单说一下这句SQL:

     (这一步报错的同学可以先尝试stop slave 这个命令,关闭此线程再执行)

     9、执行完之后,所有配置均已完成,但是为了保险起见,我们在从库上面执行一下这句SQL

    mysql> show slave status\G;
    

     重点看一下圈出来的三条,若跟上图一样的话,说明你已成功开启两库的主从复制!

    (若你的结果是下面的,不要灰心,说明你的3306端口处于关闭状态,往下看步骤,打开就ok了)

     打开3306端口的步骤:

     主库也要去开启一下3306端口,步骤同上,第六步输入的SQL为:

    show master status;

    最后再从步骤8往下进行就可以了,注意主库执行完上面的SQL之后,返回的结果要在步骤8中用到哦!

    最终我们完成主从库配置之后就可以在Navicat上面连接到两个主从库,在主库中发生任意增删改,从库中也会做相应的变化,此时我们就真正完成了数据库的主从复制!

    呕心沥血干了两天,踩过N多个坑最终完成了这篇文章和一些踩坑的文章,您要觉得这篇文章写的还不错的话,点个赞呗!

  • 相关阅读:
    K8s基础架构【1】
    【C语言函数调用详解】——传值调用&传址调用
    抽象类 or 接口
    vue使用.filter方法检索数组中指定时间段内的数据
    2023阿里云服务器双十一优惠活动价格表整理
    Immutable是什么?
    想做钢铁侠?听说很多大佬都是用它入门的
    STM32G491RCT6,STM32H743BIT6规格书 32bit IC MCU
    mybatis
    Java深拷贝与浅拷贝技术解析及实例演示
  • 原文地址:https://blog.csdn.net/qq_45839663/article/details/127222934