一、主从复制的概述
- 在企业网站中,如果对数据库的读和写都在同一个数据库服务器中操作时,会有以下问题:
- 单点故障,服务不可用
- 无法处理大量的并发数据请求
- 数据丢失-大灾难
因此,通过主从复制的方式来同步数据。
1.1、Mysql 主从复制的类型
- 1、基于语句的复制(默认)
在主服务器上执行的语句,从服务器执行同样的语句。 - 2、基于行的复制
把改变的内容复制到从服务器。 - 3、混合类型的复制
一旦发现基于语句无法精确复制时,就会采取基于行的复制。
1.2、主从复制的工作过程
二、案例模拟
2.1、实验准备
- 准备两台虚拟机,都搭建好 Mysql 服务。
具体的搭建过程见之前的博客,链接为:Mysql5.7版本安装步骤详解 - 一台做主服务器,另外一台做从服务器
主服务器master | 从服务器slave |
---|---|
192.168.220.136 | 192.168.220.164 |
2.2、主从复制实验操作
一、设置时间同步
- 主服务器:
1、安装时间功能
yum -y install ntp
2、修改时间服务的配置文件
vim /etc/ntp.conf
server 127.127.220.0 //本地是时钟源
fudge 127.127.220.0 stratum 8 //设置时间层级为8
3、开启服务,并关闭防火墙
systemctl start ntpd
systemctl stop firewalld
setenforce 0
- 从服务器:
1、安装ntp包
yum -y install ntp ntpdate
2、开启服务,并关闭防火墙
systemctl start ntpd
systemctl stop firewalld
setenforce 0
3、进行时间同步
/usr/sbin/ntpdate 192.168.220.136
//此处IP地址是主服务器的地址
二、修改服务器的配置
- 主服务器:
1、mysql主服务器配置
vim /etc/my.cnf
server-id = 11 //指定id号,服务器的唯一标识,不能相同
log-bin=master-bin //主服务器日志文件
log-slave-updates=true //从服务器更新二进制日志
2、重启服务
systemctl restart mysqld
3、登录数据库,给从服务器授权。
mysql -u root -pabc123
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.220.%' IDENTIFIED BY '123123';
flush privileges; //刷新数据库的权限相关表
File和Position这两个值在后面配置从服务器的时候会用到,slave应从该点在master上进行新的更新。
- 从服务器:
1、修改配置文件
vim /etc/my.cnf
server-id = 22
relay-log=relay-log-bin //从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index //定义relay-log的位置和名称
2、重启服务
systemctl restart mysqld
3、登录数据库,配置同步。
mysql -u root -pabc123
change master to master_host='192.168.220.136',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=604;
4、启动同步,查看slave状态,确保以下两个值为YES
start slave; //开启从服务
show slave status\G; //查看状态
2.3、实验验证
1、在主服务器上新建一个数据库,查看从服务器上是否有 test 库。
2、从服务器验证
验证得到主、从服务器的数据库相同,则主从复制成功。下一篇博客将介绍读写分离。