mysql数据库使用xtrabackup工具 实现备份和还原

下载xtrabackup工具包

percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 工具包可以从官网下载
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm

安装xtrabackup工具包(需要启用epel源)

[[email protected] ~]# yum install -y percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm

一、实验:xtrabackup 实现完全备份和还原

备份过程

1)在原主机做完全备份到/backups

原主机上有mysql的hellodb表

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

使用xtrabackup 工具备份数据库

[[email protected] ~]# xtrabackup --backup --target-dir=/data/backup/ 

查看backup下已经生成了备份的文件

[[email protected] ~]#ls /data/backup/ -l
total 18460
-rw-r----- 1 root root      431 May  6 22:32 backup-my.cnf
drwxr-x--- 2 root root      272 May  6 22:32 hellodb
-rw-r----- 1 root root 18874368 May  6 22:32 ibdata1
drwxr-x--- 2 root root     4096 May  6 22:32 mysql
drwxr-x--- 2 root root     4096 May  6 22:32 performance_schema
drwxr-x--- 2 root root       20 May  6 22:32 test
-rw-r----- 1 root root       21 May  6 22:32 xtrabackup_binlog_info
-rw-r----- 1 root root      113 May  6 22:32 xtrabackup_checkpoints
-rw-r----- 1 root root      468 May  6 22:32 xtrabackup_info
-rw-r----- 1 root root     2560 May  6 22:32 xtrabackup_logfile

xtrabackup_binlog_info、 xtrabackup_checkpoints、 xtrabackup_info文件里存放了备份时的信息

[[email protected] backup]#cat xtrabackup_binlog_info
mysql-bin.000011    245
[[email protected] backup]#cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1638757
last_lsn = 1638757
compact = 0
recover_binlog_info = 0
[[email protected] backup]#cat xtrabackup_info
uuid = c65e06f6-700b-11e9-9ac5-000c2926023f
name =
tool_name = xtrabackup
tool_command = --backup --target-dir=/data/backup/
tool_version = 2.4.13
ibbackup_version = 2.4.13
server_version = 5.5.60-MariaDB
start_time = 2019-05-06 22:32:26
end_time = 2019-05-06 22:32:28
lock_time = 0
binlog_pos = filename ‘mysql-bin.000011‘, position ‘245‘
innodb_from_lsn = 0
innodb_to_lsn = 1638757
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N

2)将备份的文件夹全部拷贝至目标主机

[[email protected] ~]# scp -r /data/backup/* 192.168.93.102:/data/backup

还原过程(在目标主机上 )

1)预准备:确保数据一致,提交完成的事务,回滚未完成的事务

[[email protected] ~]# xtrabackup --prepare --target-dir=/data/backup/ 

2)复制到数据库目录

注意:数据库目录必须为空,MySQL服务不能启动

[[email protected] ~]# systemctl stop mariadb
[[email protected] ~]# ls  /var/lib/mysql/ -l
total 0
[[email protected] ~]#
[[email protected] ~]# xtrabackup --copy-back --target-dir=/data/backup/ 

3)还原属性

[[email protected] ~]# chown -R mysql:mysql /var/lib/mysql 

4)启动服务

[[email protected] ~]# systemctl start mariadb 

5)测试

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

二、实验:xtrabackup 实现增量备份和还原

备份过程

1)完全备份

[[email protected] ~]# xtrabackup --backup --target-dir=/data/backup/base

2)第一次修改数据

MariaDB [hellodb]> insert teachers (name,age)value(‘xiaoai‘,33);
MariaDB [hellodb]> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes           |
| coc               |
| courses           |
| scores            |
| students          |
| teachers          |
| toc               |
+-------------------+
7 rows in set (0.00 sec)

MariaDB [hellodb]> drop table toc;
Query OK, 0 rows affected (0.01 sec)

3)第一次增量备份

[[email protected] ~]# xtrabackup --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base

4)第二次修改数据

MariaDB [hellodb]> update teachers set gender=‘F‘ where tid=5;`

5)第二次增量

[[email protected] ~]#xtrabackup --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1

6)将备份的数据库文件拷贝至远程主机

备份过程生成三个备份目录

[[email protected] ~]# ll /data/backup/
total 0
drwxr-x--- 6 root root 217 May  6 23:11 base
drwxr-x--- 6 root root 243 May  6 23:13 inc1
drwxr-x--- 6 root root 243 May  6 23:17 inc2

[[email protected] ~]# scp -r /data/backup/* 192.168.93.102:/data/backup

还原过程

在远程主机上确认是否复制成功

[[email protected] ~]# ll /data/backup/
total 0
drwxr-x---. 6 root root 217 May  6 15:19 base
drwxr-x---. 6 root root 243 May  6 15:19 inc1
drwxr-x---. 6 root root 243 May  6 15:19 inc2

1)预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务

[[email protected] ~]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base

2)合并第1次增量备份到完全备份

[[email protected] ~]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --incremental-dir=/data/backup/inc1

3)合并第2次增量备份到完全备份

如果是最后一次增量备份,还原时不需要加选项--apply-log-only

[[email protected] ~]# xtrabackup --prepare  --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2

4)复制到数据库目录

注意数据库目录必须为空,MySQL服务不能启动

[[email protected] ~]# xtrabackup --copy-back --target-dir=/data/backup/base

5)还原属性

[[email protected] ~]# chown -R mysql:mysql /var/lib/mysql

6)启动服务

[[email protected] ~]# systemctl start mariadb

7)测试是否还原

MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name          | Age | Gender |
+-----+---------------+-----+--------+
|   1 | Song Jiang    |  45 | M      |
|   2 | Zhang Sanfeng |  94 | M      |
|   3 | Miejue Shitai |  77 | F      |
|   4 | Lin Chaoying  |  93 | F      |
|   5 | xiaoai        |  33 | F      |
+-----+---------------+-----+--------+
5 rows in set (0.00 sec)

原文地址:https://blog.51cto.com/14233815/2390053

时间: 2024-10-30 21:44:14

mysql数据库使用xtrabackup工具 实现备份和还原的相关文章

Mysql数据库理论基础之十二 ---- 备份与还原

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

【mysql】使用xtrabackup在线增量备份及恢复l数据库

一.介绍 1.Xtrabackup有这么几个文件 innobackupex innobackupex 是xtrabackup的一个符号链接 . innobackupex still supports all features and syntax as 2.2 version did, but is now deprecated and will be removed in next major release. xtrabackup 一个由C编译而来的二进制文件,可以整备MySQL datab

MySQL数据库使用xtrabackup备份实现小例子

关于MySQL数据库的备份的工具和方式也比较多,本文只简单介绍一些我司一个平台的备份方案.Xtrabackup是由percona开源的免费数据库热备份软件,但是只能对InnoDB数据库和XtraDB存储引擎的数据库进行非阻塞的备份,但是对于MyISAM(比如MySQL)的备份同样在备份过程中会锁表.更多的关于Xtrabackup介绍请度娘之. 1,安装Xtrabackup 到官网https://www.percona.com下载tar进行安装,由于我司服务器部分可连公网,直接在服务商下载并传到目

MySQL数据库之xtrabackup物理备份(一)

前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup. 一.Xtrabackup介绍 1.官网说明 Percona XtraBackup可以在不阻止用户查询的情况下实现MySQL备份,因此非常适合拥有大数据集和无法承受长时间停机的关键任务应用程序的公司.作为开源解决

mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数据库的数据目录,在进行恢复前,停掉mysql,然后把数据目录覆盖掉,再重启mysql. 2.热备份 Myisam存储引擎 可以使用mysqlhotcopy工具,如果此工具无法使用时,可以手工使用:flush tables with read lock;手动加读锁,然后复制mysiam表的文件做热备. inno

xtrabackup工具 进行备份和恢复介绍

一.环境准备: 系统CentOS Linux release 7.2.1511 (Core) X_86 64位最小化安装mysql版本是官方二进制版本5.7.22-22,mysql采用的是二进制安装,单机上开启2个mysql实例,mysql实例要开启定时器event_scheduler=ON. 而且2个mysql实例都要开启Gtidxtrabackup 采用的是rpm包安装,版本是version 2.4.13 1.创建测试数据: 创建一个定时器和存储过程来生成数据模拟演示xtrabackup 的

innobackupex命令对mysql数据库进行完全和增量备份

测试环境: OS: rhel5 mysql : mysql-5.6.25-linux-glibc2.5-i686.tar.gz xtrabackup: percona-xtrabackup-2.2.10-1.el5.i386.rpm 这里mysql的通用二进制包安装步骤省略~ mysql的数据目录建立在一个逻辑卷上    /mydata/data mysql的数据备份目录  /backup 1.安装xtrabackup #rpm -ivh  percona-xtrabackup-2.2.10-1

mysql数据库种类介绍及 mysqldump备份数据

一  Nosql 指的是非关系型数据库,作为传统关系型数据库的一个有效补充,针对特定场景.以高性能和使用便利为目一 的功能特异化的数据库产品 Nosql特点: Noosql数据库存储不需要固定的表结构 1 他不是否定关系数据库,而是作为关系数据库的一个重要补充 2 Nosql为了高性能高并发而产生的 3 Nosql典型产品memcache(纯内存) 一重启就丢数据 redis(持久化缓存)  持久化缓存 mongodb 二  非关系型数据库种类: 1 键值存储数据库 2 列存储数据库 3 面向文

mysqlslap 一个MySQL数据库压力测试工具

在Xen/KVM虚拟化中,一般来说CPU.内存.网络I/O的虚拟化效率都非常高了,而磁盘I/O虚拟化效率较低,从而磁盘可能会是瓶颈.一般来说,数据库对磁盘I/O要求比较高的应用,可以衡量一下在客户机中运行MySQL.Oracle等数据库服务的性能(不过我知道也有在客户机中运行数据库服务器,效率也还可接受).本文不介绍MySQL在虚拟机中的性能表现情况(也许今后会考虑),而是介绍一个MySQL数据库的压力测试工具--msqlslap. mysqlslap是从MySQL的5.1.4版开始就开始官方提