MYSQL主从复制读写分离(多台数据库部署)手把手教学

1.介绍(快速理解)

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

MySQL复制过程分成三步:

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

简单点来说,就是,所有的增删改查都请求一个数据库,负荷压力太大,为了解决这个问题,我们可以设置多个从数据库从数据库复制主数据库的内容,从数据库做操作量最多的查询请求主数据库增删改,主数据库进行操作后会产生日志,从数据库会根据日志解析,然后再在从数据库做相同的操作,来达到数据库数据相同。

2.在Linux下安装MYSQL

这个我之前的博客中写过了,可以参考:https://blog.csdn.net/m0_63684495/article/details/128748229

注意:这里需要两个虚拟机,分别安装MYSQL,其中一个充当主数据库,另一个充当从数据库

3.配置主从数据库

安装完成MYSQL后记得启动服务。

systemctl start mysqld

1.1 配置固定IP

同样的之前写过,不再赘述,请参考:https://blog.csdn.net/m0_63684495/article/details/128713019

1.2 配置主数据库

先拿出一个需要做主数据库的虚拟机,修改mysql配置

vim /etc/my.cnf

在配置文件中[mysqld]下插入(记得用ROOT权限):
服务器唯一ID,ID编号可以自行更改,我是根据我的ip来设置的

log-bin=mysql-bin   #[必须]启用二进制日志
server-id=123      #[必须]服务器唯一ID

如图:
在这里插入图片描述
重启mysql服务:

systemctl restart mysqld

1.3 赋予从库权限

登录数据库,执行下面命令:

GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';

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

查看主库的状态:

show master status;

结果如图:
在这里插入图片描述

记录下结果中FilePosition的值,后面要用。

1.4 配置从数据库

从数据库,修改配置文件:

vim /etc/my.cnf

在配置文件中[mysqld]下插入(记得用ROOT权限):

server-id=124      #[必须]服务器唯一ID

如图:
在这里插入图片描述

重启mysql服务:

systemctl restart mysqld

1.5 匹配主库

change master to master_host='主库ip',master_user='xiaoming',master_password='Root@123456',master_log_file='主库的File',master_log_pos=主库的Position;

注意:替换主库ip,主库的File,主库的Position 的时候要清除空格,不然会错误

start slave;

如图:
在这里插入图片描述
查看从库状态:

show slave status \G;

在这里插入图片描述
看到这里两个Yes就是成功了

1.6 克隆虚拟机问题补充

如果你的两个虚拟机是克隆来的,那就是Slave_IO_Running: NO,因为你复制过来后,另外一个MySQL在运行,会导致占用。
如果你的不是克隆来的,可以直接下一步了。

解决方案:
分别查看两台的UUID:

select uuid();

如果一样,选择从库的虚拟机,进行操作。
查找auto.cnf

find / -iname "auto.cnf"

在这里插入图片描述
找到之后直接给他删除就行了(这里按照你的文件路径)。

rm /var/lib/mysql/auto.cnf

删除后登录数据库

mysql -uroot -p

停止slave链路

start slave;

开启slave链路

start slave;

查看状态

show slave status \G;

4.测试主从效果

我先用Navicat for MySQL连接上这两个数据库。
在这里插入图片描述
目前是最初始的状态,我现在先在主库创建一个数据库。

在这里插入图片描述

在这里插入图片描述

我现在刷新一下从库,看看效果。
在这里插入图片描述
这样就完成了,数据库的主从分离。
当然你的从数据库,可以不止一台,你可以多台,配置步骤大致相同,但是你的id要唯一。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的菜鸟Run

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值