当前位置: 首页 > news >正文

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

启动mysql服务

systemctl start mysqld

重启mysql服务

systemctl restart mysqld

2. 主机配置

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

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

vim /etc/my.cnf

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

log-bin=mysql-bin
server-id=128

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

2.2 重启MySQL服务

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

systemctl restart mysqld

2.3 赋予从机权限

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

在这里插入图片描述

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

2.4 记录文件名和指针位置

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

mysql -uroot -proot

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

show master status;

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

3. 从机配置

登录从机

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

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

vim /etc/my.cnf

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

server-id=130

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

3.2 重启MySQL服务

systemctl restart mysqld

3.3 配置文件连接

  1. 同样要先登录登录Mysql数据库
mysql -uroot -proot
  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;

上面SQL语句各个参数说明

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

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

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

stop slave;

重新执行一遍:

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;

然后在开启Slave

start slave;

情况2: 执行成功

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

start slave;

3.4 检查是否成功配置

方法1:

查看从数据库的状态

show slave status;

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

方法2:

执行命令

show slave status\G

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

其他问题

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

相关文章:

  • 分布式文件存储系统FastDFS[1]-介绍以及安装
  • 如何使用 Excel拆分文本单元格,基于LEFT、RIGHT、MID、SUBSTITUTE、FIND、SEARCH
  • Java 泛型方法总结
  • WebRTC Native M96 SDK接口封装--注册语音观测器对象获取原始音频数据registerAudioFrameObserver
  • 深入理解Linux网络技术内幕(十一)——帧的传输
  • PXE + Kickstart 服务器批量安装Linux系统
  • 基于鲁棒-距离平衡和基于学习的人工蜂群的强大优化算法(Matlab代码实现)
  • 使用opencv截取旋转框目标
  • 深入react源码看setState究竟做了什么?
  • 无监督学习
  • [附源码]JAVA毕业设计宿舍管理系统(系统+LW)
  • TI Lab_SRR学习_1 硬件基础 AWR1642和AWR1642EVM
  • 金蝶云星空生产管理(冲刺学习)
  • 【pen200-lab】10.11.1.101
  • 【css遇到的问题】vue中使用select下拉框,数据绑定但是默认不显示问题
  • 42. Python range函数—生成器函数
  • [附源码]Python计算机毕业设计Django医学图像管理平台
  • 阿里云的工程师又闯祸了,github上紧急修复
  • 微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.3 精确查询
  • 基于python环境的pip安装事项
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉