前言

通常我们都是使用xtrabackup工具来备份数据库,它是一个专业的备份工具,先来简单介绍下它。

Xtrabackup

percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库,它的增量备份不是基于二进制日志文件来还原数据的,是基于mysql数据块。

特点:

  • 备份还原过程快速、可靠
  • 备份过程不会打断正在执行的事务
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动实现备份检验
  • 开源,免费

Xtrabackup用法

备份时选项

xtrabackup --backup

--user:该选项表示备份账号

--password:该选项表示备份的密码

--host:该选项表示备份数据库的地址

--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表

--defaults-file:该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置

--incremental:该选项表示创建一个增量备份,需要指定--incremental-basedir

--incremental-basedir:该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用

--incremental-dir:该选项表示还原时增量备份的目录

--include=name:指定表名,格式:databasename.tablename

Prepare于准备选项

prepare

--apply-log:此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态

--use-memory:该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G

--export:表示开启可导出单独的表之后再导入其他Mysql中

--redo-only:此选项在prepare base full backup,往其中merge增量备份时候使用

还原时选项

--copy-back:复制

--move-back:移动

备份生产的相关文件

1)xtrabackup_info:innobackupex工具执行时的相关信息,包括版本,备份选项,备份时长,备份LSN,BINLOG的位置

2)xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的

3)xtrabackup_binlog_info:MySQL服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置,可利用实现基于binlog的恢复

4)backup-my.cnf:备份命令用到的配置选项信息

5)xtrabackup_logfile:备份生成的日志文件

还原注意事项

1.datadir目录必须为空。除非指定innobackupex --force-non-emptydirectorires选项指定,否则--copy-backup选项不会覆盖

2.restore还原之前,必须shutdown停止 MySQL服务,不能将一个运行中的实例restore到datadir目录中

3.修改恢复文件的权限为mysql

4.最后一次增量备份还原要回滚事务

5.二进制安装的mysql要是出现停止不了服务就用killall –9 mysqld 杀掉进程进而实现停止服务

实战

规划

1、两台主机17和37,其中17当主mysql服务器,37用来还原的主机,

2、目录,1个存放完整备份的目录,N个存放增量备份的目录

说明:

full目录:  存放完全备份

inc1目录:存放第一次的增量备份

inc2目录:存放第二次的增量备份

备份阶段

1、完全备份数据库

xtrabackup -pcentos --backup --target-dir=/backups/full/
# --backup表示备份
# --target-dir=填写备份到哪里

2、往表中增加数据

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao01',20)"



3、第一次增量备份

xtrabackup –pcentos --backup --target-dir=/backups/inc1/ --incremental-basedir=/backups/full
# --incremental-basedir表示基于谁的增量备份,写上上一次的备份路径
#

4、再次修改数据表

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao02',21)"

5、第二次增量备份

xtrabackup -pcentos --backup --target-dir=/backups/inc2/ --incremental-basedir=/backups/inc1/

还原阶段

说明:还原的时候我们要考虑到前几次不要回滚,最后一次还原要回滚,还原主机要安装xtrabackup工具

1、把备份的目录传送到要还原的主机上

scp -r /backups/ 192.168.43.37:/

2、停服务并清空mysql数据

systemctl stop mysqld
rm -rf /app/mysql/*

3、完全备份的预处理

xtrabackup  --prepare --apply-log-only --target-dir=/backups/full
# --prepare 表示还原
# --apply-log-only 表示不回滚

4、第一次增量备份预处理

xtrabackup --prepare --apply-log-only --target-dir=/backups/full --incremental-dir=/backups/inc1
# 同样不回滚

5、第二次增量备份预处理

xtrabackup --prepare  --target-dir=/backups/full --incremental-dir=/backups/inc2
# 这是最后一次,所以要回滚不完整的事务

6、复制处理好的数据到真正的存放数据库目录下

xtrabackup --copy-back --target-dir=/backups/full
# 它会根据你的配置文件my.cnf来读取存放位置

7、修改数据库文件权限

chown -R mysql.mysql /app/mysql/

以上还原到了备份时的状态,我们备份完二次增量后又加了条记录,还没来得急三次增量备份就宕机了,所以再次利用二进制日志文件还原到最新状态

8、通过二进制文件还原到最新状态

1)以下图中文件记录了还原到的位置

2)从原主机导出二进制文件日志

mysqlbinlog --start-position=1039 /app/logs/mysql-bin.000003 >/app/binlog.sql

3)scp传送到目标主机来还原

  • 首先在配置文件中加入禁止所有人访问选项
skip-networking
  • 启动服务
systemctl start mysqld
  • 导入二进制日志
mysql -pcentos <binlog.sql

4)进入数据库验证

5)OK 恢复完成,删除配置文件中的skip-networking并重启服务

systemctl restart mysqld

更多精彩内容请移步

http://www.cnblogs.com/xsuid/

MySQL-Xtrabackup备份还原的更多相关文章

  1. MySQL数据库备份还原(基于binlog的增量备份)

    MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份      增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...

  2. c# Process cmd 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据

    c# Process 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据 直接贴代码 前提:mysql5.7 vs2017 ...

  3. xtrabackup备份还原MySQL数据库

    mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的 ...

  4. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  5. xtrabackup备份还原mariadb数据库

    一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要 ...

  6. MySQL数据库备份还原

    本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...

  7. 使用mysqldump进行mysql数据库备份还原

    mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...

  8. MySql的备份还原

    备份数据是数据库管理最常用的操作.为了保证数据库中数据的安全,数据管理员需要定期进行数据备份.一旦数据库遭到破坏,便可通过备份的文件来还原数据库.因此,数据备份是一项很重要的工作. 数据备份 使用my ...

  9. java实现mysql的备份还原

    此文章是基于 1. 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 2. jquery+springMVC实现文件上传 一. 简介 备份和导入是一个互逆的过程. ...

  10. ubuntu docker 搭建 mongodb,开启授权访问 redis,mysql mssql 备份还原

    命令安装docker 如果您想从Ubuntu存储库安装docker版本,则可以运行下面的apt命令. sudo apt install docker.io等到安装完成后,您可以启动Docker并使用s ...

随机推荐

  1. spring容器中的beanName

    1. 一个类实现多个接口 如下图中的JobService.java, 此时这个beanName=jobService,  没有包名,类名字首字母小写 可以使用下面三种方式获得这个bean IProce ...

  2. 注意sqlite3和java的整数数据类型的区别

    作为新手的我,没有考虑数据库和java的数据类型的对应上的区别: sqlite3的数据类型和java数据类型对应上要小心,特别是整数类型. java 中int类型4位存储,范围 -2^31到2^31- ...

  3. POI 读取Excel数据

    private List<LeagueGroup> read() throws IOException{ List<LeagueGroup> leagueGroups=new ...

  4. (转)Linux系统stat指令用法

    <Linux系统stat指令用法>  原文:https://www.cnblogs.com/linux-super-meng/p/3812695.html stat指令:文件/文件系统的详 ...

  5. Storm概念学习系列之storm-starter项目(完整版)(博主推荐)

    不多说,直接上干货! 这是书籍<从零开始学Storm>赵必厦 2014年出版的配套代码! storm-starter项目包含使用storm的各种各样的例子.项目托管在GitHub上面,其网 ...

  6. Vim相关问题

    1.vim格式修改 进入配置文件: $ sudo vim /etc/vim/vimrc 在文件末尾添加: #默认查找忽略大小写 set ignorecase #如果有一个大写字母,则切换到大小姐敏感查 ...

  7. wepy-cli 开发小程序如何使用vant组件

    同样使用wepy-cli快速生成的小程序,目前可以使用组件: 直接通过 git 下载 Vant Weapp 源代码,并将dist目录拷贝到自己的项目中 git clone https://github ...

  8. 图片单独上传 (word)

    Word.ApplicationClass wordApp=new ApplicationClass(); object file=path; object nullobj=System.Reflec ...

  9. [LeetCode]7. Reverse Integer整数反转

    Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...

  10. Fiddler 抓包工具总结(转)

    Fiddler 抓包工具总结   阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). Au ...