Percona热备份Mysql数据

目录

 

〔1〕MySQL备份工具

〔2〕XtraBackup热备份工具

〔3〕Percona安装使用


〔1〕MySQL备份工具

  • 物理备份的缺点
    • 跨平台性差,备份时间长,冗余备份,浪费存储空间
  • mysqldump备份缺点
    • 效率低,备份和还原速度慢
    • 锁表,备份过程中,数据插入和更新操作被阻塞

〔2〕XtraBackup热备份工具

  • 是一款强大的在线热备份工具,属于物理备份
    • 备份过程中不锁库表,适合生产环境;由专业组织percona提供
    • 主要组件
      • xtrabackup: c程序,支持InnoDB/XtraDB的备份
      • innobackupex: 以Perl脚本封装xtrabackup,同时支持MyISAM备份

〔3〕Percona安装使用

  • 准备软件包
    • libev-4.15-1.el6.rf.x86_64.rpm
    • percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  • 安装
    • rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
    • yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  • 查看安装列表
    • rpm -ql percona-xtrabackup-24
      • /usr/bin/innobackupex //备份innodb,xtradb,myisam存储引擎的表
      • /usr/bin/xtrabackup //备份innodb,xtradb存储引擎的表
    • man innobackupex
  • innobackupex 常用命令
    • 主机名: --host
    • 用户名: --user
    • 端口号: --port
    • 密码: --password
    • 所有库: --databases
    • 一个库: --databases="库名"
    • 多个库: --databases="库1 库2"
    • 一张表: --databases="库名.表"
    • 备份文件存储的目录名不用日期命名
      • --no-timestamp
    • 日志合并: --redo-only
    • 准备恢复数据: --apply-log
    • 拷贝恢复数据: --copy-back
    • 增量备份: incremental 目录名
    • 增量备份时,指定上一次备份数据存储的目录名
      • --incremental-basedir=目录名
    • 准备恢复数据时,指定增量备份数据存储的目录名
      • --incremental-dir=目录名
    • 导出表信息: --export
    • 导入表空间: import

 

  • innobackupex 备份与恢复
    • 完全备份
      • 格式: innobackupex --user 用户名 --password 密码 备份目录名 --no-timestamp
      • 如: innobackupex --user root --password 123456 /allbak --no-timestamp
    • 完全恢复
      • 格式
        • innobackupex --apply-log 备份目录名 //准备恢复数据
        • innobackupex --copy-back 备份目录名 //拷贝恢复数据
      • 完全备份恢复全部数据
        • systemctl stop mysqld //停止服务
        • rm -rf /var/lib/mysql/* //恢复时要求目录为空,否则失败
        • innobackupex --apply-log /root/allbak //准备恢复数据
        • innobackupex --copy-back /root/allbak //拷贝恢复数据
        • chown -R mysql:mysql /var/lib/mysql //改变所有者和组权限
        • systemctl restart mysqld //重启服务
        • mysql -uroot -p123456 //登录验证MySQL库是否恢复
    • 恢复单张表
      • 环境: db5数据库t5表的记录全部丢失,通过完全备份数据文件恢复
      • 表空间:指表存储数据的空间,一张表由表结构和表空间组成,创建时存放在对应数据库目录下,以表名.frm和表名.ibd命名的文件
      • 恢复步骤
        • 删除表空间(mysql命令行)
          • alter table 库名.表名 discard tablespace;
        • 导出表信息文件
          • innobackupex --apply-log --export 完全备份目录
          • 生成表信息文件:表名.exp 表名.cfg
        • 拷贝表信息文件到数据库目录下
          • cp 完全备份目录/库名/表名.{cfg,exp,ibd} 数据库目录/库名/
        • 修改表信息文件所有者和所有组权限
          • chown mysql:mysql 数据库目录/库名/
        • 导入表空间(mysql命令行)
          • alter table 库名.表名 import tablespace;
        • 删除数据库目录下的表信息文件
          • rm -rf 数据库目录/库名/*.{cfg,exp}
      • 例:
//删除表空间(mysql命令行)
mysql> alter table db5.t5 discard tablespace;

//导出表信息文件
innobackupex --apply-log --export /allbak

//拷贝表信息文件到数据库目录下
cp /allbak/db5/t5.{cfg,exp,ibd}  /var/lib/mysql/db5/

//修改表信息文件所有者和所有组权限
chown mysql:mysql /var/lib/mysql/db5

//导入表空间(mysql命令行)
mysql> alter table db5.t5 import tablespace;

//删除数据库目录下的表信息文件
rm -rf /var/lib/mysql/db5/t5.{cfg,exp}

//查看恢复的数据
mysql> select * from db5.t5;
    • 增量备份与恢复
      • 增量备份
        • 概念: 备份上次备份后,所有新产生的数据
        • 要求: 增量备份时,必须先有一次备份,通常是完全备份
        • 格式: innobackupex --user 用户名 --password 密码 --incremental 增量目录 -- incremental-basedir=上次备份目录 --no-timestamp
          • innobackupex --user root --password 123456 /datafull --no-timestamp
          • innobackupex --user root --password 123456 --incremental /newdir1 --incremental-basedir=/datafull --no-timestamp
          • innobackupex --user root --password 123456 --incremental /newdir2 --incremental-basedir=/newdir1 --no-timestamp
      • 增量恢复
        • 合并备份数据: innobackupex --apply-log redo-only 完备目录 --incremental-dir=增量目录
        • 拷贝备份数据: innobackupex --copy-back 完备目录
          • systemctl stop mysqld
          • rm -rf /var/lib/mysql/*
          • innobackupex --apply-log --redo-only /datafull
          • innobackupex --apply-log --redo-only /datafull --incremental-dir=/newdir1
          • innobackupex --apply-log --redo-only /datafull --incremental-dir=/newdir2
          • innobackupex --copy-back /datafull
          • chown -R mysql:mysql /var/lib/mysql
          • systemctl restart mysqld

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值