一.为何要进行主从复制?
在企业网站中,如果后端只要一台 Mysql 服务器时,就会造成,比如单点故障,无法处理大量的并发数据请求和造成数据丢失等一系列问题。
因此,这就体现了 Mysql 主从复制的重要性了:
- 一台主 Mysql 服务器,多台从服务对数据进行备份,形成主备;
- 确保主备 Mysql数据库服务器的数据是一样的;
- 主服务器宕机了,备服务器依旧可以继续工作,数据有保障。
二.Mysql 主从复制的类型:
1.基于语句的复制(默认):
在主服务器上执行的语句,从服务器执行同样的语句。
2.基于行的复制:
把改变的内容复制到从服务器。
3.混合类型的复制:
一旦发现基于语句无法精确复制时,就会采取基于行的复制。
三.案例演示:
环境准备:
- 三台虚拟机,都搭建好 Mysql5.6版本服务;
- 一台做主服务器,另外两台做从服务器;
1.主服务器IP地址为192.168.179.188
//安装时间同步
yum install ntp -y
//修改ntp主配置文件,添加
vim /etc/ntp.conf
server 127.127.179.0
fudge 127.127.179.0 stratum
//开启ntp服务
service ntpd start
关闭防火墙
2.从服务器同步主服务器时间,两台服务器都要配置安装ntp ntpdate软件包
//从服务安装
yum install ntp ntpdate -y
//开启ntp服务
service ntpd start
关闭防火墙
//与主服务器时间同步
/usr/sbin/ntpdate 192.168.179.188
8 Jan 20:04:19 ntpdate[22625]: the NTP socket is in use, exiting
主服务器配置
//修改主服务器配置文件
vim /etc/my.cnf
server-id = 11 //查找id更改11
log-bin=master-bin //开启主服务器二进制日志文件功能
log-slave-updates=true //开启从服务器更新二进制日志文件功能
//重启服务
pkill -9 mysqld //注意每次从重启服务都需要结束原先服务的进程号
service mysqld restart
//进入数据库
mysql -uroot -p
//输入命令
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.179.%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
//查看二进制文件功能
show master status
从服务器1配置
//修改从服务器主配置文件,修改ID号,添加开启复制主服务二进制日志功能
server-id = 22 //(ID不能相同),另一台也不能相同
relay-log=relay-log-bin //从主服务器上同步日志文件记录
relay-log-index=slave-relay-bin-bin.index //定义relay-log的位置和名称
//重启服务
pkill -9 mysqld
service mysqld restart
//进入数据库输入
mysql -uroot -p
change master to master_host='192.168.179.188',master_user='myslave',master_password='123456',master_log_file='master-bin.000003',master_log_pos=412;
//开启同步功能
start slave;
//查看同步功能状态
show slave status\G;
从服务器2配置
//修改从服务器主配置文件,修改ID号,添加开启复制主服务二进制日志功能
server-id = 23 //(ID不能相同),另一台也不能相同
relay-log=relay-log-bin //从主服务器上同步日志文件记录
relay-log-index=slave-relay-bin-bin.index //定义relay-log的位置和名称
//重启服务
pkill -9 mysqld
service mysqld restart
//进入数据库输入
mysql -uroot -p
change master to master_host='192.168.179.188',master_user='myslave',master_password='123456',master_log_file='master-bin.000003',master_log_pos=412;
//开启同步功能
start slave;
//查看同步功能状态
show slave status\G;
验证主从同步:
在主服务器创建一个yun的数据库
create database yun;
Query OK, 1 row affected (0.00 sec)
在两台从服务器上查询是否有yun数据库