MySQL 高可用之双机热备

时间:2022-07-28
本文章向大家介绍MySQL 高可用之双机热备,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

为什么要采用双机热备?

单节点Haproxy不具备高可用,必须要要有冗余设计

关键因素:虚拟IP地址

一个网卡对应多个虚拟IP

利用Keepalived实现双机热备

Keepalived争抢 --> 虚拟IP

Haproxy双机热备方案

docker exec -it h1 bash

apt-get update

apt-get install keepalived

Keepalived配置文件

配置文件vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    # Keepalived的身份(MASTER主服务,BACKUP备服务器。主服务器要抢占虚拟IP,备用服务器不会抢占IP)
    state MASTER
    
    # 虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。标识可以是0~255
    virtual_router_id 51
    
    # 网卡设备
    interface eth0
    
    # MASTER权重要高于BACKUP数字越大优选级越高
    priority 100
    
    # MASTER与BACKUP节点间同步检查的时间间隔,单位为秒。主备之间必须一致。
    advert_int 1
    
    # 主从服务器验证方式。主备必须使用相同的密码才能正常通信
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    
    # 虚拟IP地址。可以设置多个虚拟IP地址,每行一个
    virtual_ipaddress {
        172.18.0.201
    }
}

启动Keepalived

service keepalived start

热备份数据

冷备份:关闭数据库时候的备份方式,通常做法是拷贝数据文件。

冷备份是最简单最安全的一种备份方式

大型网站无法做到关闭业务备份数据,所以冷备份不是最佳选择

pxc下线一个节点做冷备份。

热备份:系统运行的状态下备份数据,也是难度最大的备份

MySQL常见的热备份有LVMXtraBackup两种方案

XtraBackup直接备份,无需加锁

XtraBackup介绍

一款基于InnoDB的在线热备工具,具有开源免费,支持在线热备,占用磁盘空间小,能够非常快速地备份与恢复mysql数据库

优势:

  1. 备份过程中不锁表、快速可靠
  2. 备份过程中不会打断正在执行的事务
  3. 能够基于压缩等功能节约磁盘空间和流量

全量备份和增量备份

全量备份全部数据。备份过程时间长,占用空间大

增量备份只备份变化的那部分数据。备份时间短,占用空间小

docker volume create backup

docker stop node1

docker rm node1

docker -v backup:/data -e CLUSTER_JOIN=node2

PXC全量备份步骤

apt-get update
apt-get install percona-xtrabackup-24
innobackupex --user=root --password=123456 /data/backup/full

PXC全量恢复步骤

  • 数据库可以热备份,但是不能热还原。为了避免恢复过程中的数据同步,我们采用空白的MySQL还原数据,然后再建立PXC集群
  • 还原数据前要将未提交的事务回滚,还原数据之后重启MySQL
rm -rf /var/lib/mysql/*
innobackupex --user=root --password=123456 --apply-back /data/backup/full/2018-04-15_05-09-07/
innobackupex --user=root --password=123456 --copy-back /data/backup/full/2016-xx--xx_xx-xx-xx/