MySQL主从复制
(一)概念
-
主从复制:
创建多台和主数据库完全一样的数据库环境(从数据库),对主数据库的写操作(增、删、改)会自动同步到子数据库中。
-
架构:
-
作用:
1. 从数据库作作为冷备机,进行日常备份,确保数据安全 2. 从数据库作作为热备机,一旦主机宕机,可以切换到从数据库提供服务,提高系统可用性。 3. 可以实现数据库的读写分离,提高系统的并发性
(二)搭建主从架构
-
准备若干台安装了MySQL的服务器
注意:各虚拟机中的MySQL所创建的库,必须是一致的,建议创建好库之后进行克隆。
-
将资料中的虚拟机文件拷贝至一个单独的文件夹下:
-
使用vmware打开该虚拟机
-
将其重命名为mysql-master,并打开,使用
ip a
命令查看ens36
网卡的ip,并修改ens33网卡的ip,命令为:vi /etc/sysconfig/network-scripts/ifcfg-ens33
将内部的
IPADDR
的第三段修改为和ens36网卡一致即可(第四段101不用改):重启网络服务:
systemctl restart network
-
在VMware中,在
mysql-master
虚拟机上右击,选择克隆,将本虚拟机克隆一份,克隆位置选择刚刚的单独文件夹 -
克隆步骤按以下图片即可:
-
开启新克隆的虚拟机,修改ip地址的第三段和第四段(注意将第四段改为102,防止冲突)
-
为了一防万一,可以在这一步对两个虚拟机拍一个快照
-
指定一台虚拟机中的MySQL为主机(Master)
修改主机MySQL配置文件/etc/my.cnf 添加以下配置(不用带注释),在[mysqld]下面添加
[mysqld] # 定义mysql的编号,防止重复用ip的最后一位。 server-id=1 # 启用MySQL的binlog日志。 log-bin=mysql-bin #以下配置近供了解: # 设置忽略的数据库不参与复制 binlog-ignore-db=mysql binlog-ignore-db=information_schema # 设置需要复制的数据库 # binlog-do-db=需要复制的数据库名称 # 设置binlog格式 binlog_format=STATEMENT
-
重启mysql服务
[root@anonymous ~]# systemctl restart mysql
-
登陆mysql查看状态并记录
将该页面截图备用!!
mysql> show master status; +------------------+----------+ | File | Position | +------------------+----------+ | mysql-bin.000001 | 157 | +------------------+----------+ 1 row in set (0.00 sec)
-
修改各个MySQL从机的/etc/my.cnf 添加以下配置 在[mysqld]下面添加
#server-id=编号#定义mysql从机的编号,防止重复用ip的最后一位。 server-id=2
-
删除/usr/mysql8/data/auto.cnf文件与/var/lib/mysql/auto.cnf文件 因为克隆出来的MySQL其UUID是一样的,这两个文件中存储了UUID,删除即可。 两个文件不一定都存在,如果不存在不需要关注。
rm -rf /var/lib/mysql/auto.cnf rm -rf /usr/mysql8/data/auto.cnf
-
重启MySQL从机
[root@192 ~]# systemctl restart mysql
-
从机登陆MySQL,进行配置
-- 关闭slave从机 mysql> stop slave; -- 配置主机信息 mysql> change master to master_host='主机ip地址', master_user='主机用户名', master_password='主机密码', master_log_file='主机日志文件名', master_log_pos=日志文件位置;
例: change master to master_host='192.168.24.101', master_user='root', master_password='root', master_log_file='mysql-bin.000001', master_log_pos=120; 在主机中登陆MySQL执行show master status获取File(日志文件名)与Position日志文件位置
-
启动从机
mysql> start slave;
-
查看从机状态
mysql>show slave status \G;
Slave_IO_Running与Slave_SQL_Running必须都是Yes,如果配置出现问题,会有异常信息显示。
(二)主从复制原理
-
主从复制步骤:
1. master在执行更改操作(增、删、改)后,会将操作记录串行地写入到binlog文件中,并通知slave。 2. slave的IO线程接收到主库的更新记录后,将记录保存到relay log中。 3. slave的SQL线程读取relay log中的更新语句并在从库执行。