Mysql——主从复制

一、什么是主从复制

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

二、主从复制应用场景

在企业网站中,后端MySQL数据库只有一台时,会存在以下问题:

  • 单点故障,服务不可用
  • 无法处理大量的并发数据请求(导致效率慢,访问超时)
  • 数据丢失

解决方案:

  • 增加MySQL数据库服务器,对数据进行备份,形成主备
  • 确保主备MySQL数据库服务器数据是一样的
  • 主服务宕机了,备份服务器继续工作,数据有保障

解决方案(高级):

  • MySQL主从复制与读写分离是密切相关的

  • 通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力

在这里插入图片描述

三、MySQL主从复制的类型

  • 基于语句的复制(默认)
    • 在主服务器上执行的语句,从服务器执行同样的语句
  • 基于行的复制
    • 把改变的内容复制到从服务器
  • 混合类型的复制
    • 一旦发现基于语句无法精确复制时,就会采用基于行的复制

四、主从复制的工作过程

在这里插入图片描述

五、主从复制示例

环境:

1、3台服务器,部署好mysql服务

2、1台主服务器,2台从服务器

主服务器(master) 192.168.17.157
从服务器(slave 1) 192.168.17.129
从服务器(slave 2) 192.168.17.135

1、主服务器配置

#安装ntp协议

[root@master ~]# yum install ntp -y

#进入主配置文件进行相应的配置

[root@master ~]# vim /etc/ntp.conf 

在这里插入图片描述

#关闭防火墙,开启服务

[root@master ~]# systemctl start ntpd
[root@master ~]# systemctl stop firewalld.service 
[root@master ~]# setenforce 0

#更改mysql主配置文件

[root@master ~]# vim /etc/my.cnf

在这里插入图片描述

更改配置文件后重启mysql服务

[root@master ~]# service mysqld restart

#进入数据库进行相关配置

[root@master ~]# mysql -u root -p
Enter password: 

在这里插入图片描述

2、从服务器(slave 1)配置

#安装ntp协议及ntpdate用于时间同步

[root@master ~]# yum install ntp ntpdate -y

#关闭防火墙,开启ntp服务

[root@slave1 ~]# systemctl start ntpd
[root@slave1 ~]# systemctl stop firewalld.service 
[root@slave1 ~]# setenforce 0

#进行时间同步,时间源为主服务器

[root@slave1 ~]# /usr/sbin/ntpdate 192.168.17.157
 9 Jan 16:58:29 ntpdate[5228]: the NTP socket is in use, exiting

#更改mysql主配置文件

[root@master ~]# vim /etc/my.cnf

在这里插入图片描述

更改配置文件后重启mysql服务

[root@slave1 ~]# service mysqld restart

#进入数据库进行相关配置

[root@master ~]# mysql -u root -p
Enter password: 

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

3、从服务器(slave 2)配置

#安装ntp协议

[root@master ~]# yum install ntp ntpdate -y

#关闭防火墙,开启ntp服务

[root@slave1 ~]# systemctl start ntpd
[root@slave1 ~]# systemctl stop firewalld.service 
[root@slave1 ~]# setenforce 0

#进行时间同步,时间源为主服务器

[root@slave1 ~]# /usr/sbin/ntpdate 192.168.17.157
9 Jan 17:45:03 ntpdate[7762]: the NTP socket is in use, exiting

#更改mysql主配置文件

在这里插入图片描述

更改配置文件后重启mysql服务

[root@slave1 ~]# service mysqld restart

#进入数据库进行相关配置

[root@master ~]# mysql -u root -p
Enter password: 

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

4、主从复制验证

#主服务器创建库

在这里插入图片描述

#slave1查询库

在这里插入图片描述

#slave2查询库

在这里插入图片描述

实验结果验证:在主服务器上执行的语句,从服务器也会执行同样语句

发布了72 篇原创文章 · 获赞 44 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ML908/article/details/103914159