• MySQL 数据库主从复制


    参考视频教程: https://www.bilibili.com/video/BV13a411q753?p=172
    参考博客: https://blog.csdn.net/main_Scanner01/article/details/124259050

    1. 介绍

    1.1 要点

    主库(master): 负责增删改
    从库(slave) : 负责查询
    主从库关系: 一对多

    1.2 步骤

    ● master将改变记录到_进制日志(binary log )
    ● slave将master的binary log拷贝到它的中继日志(relay log )
    ● slave重 做中继日志中的事件,将改变应用到自己的数据库中

    1.3 前提条件

    提前准备好两台服务器(至少两台),分别安装Mysql并启动服务成功
    ● 主库Master 192.168.150.128
    ● 从库Slave 192.168.150.130
    如果没有安装MySQL可以访问以下链接:
    Linux安装MySQL: https://blog.csdn.net/qq_45056135/article/details/128171450
    Win安装MySQL : https://blog.csdn.net/qq_45056135/article/details/127201960

    1.4 常用命令

    查看mysql服务状态

    systemctl status mysqld
    
    • 1

    启动mysql服务

    systemctl start mysqld
    
    • 1

    重启mysql服务

    systemctl restart mysqld
    
    • 1

    2. 主机配置

    2.1 修改配置文件/etc/my.cnf

    修改配置文件/etc/my.cnf

    vim /etc/my.cnf
    
    • 1

    在[mysqld]后添加内容(:wq!保存后退出)

    log-bin=mysql-bin
    server-id=128
    
    • 1
    • 2

    说明: 128是主机的ip为也可以设置为其他的, 唯一即可(主机和从机id不能一样)
    添加后如下所示:
    在这里插入图片描述

    2.2 重启MySQL服务

    修改配置文件后重启MySQL服务

    systemctl restart mysqld
    
    • 1

    2.3 赋予从机权限

    1. 进入MySQL数据库
    mysql -uroot -proot
    
    • 1
    1. 执行下面SQL赋予从机权限
    GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
    
    • 1

    在这里插入图片描述

    注:上面SQL的作用是创建一一个用户xiaoming, 密码为Root@123456, 并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。

    2.4 记录文件名和指针位置

    同样要先登录登录Mysql数据库

    mysql -uroot -proot
    
    • 1

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

    show master status;
    
    • 1

    如下所示: mysql-bin.000006 和 441
    在这里插入图片描述

    3. 从机配置

    登录从机

    3.1 修改配置文件/etc/my.cnf

    在这里插入图片描述
    修改配置文件:

    vim /etc/my.cnf
    
    • 1

    在[mysqld]后添加内容(:wq!保存后退出)

    server-id=130
    
    • 1

    说明: 130是从机的ip为也可以设置为其他的, 唯一即可(别和主机的id一样)
    添加后内容如下所示
    在这里插入图片描述

    3.2 重启MySQL服务

    systemctl restart mysqld
    
    • 1

    3.3 配置文件连接

    1. 同样要先登录登录Mysql数据库
    mysql -uroot -proot
    
    • 1
    1. 执行下面SQL 用于连接主机

    文件连接

    change master to 
    master_host='192.168.150.128',
    master_user='xiaoming',
    master_password='Root@123456',
    master_log_file= 'mysql-bin.000006',master_log_pos=441;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    上面SQL语句各个参数说明

    CHANGE MASTER TO
    MASTER_HOST='主机的IP地址',
    MASTER_USER='主机用户名',
    MASTER_PASSWORD='主机用户名的密码',
    MASTER_LOG_FILE='mysql-bin.具体数字',
    MASTER_LOG_POS=具体值;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    情况1: 执行之后出现如下错误:(说明之前已经开了Slave 我们关闭即可)

    在这里插入图片描述
    关闭Slave:

    stop slave;
    
    • 1

    重新执行一遍:

    change master to 
    master_host='192.168.150.128',
    master_user='xiaoming',
    master_password='Root@123456',
    master_log_file= 'mysql-bin.000006',master_log_pos=441;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后在开启Slave

    start slave;
    
    • 1

    情况2: 执行成功

    如下表示执行成功:
    在这里插入图片描述
    开启Slave

    start slave;
    
    • 1

    3.4 检查是否成功配置

    方法1:

    查看从数据库的状态

    show slave status;
    
    • 1

    如下所示两个Yes表示配置成功
    在这里插入图片描述

    方法2:

    执行命令

    show slave status\G
    
    • 1

    如下所示两个Yes表示配置成功
    在这里插入图片描述

    其他问题

    Slave_IO_Running: NO
    Slave_SQL_Running: Yes的情况我之前碰到这种情况是因为3.3配置错了, 这种情况一般是你没有配置对文件, 多看看空格, -等特殊字符。

  • 相关阅读:
    Java基础考试题,来测试下自己能拿多少分?提供答案
    SAP 教程之 SAP 中的 IDOC
    点云深度学习——pyqt调用配准网络DCP模型
    Android 内存泄漏分析思路和案例剖析
    MySQL数据库的日志管理
    springboot265基于Spring Boot的库存管理系统
    C语言连续换行输入多组数据怎么解决?
    测试:设计测试用例
    Docker使用Calico网络模式配置及问题处理
    vivo X系列为什么能不断拉高手机上限?
  • 原文地址:https://blog.csdn.net/qq_45056135/article/details/128211660