zoukankan      html  css  js  c++  java
  • 物理备份Xtrabackup

    1.安装

    #上传文件包
    [root@db03 ~]# rz percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
    
    #下载epel源
    wget -O /etc/yum.repos.d/epel.repo  https://mirrors.aliyun.com/repo/epel-6.repo
    #安装依赖
    yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
    #下载Xtrabackup
    wget httpss://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
    
    #安装
    [root@db03 ~]# yum localinstall -y percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
    #安装好后的命令
    [root@db03 ~]# xtrabackup
    [root@db03 ~]# innobackupex
    

    2.Xtrabackup备份

    1)对于非innodb表(比如myisam)是直接锁表cp数据文件,属于一种温备。
    2)对于innodb的表(支持事务),不锁表,cp数据页最终以数据文件方式保存下来,并且把redo和undo一并备走,属于热备方式。
    3)备份时读取配置文件/etc/my.cnf(如果使用Xtrabackup备份,必须要配置datadir)
    

    3..Xtrabackup全量备份

    1.准备备份目录

    [root@db03 ~]# mkdir /backup
    

    2.备份(全备)

    [root@db03 ~]# innobackupex --user=root --password=123 /backup/full
    
    #去掉时间戳进行备份
    [root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full
    

    3.查看全备内容

    [root@db03 ~]# ll /backup/full/
    总用量 129052
    -rw-r----- 1 root root      434 7月  23 08:51 backup-my.cnf
    drwxr-x--- 2 root root       68 7月  23 08:51 dump
    -rw-r----- 1 root root 79691776 7月  23 08:51 ibdata1
    -rw-r----- 1 root root 52428800 7月  23 08:51 ibdata2
    drwxr-x--- 2 root root     4096 7月  23 08:51 mysql
    drwxr-x--- 2 root root     4096 7月  23 08:51 performance_schema
    drwxr-x--- 2 root root       68 7月  23 08:51 row
    drwxr-x--- 2 root root       20 7月  23 08:51 test
    -rw-r----- 1 root root       21 7月  23 08:51 xtrabackup_binlog_info			#记录binlog的信息
    -rw-r----- 1 root root      113 7月  23 08:51 xtrabackup_checkpoints			
    -rw-r----- 1 root root      483 7月  23 08:51 xtrabackup_info				#工具或数据的信息
    -rw-r----- 1 root root     2560 7月  23 08:51 xtrabackup_logfile				#redo-log
    
    [root@db03 full]# cat xtrabackup_checkpoints
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 8417759
    

    4.Xtrabackup全备恢复数据

    1.删除所有数据库

    mysql> drop database dump;
    
    mysql> drop database performance_schema;
    
    mysql> drop database row;
    
    mysql> drop database test;
    

    2.停止数据库

    [root@db03 ~]# systemctl stop mysqld.service
    

    3.手动模拟CSR的过程

    #将redo进行重做,已提交的写到数据文件,未提交的使用undo回滚,模拟CSR的过程
    [root@db03 ~]# innobackupex --user=root --password=123 --apply-log /backup/full
    

    4.恢复数据
    方法1:

    #移走原数据目录
    [root@db03 mysql]# mv data data.back
    
    #将全备的数据目录迁移回来
    [root@db03 mysql]# cp -r /backup/full ./data
    
    [root@db03 mysql]# chown -R mysql.mysql data
    

    方法2:

    #使用innobackupex恢复数据
    [root@db03 mysql]# innobackupex --copy-back /backup/full/
    [root@db03 mysql]# chown -R mysql.mysql data
    

    5.启动数据库查看数据

    #启动数据库
    [root@db03 data]# systemctl start mysqld
    
    [root@db03 data]# mysql -uroot -p123
    mysql> show databases;
    

    5.Xtrabackup增量备份

    1.基于上一次备份进行增量
    2.增量备份无法单独恢复,必须基于全备进行恢复
    3.所有增量必须要按顺序合并到全备当中
    

    1.先全备

    [root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full_$(date +%F)
    

    2.写入新数据

    [root@db03 ~]# mysql -uroot -p123
    mysql> use dump
    mysql> insert dump values(10000),(20000),(30000);
    

    3.第一次增备

    [root@db01 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/full_2020-07-23 /backup/inc1
    
    参数说明:
    --incremental:开启增量备份功能
    --incremental-basedir:上一次备份的路径
    
    #验证
    [root@db03 ~]# cat /backup/full/xtrabackup_checkpoints 
    backup_type = full-prepared
    from_lsn = 0
    to_lsn = 8417759
    [root@db03 ~]# cat /backup/inc1/xtrabackup_checkpoints 
    backup_type = incremental
    from_lsn = 8417759
    to_lsn = 8419281
    

    4.再次写入数据

    [root@db03 ~]# mysql -uroot -p123
    mysql> use dump
    mysql> insert dump values(100000),(200000),(300000);
    

    5.第二次增备

    [root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/inc1/ /backup/inc2
    
    #验证
    [root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints 
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 1636167
    
    [root@db03 backup]# cat /backup/inc1/xtrabackup_checkpoints 
    backup_type = incremental
    from_lsn = 1636167
    to_lsn = 1640828
    
    [root@db03 backup]# cat /backup/inc2/xtrabackup_checkpoints 
    backup_type = incremental
    from_lsn = 1640828
    to_lsn = 1645877
    

    6.再次写入数据
    7.第三次增量备份

    [root@db03 backup]# innobackupex --user=root --no-timestamp --incremental --incremental-basedir=/backup/inc2 /backup/inc3
    

    6.Xtrabackup增量恢复数据

    1.将全备执行redo

    [root@db03 backup]# innobackupex --apply-log --redo-only /backup/full_2020-07-23
    

    2.将第一次增备只执行redo并合并到第一次全备

    [root@db03 backup]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc1/ /backup/full_2020-07-23
    
    #验证
    [root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints 
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 1640828			#该值本来是inc1的位置点
    

    3.将第二次增备只执行redo并合并到第一次全备

    [root@db03 backup]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc2/ /backup/full_2020-07-23
    
    #验证
    [root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints 
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 1645877			#该值本来是inc2的位置点
    

    4.将最后一次增备执行redo和undo并合并到第一次全备

    [root@db03 backup]# innobackupex --apply-log --incremental-dir=/backup/inc3/ /backup/full_2020-07-23
    
    #验证
    [root@db03 backup]# 
    [root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints 
    backup_type = full-prepared
    from_lsn = 0
    to_lsn = 1649869
    

    5.将整体数据进行一次CSR

    [root@db03 backup]# innobackupex --apply-log /backup/full_2020-07-23/
    

    6.恢复数据

    [root@db03 mysql]# mv data data.bak
    [root@db03 mysql]# innobackupex --copy-back /backup/full_2020-07-23/
    [root@db03 mysql]# chown -R mysql.mysql data
    [root@db03 mysql]# systemctl start mysqld
    

    7.总结

    1.增备:
    	优点:占用磁盘空间小,没有重复数据
    	缺点:恢复麻烦
    	
    2.全备:
    	优点:恢复只需一次
    	缺点:占用磁盘空间,每次全备都有重复数据
    
  • 相关阅读:
    KnockoutJS 3.X API 第五章 高级应用(4) 自定义处理逻辑
    KnockoutJS 3.X API 第五章 高级应用(3) 虚拟元素绑定
    KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
    KnockoutJS 3.X API 第五章 高级应用(1) 创建自定义绑定
    KnockoutJS 3.X API 第四章(14) 绑定语法细节
    KnockoutJS 3.X API 第四章(13) template绑定
    KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定
    KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
    KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定
    KnockoutJS 3.X API 第四章 表单绑定(9) value绑定
  • 原文地址:https://www.cnblogs.com/Applogize/p/13374419.html
Copyright © 2011-2022 走看看