MySQL主从复制

MySQL主从复制

(一)概念

  • 主从复制:

创建多台和主数据库完全一样的数据库环境(从数据库),对主数据库的写操作(增、删、改)会自动同步到子数据库中。
  • 架构:

  • 作用:

1. 从数据库作作为冷备机,进行日常备份,确保数据安全
2. 从数据库作作为热备机,一旦主机宕机,可以切换到从数据库提供服务,提高系统可用性。
3. 可以实现数据库的读写分离,提高系统的并发性

(二)搭建主从架构

  1. 准备若干台安装了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,防止冲突)

  • 为了一防万一,可以在这一步对两个虚拟机拍一个快照

  1. 指定一台虚拟机中的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
  1. 重启mysql服务

[root@anonymous ~]# systemctl restart mysql
  1. 登陆mysql查看状态并记录

    将该页面截图备用!!

mysql> show master status;
+------------------+----------+
| File             | Position | 
+------------------+----------+
| mysql-bin.000001 |   157    | 
+------------------+----------+
1 row in set (0.00 sec)
  1. 修改各个MySQL从机的/etc/my.cnf 添加以下配置 在[mysqld]下面添加

#server-id=编号#定义mysql从机的编号,防止重复用ip的最后一位。
server-id=2
  1. 删除/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
  1. 重启MySQL从机

[root@192 ~]# systemctl restart mysql
  1. 从机登陆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日志文件位置
  1. 启动从机

    mysql> start slave;
  2. 查看从机状态

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中的更新语句并在从库执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值