用xtrabackup备份mariadb-galera-cluster

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
简介:

由于mysqldump是逻辑备份,且备份效率低下,当有大量数据时无法快速进行备份

此时用xtrabackup是一种极好的备份方案

1.完整备份及完整还原

  备份:--backup

   innobackupex --defaults-file=/etc/my.cnf.d/server.cnf --host=127.0.0.1 --user=liuwei --password=123456 --backup          /tmp/backup/

  选项说明:

    --defaults-file:指明服务器的配置文件,此参数必须作为innobackupex的第一个参数,否则报错

    --host:指明主机

    --user:指明备份的用户名

    --password:指明备份用户名的密码

    --backup:指明为备份,此参数可以忽略

    /tmp/backup:备份的目录

    注:xtrabackup是物理备份,经测试不需要指定用户名密码即可使用

   应用:--apply-log

   innobackupex --apply-log 2016-07-04_17-18-53/

   注:在还原之前需要将收集到的重做日志应用到备份数据文件

   还原:--copy-back

   innobackupex --copy-back 2016-07-04_15-26-49/

   注意:在还原之前需要做的操作

       1.关闭数据库

       2.删除数据目录下的所有文件

       3.然后进行还原

       4.还原之后需要修改数据目录的权限,因为还原后的默认属主为root,需要改为mysql

       5.重启mysql

2.一次完整备份一次增量备份实现全部数据还原

   一次完整备份:

   innobackupex --defaults-file=/etc/my.cnf.d/server.cnf --host=127.0.0.1 --backup /tmp/backup/

   一次增量备份:

   innobackupex --host=127.0.0.1 --incremental --incremental-basedir=/tmp/backup/2016-07-05_09-31-40/ /tmp/backup/

     注:增量备份基于前一次的备份,不论前一次是增量还是完整备份

   重做日志:--apply-log,--redo-only(redo时最好为绝对路径,在次吃过亏)

    前提1:最后一次增量备份之前的--apply-log过程中,必须使用--redo-only选项

    前提2:所有的增量恢复,都必须基于最后一次的完整备份

    前提3:所有的增量恢复完成之后,必须基于完整备份再做一次--apply-log

     a.innobackupex --apply-log --redo-only /tmp/backup/2016-07-05_09-31-40

     b.innobackupex --apply-log /tmp/backup/2016-07-05_09-31-40 --incremental-dir=/tmp/backup/2016-07-05_10-35-02

     c.innobackupex --apply-log /tmp/backup/2016-07-05_09-31-40

   完整恢复:

   innobackupex --copy-back /tmp/backup/2016-07-05_09-31-40

3.一次完整备份多次增量备份实现全部数据还原

   一次完整备份:

   innobackupex --defaults-file=/etc/my.cnf.d/server.cnf --host=127.0.0.1 --backup /tmp/backup/

   多次增量备份:

   a.innobackupex --host=127.0.0.1 --incremental /tmp/backup/ --incremental-basedir=/tmp/backup/2016-07-05_11-43-08/

   b.innobackupex --host=127.0.0.1 --incremental /tmp/backup/ --incremental-basedir=/tmp/backup/2016-07-05_11-44-43/

   c.innobackupex --host=127.0.0.1 --incremental /tmp/backup/ --incremental-basedir=/tmp/backup/2016-07-05_11-46-50/

   重做日志:

   a.innobackupex --apply-log --redo-log 2016-07-05_11-43-08/

   b.innobackupex --apply-log --redo-only /tmp/backup/2016-07-05_11-43-08/ --incremental-dir=/tmp/backup/2016-07-05_11-44-43/

   c.innobackupex --apply-log --redo-only /tmp/backup/2016-07-05_11-43-08/ --incremental-dir=/tmp/backup/2016-07-05_11-46-50

   d.innobackupex --apply-log /tmp/backup/2016-07-05_11-43-08/ --incremental-dir=/tmp/backup/2016-07-05_11-47-27/

   e.innobackupex --apply-log /tmp/backup/2016-07-05_11-43-08/

   完整恢复:

   innobackupex --copy-back /tmp/backup/2016-07-05_11-43-08/

4.单表备份及恢复

   备份单表:

   innobackupex --host=127.0.0.1 --databases='p2p_tongjiang.rb_user' /tmp/backup/

   准备单表:

   innobackupex --apply-log --export /tmp/backup/2016-07-05_14-09-52/

   注:准备完成后,会在备份目录下生成.cfg、.ibd文件,属主为root,用到时需要改为mysql

   恢复单表:需要先在当前服务器上创建一个跟原表表结构一致的表,而后才能实现将表导入

   a.废弃原来的表空间

     mariadb>alter table p2p_tongjiang.rb_user DISCARD TABLESPACE;

   b.复制生成的*.cfg,*.ibd文件到数据目录下的库中

     #cp rb_user.cfg rb_user.ibd /data/mysql/p2p_tongjiang/

   c.把整个数据目录的属主改为mysql,因为刚刚复制进去的文件属主为root

     #chown -R mysql.mysql /data/mysql/

   d.导入生成的表空间(注:如果c步骤没有修改权限,则在导入表空间时会报表空间找不到的错误)

     mariadb>alter table p2p_tongjiang.rb_user IMPORT TABLESPACE;

本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1882359如需转载请自行联系原作者


weilovepan520

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 关系型数据库 MySQL
|
SQL 存储 关系型数据库
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
458 0
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
|
关系型数据库 MySQL Linux
MariaDB物理备份与MySQL是否一样
背景 MariaDB作为MySQL的分支,其功能越来越受人关注。本文是针对MariaDB数据库平台产品提供功能支持测试整理 测试步骤 MariaDB 10.1.38 root@localhost : (none) 07:53:44> select version(); +-------------...
2518 0
|
SQL 关系型数据库 数据库
|
存储 监控 关系型数据库
|
关系型数据库 MySQL 数据库
|
存储 监控 关系型数据库
|
SQL 关系型数据库 MySQL
腾讯云服务器 - 定时备份MariaDB/MySQL
数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过服务器每日自定运行来做的,设置一个定时时间即可 首先我们看一下mysqldump这个文件的位置: 可以看到目录在 /usr/bin/mysqldump 然后进入挂载硬盘新建sh文件 运行脚本  vim backup-mariadb.
1337 0
|
NoSQL 关系型数据库 MySQL
阿里云RDS关系型数据库大全_MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB
609 0

推荐镜像

更多