Mysql——主从复制
程序员文章站
2022-05-08 23:08:56
...
文章目录
一、什么是主从复制
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协议
[aaa@qq.com ~]# yum install ntp -y
#进入主配置文件进行相应的配置
[aaa@qq.com ~]# vim /etc/ntp.conf
#关闭防火墙,开启服务
[aaa@qq.com ~]# systemctl start ntpd
[aaa@qq.com ~]# systemctl stop firewalld.service
[aaa@qq.com ~]# setenforce 0
#更改mysql主配置文件
[aaa@qq.com ~]# vim /etc/my.cnf
更改配置文件后重启mysql服务
[aaa@qq.com ~]# service mysqld restart
#进入数据库进行相关配置
[aaa@qq.com ~]# mysql -u root -p
Enter password:
2、从服务器(slave 1)配置
#安装ntp协议及ntpdate用于时间同步
[aaa@qq.com ~]# yum install ntp ntpdate -y
#关闭防火墙,开启ntp服务
[aaa@qq.com ~]# systemctl start ntpd
[aaa@qq.com ~]# systemctl stop firewalld.service
[aaa@qq.com ~]# setenforce 0
#进行时间同步,时间源为主服务器
[aaa@qq.com ~]# /usr/sbin/ntpdate 192.168.17.157
9 Jan 16:58:29 ntpdate[5228]: the NTP socket is in use, exiting
#更改mysql主配置文件
[aaa@qq.com ~]# vim /etc/my.cnf
更改配置文件后重启mysql服务
[aaa@qq.com ~]# service mysqld restart
#进入数据库进行相关配置
[aaa@qq.com ~]# mysql -u root -p
Enter password:
3、从服务器(slave 2)配置
#安装ntp协议
[aaa@qq.com ~]# yum install ntp ntpdate -y
#关闭防火墙,开启ntp服务
[aaa@qq.com ~]# systemctl start ntpd
[aaa@qq.com ~]# systemctl stop firewalld.service
[aaa@qq.com ~]# setenforce 0
#进行时间同步,时间源为主服务器
[aaa@qq.com ~]# /usr/sbin/ntpdate 192.168.17.157
9 Jan 17:45:03 ntpdate[7762]: the NTP socket is in use, exiting
#更改mysql主配置文件
更改配置文件后重启mysql服务
[aaa@qq.com ~]# service mysqld restart
#进入数据库进行相关配置
[aaa@qq.com ~]# mysql -u root -p
Enter password:
4、主从复制验证
#主服务器创建库
#slave1查询库
#slave2查询库
实验结果验证:在主服务器上执行的语句,从服务器也会执行同样语句