Aprender cuatro tipos de copia de seguridad de base de datos MySQL (los aspectos básicos de la copia de seguridad no hay problema)

prefacio

Tratamos de pensar en lo que es más importante en un entorno de producción? Si nuestro hardware de servidor está roto puede ser reparado o renovado, problemas de software se pueden reparar o volver a instalar, pero si los datos no lo hicieron? Esta es probablemente la cosa más horrible, y me siento en un entorno de producción no debe ser más importante que los datos ahora. Entonces, ¿cómo nos aseguramos de que los datos no se pierde, rápidamente puede recuperar perdido o después de ella? Sólo la lectura de esto, usted debe ser capaz de MySQLlograr la copia de seguridad y recuperación de datos puede tener una cierta comprensión.

¿Por qué necesito hacer copia de seguridad de datos?

De hecho, 前言también probablemente explica por qué los datos para hacer copias de seguridad, pero debemos averiguar por qué los datos específicos para respaldar

En una base de datos entorno de producción podemos encontrar una gran variedad de accidente que cause la pérdida de datos, más o menos divididos en las siguientes categorías.

  • fallo de hardware

  • fallo de software

  • Los desastres naturales

  • Los ataques de hackers

  • El mal uso (la proporción más grande)

Por lo tanto, con el fin de ser capaz de recuperar los datos después de la pérdida de datos, es necesario realizar copias de seguridad de sus datos, política de datos de copia de seguridad para adaptarse a diferentes escenarios de aplicación, básicamente hay varios valores de referencia, sobre la base de estos valores de manera que se puede personalizar con el medio ambiente específico se reúnen estrategia de copia de seguridad de datos

  • La cantidad de pérdida de datos puede ser tolerada

  • ¿Cuánto tiempo se necesita para recuperar datos

  • Algunos datos que deben ser restaurados

El tipo de copia de seguridad de datos

El tipo de datos de copia de seguridad de acuerdo a sus propias características divide en los siguientes grupos

  • Copia de seguridad completa

  • copia de seguridad parcial

    Se refiere a una copia de seguridad completa es una copia de seguridad de todo el conjunto de datos (es decir, toda la base de datos) , se refiere a un parcial de copia de seguridad de parte de copia de seguridad del conjunto de datos (por ejemplo .: solamente una tabla de copia de seguridad)

La copia de seguridad parcial se divide en los siguientes dos

  • Copia de seguridad incremental

  • copia de seguridad diferencial

    medios de copia de seguridad incrementales que los datos de una copia de seguridad desde la última copia de seguridad (incrementales o completas) ya que los cambios ; Características: ahorro de espacio, la reducción de problemas 
    de seguridad diferencial se refiere a los datos desde la última copia de seguridad desde el último cambio de copia de seguridad completa  características: un desperdicio de espacio, restaurar copias de seguridad incrementales más simple que

diagrama esquemático

blob.png

MySQL Data Backup

En MySQllo general tienen varias formas de hacer copias de seguridad de datos

  • Hot Backup

  • espera en caliente

  • Copia de seguridad en frío

    medios de copia de seguridad en caliente que cuando la copia de seguridad de base de datos,  leer y operaciones de escritura no son afectadas base de datos 
    cálidos medios de copia de seguridad que cuando la copia de seguridad de base de datos,  la operación de lectura de la base de datos puede llevar a cabo, pero no puede realizar operaciones de escritura 
    medios de copia de seguridad en frío que cuando la base de datos cuando la copia de seguridad,  la base de datos no puede leer y operaciones de escritura, es decir, a la base de datos sin conexión

MySQLEn diferentes formas motor de almacenamiento de copia de seguridad también consideran la posibilidad de apoyar la

  • MyISAM 

     Hot Standby ×

     en espera activa √

     de espera en frío √

  • InnoDB

     Hot Standby √

     en espera activa √

     de espera en frío √

    Consideramos que la finalización de los datos de la copia de seguridad, después de ejecutar el estado de la base de datos también debemos tener en cuenta para los MySQLdatos de copia de seguridad en la base de datos

    copia de seguridad física general es a través tar, cpy otros comandos envasa directamente el archivo de datos de base de datos duplicados lograr copia de seguridad 
    copia de seguridad lógica en general se exportar datos desde la base de datos mediante una herramienta en particular y guardar una copia de seguridad (precisión de los datos de perder la lógica de copia de seguridad)

    • copia de seguridad física

    • copia de seguridad lógica

problemas de copia de seguridad a tener en cuenta

El ex estrategia de copia de seguridad personalizado, también tenemos que considerar una serie de cuestiones

Lo que queremos hacer copia de seguridad?

En circunstancias normales, necesitamos una copia de seguridad de datos dividida en las siguientes

  • datos

  • log binario, registro de transacciones de InnoDB

  • Código (procedimientos almacenados, la función almacenado, disparador, el planificador de eventos)

  • archivo de configuración del servidor

Herramientas de copia de seguridad

Aquí se incluyen varias herramientas de copia de seguridad común 
mysqldump : la herramienta de copia de seguridad lógica para todos los motores, equipos de temperatura del soporte, de copia de seguridad completa, copia de seguridad parcial para InnoDB soportes del motor de almacenamiento de copia de seguridad en caliente 
cp, tar 等归档复制工具: herramienta de copia de seguridad física para todos los motores , copia de seguridad en frío, copia de seguridad completa, copia de seguridad parcial 
lvm2 snapshot: casi caliente copia de seguridad, con herramientas de gestión del sistema de archivos de copia de seguridad 
mysqlhotcopy: indigno del nombre de una herramienta, espera casi frío, sólo es compatible con MyISAM motor de almacenamiento 
xtrabackup: una muy poderosa InnoDB / XtraDB herramienta de copia de seguridad en caliente, apoyar la copia de seguridad completa, copia de seguridad incremental por perconaproporcionar

Diseñar la estrategia de copia de seguridad apropiada

Para diferentes escenarios, debemos desarrollar una estrategia de copia de seguridad diferente para copia de seguridad de base de datos, en circunstancias normales, la política de copia de seguridad para los tres generales siguientes

  • cp directa, alquitrán para copiar el archivo de base de datos

  • mysqldump + copiar BIN REGISTROS

  • lvm2 Snapshot copiar BIN REGISTROS +

  • xtrabackup

Varias soluciones son más específicos para diferentes escenarios

  1. Si la cantidad de datos es pequeña, puede utilizar la primera forma, copiar directamente el archivo de base de datos

  2. Si la cantidad de datos estaba bien, puede utilizar el segundo método, la copia de seguridad completa del primer uso mysqldump y copias de seguridad regulares a continuación, registros binarios conseguir copias de seguridad incrementales

  3. Si la cantidad de datos en general, sin afectar indebidamente el funcionamiento del negocio, puede utilizar tercera vía, utilizando lvm2una instantánea de los archivos de datos están respaldados, y luego copias de seguridad periódicas registros binarios lograr copias de seguridad incrementales

  4. Si una gran cantidad de datos, sin afectar indebidamente el funcionamiento del negocio, puede utilizar la cuarta forma, utilizando xtrabackupla copia de seguridad completa, el uso regular de xtrabackupcopias de seguridad incrementales o diferenciales

ejercicio práctico

Utilizar para copia de seguridad cp

Utilizamos aquí es utilizar yum instalar una mysql-5.1versión del conjunto de datos utilizado para encontrar a un empleado de la base de datos de red

Ver la base de datos de información

mysql> SHOW DATABASES;    #查看当前的数据库, 我们的数据库为employees
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> USE employees;
Database changed
mysql> SHOW TABLES;         #查看当前库中的表
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.00 sec)

mysql> SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我们这里只看一下employees的行数为300024
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.05 sec)

La aplicación de un bloqueo de lectura a la base de datos

mysql> FLUSH TABLES WITH READ LOCK;    #向所有表施加读锁
Query OK, 0 rows affected (0.00 sec)

archivos de datos de copia de seguridad

[root@node1 ~]# mkdir /backup   #创建文件夹存放备份数据库文件
[root@node1 ~]# cp -a /var/lib/mysql/* /backup     #保留权限的拷贝源数据文件
[root@node1 ~]# ls /backup   #查看目录下的文件
employees  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock  test

la pérdida de datos analógicos y recuperación

[root@node1 ~]# rm -rf /var/lib/mysql/*    #删除数据库的所有文件
[root@node1 ~]# service mysqld restart   #重启MySQL, 如果是编译安装的应该不能启动, 如果rpm安装则会重新初始化数据库


mysql> SHOW DATABASES;    #因为我们是rpm安装的, 连接到MySQL进行查看, 发现数据丢失了!
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

[root@node1 ~]# rm -rf /var/lib/mysql/*    #这一步可以不做
[root@node1 ~]# cp -a /backup/* /var/lib/mysql/    #将备份的数据文件拷贝回去
[root@node1 ~]# service mysqld restart  #重启MySQL


#重新连接数据并查看

mysql> SHOW DATABASES;    #数据库已恢复
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> USE employees;      

mysql> SELECT COUNT(*) FROM employees;    #表的行数没有变化
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.06 sec)


##完成

Uso mysqldump + copia de seguridad registros binarios

Utilizamos aquí es utilizar yum instalar una mysql-5.1versión del conjunto de datos utilizado para encontrar a un empleado de la base de datos de red

Llevamos a cabo una copia de seguridad completa por mysqldump, a continuación, modificar los datos de la tabla, y luego se recupera por registro binario  para agregar log_bin en el registro binario fichero de configuración MySQL = en abierto

mysqldumpcomandos

mysqldumpEs un cliente de la herramienta de copia de seguridad lógica, se puede generar una reproducción de las bases de datos y creación de tablas sentencias SQL originales, puede soportar todo el motor de almacenamiento, soporte para InnoDB de reserva en caliente

documento oficial describe

#基本语法格式

shell> mysqldump [options] db_name [tbl_name ...]    恢复需要手动CRATE DATABASES
shell> mysqldump [options] --databases db_name ...   恢复不需要手动创建数据库
shell> mysqldump [options] --all-databases           恢复不需要手动创建数据库


其他选项:
     -E, --events: 备份事件调度器
     -R, --routines: 备份存储过程和存储函数
     --triggers: 备份表的触发器; --skip-triggers 
     --master-date[=value]  
         1: 记录为CHANGE MASTER TO 语句、语句不被注释
         2: 记录为注释的CHANGE MASTER TO语句
         基于二进制还原只能全库还原

     --flush-logs: 日志滚动
         锁定表完成后执行日志滚动

Ver la base de datos de información

mysql> SHOW DATABASES;    #查看当前的数据库, 我们的数据库为employees
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> USE employees;
Database changed
mysql> SHOW TABLES;         #查看当前库中的表
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.00 sec)

mysql> SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我们这里只看一下employees的行数为300024
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.05 sec)

Utilizar mysqldumpuna base de datos de copia de seguridad

[root@node1 ~]# mysql -uroot -p -e 'SHOW MASTER STATUS'   #查看当前二进制文件的状态, 并记录下position的数字
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      106 |              |                  |
+------------------+----------+--------------+------------------+

[root@node1 ~]# mysqldump --all-databases --lock-all-tables  > backup.sql   #备份数据库到backup.sql文件中

mysql> CREATE DATABASE TEST1;   #创建一个数据库
Query OK, 1 row affected (0.00 sec)

mysql> SHOW MASTER STATUS;   #记下现在的position
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      191 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

[root@node1 ~]# cp /var/lib/mysql/mysql-bin.000003 /root  #备份二进制文件
[root@node1 ~]# service mysqld stop   #停止MySQL
[root@node1 ~]# rm -rf /var/lib/mysql/*   #删除所有的数据文件
[root@node1 ~]# service mysqld start    #启动MySQL, 如果是编译安装的应该不能启动(需重新初始化), 如果rpm安装则会重新初始化数据库


mysql> SHOW DATABASES;   #查看数据库, 数据丢失!
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> SET sql_log_bin=OFF;   #暂时先将二进制日志关闭  
Query OK, 0 rows affected (0.00 sec)


mysql> source backup.sql  #恢复数据,所需时间根据数据库时间大小而定

mysql> SET sql_log_bin=ON; 开启二进制日志

mysql> SHOW DATABASES;   #数据库恢复, 但是缺少TEST1
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

[root@node1 ~]# mysqlbinlog --start-position=106 --stop-position=191 mysql-bin.000003 | mysql employees #通过二进制日志增量恢复数据

mysql> SHOW DATABASES;    #现在TEST1出现了!
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TEST1              |
| employees          |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)



#完成

Instantáneas de datos de copia de seguridad utilizando lvm2

Antes de hacer el experimento lo primero que mira en lvm2-snapshotel conocimiento

LVMLa instantánea es simplemente una instantánea de los metadatos partición fuente de todo punto de archivos a tiempo para salvar, si el archivo de origen no ha cambiado, entonces el correspondiente acceso a los archivos del volumen instantánea del archivo fuente directamente a la partición de origen, si se cambia el archivo de origen, el volumen de instantánea en el archivo correspondiente no cambia. El volumen de instantánea se utiliza principalmente para los archivos de copia de seguridad secundaria. Aquí solamente una introducción breve, haga clic aquí

entorno de despliegue LVM

添加硬盘; 这里我们直接实现SCSI硬盘的热插拔, 首先在虚拟机中添加一块硬盘, 不重启

[root@node1 ~]# ls /dev/sd*   #只有以下几块硬盘, 但是我们不重启可以让系统识别新添加的硬盘
/dev/sda  /dev/sda1  /dev/sda2

[root@node1 ~]# echo '- - -' > /sys/class/scsi_host/host0/scan 
[root@node1 ~]# echo '- - -' > /sys/class/scsi_host/host1/scan 
[root@node1 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan 

[root@node1 ~]# ls /dev/sd*    #看!sdb识别出来了
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb


[root@node1 ~]# fdisk /dev/sdb   #分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xd353d192.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +15G

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
You have new mail in /var/spool/mail/root
[root@node1 ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1

##创建逻辑卷
[root@node1 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@node1 ~]# vgcreate myvg /dev/sdb1 
  Volume group "myvg" successfully created
[root@node1 ~]# lvcreate -n mydata -L 5G myvg 
  Logical volume "mydata" created.

[root@node1 ~]# mkfs.ext4 /dev/mapper/myvg-mydata   #格式化
[root@node1 ~]# mkdir /lvm_data
[root@node1 ~]# mount /dev/mapper/myvg-mydata /lvm_data  #挂载到/lvm_data


[root@node1 ~]# vim /etc/my.cnf    #修改mysql配置文件的datadir如下

datadir=/lvm_data

[root@node1 ~]# service mysqld restart  #重启MySQL

####重新导入employees数据库########略过####

Ver la base de datos de información

mysql> SHOW DATABASES;    #查看当前的数据库, 我们的数据库为employees
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> USE employees;
Database changed
mysql> SHOW TABLES;         #查看当前库中的表
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.00 sec)

mysql> SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我们这里只看一下employees的行数为300024
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.05 sec)

Crear un volumen de instantánea y copia de seguridad

mysql> FLUSH TABLES WITH READ LOCK;     #锁定所有表
Query OK, 0 rows affected (0.00 sec)

[root@node1 lvm_data]# lvcreate -L 1G -n mydata-snap -p r -s /dev/mapper/myvg-mydata   #创建快照卷
  Logical volume "mydata-snap" created.

mysql> UNLOCK TABLES;  #解锁所有表
Query OK, 0 rows affected (0.00 sec)

[root@node1 lvm_data]# mkdir /lvm_snap  #创建文件夹
[root@node1 lvm_data]# mount /dev/myvg/mydata-snap /lvm_snap/  #挂载snap
mount: block device /dev/mapper/myvg-mydata--snap is write-protected, mounting read-only

[root@node1 lvm_data]# cd /lvm_snap/
[root@node1 lvm_snap]# ls
employees  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.index  test
[root@node1 lvm_snap]# tar cf /tmp/mysqlback.tar *  #打包文件到/tmp/mysqlback.tar

[root@node1 ~]# umount /lvm_snap/  #卸载snap
[root@node1 ~]# lvremove myvg mydata-snap  #删除snap


La recuperación de datos

[root@node1 lvm_snap]# rm -rf /lvm_data/*
[root@node1 ~]# service mysqld start    #启动MySQL, 如果是编译安装的应该不能启动(需重新初始化), 如果rpm安装则会重新初始化数据库


mysql> SHOW DATABASES;   #查看数据库, 数据丢失!
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

[root@node1 ~]# cd /lvm_data/
[root@node1 lvm_data]# rm -rf * #删除所有文件
[root@node1 lvm_data]# tar xf /tmp/mysqlback.tar     #解压备份数据库到此文件夹 
[root@node1 lvm_data]# ls  #查看当前的文件
employees  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.index  test

mysql> SHOW DATABASES;  #数据恢复了
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)


##完成

copia de seguridad de uso Xtrabackup

Para ilustrar mejor, usamos esta mariadb-5.5versión, utilice xtrabackupel InnoDB puede maximizar su eficacia, e InnoDB de cada tabla debe utilizar un espacio de tabla independiente, tenemos que añadir en el fichero de configuración  innodb_file_per_table = ON de abierto

Descargar e instalarxtrabackup

我们这里通过wget percona官方的rpm包进行安装
[root@node1 ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.4/binary/redhat/6/x86_64/percona-xtrabackup-2.3.4-1.el6.x86_64.rpm   
[root@node1 ~]# yum localinstall percona-xtrabackup-2.3.4-1.el6.x86_64.rpm   #需要EPEL源

xtrabackupintroducción

XtrabackupSe perconaproporciona mysql, de acuerdo con informes oficiales, que es de código abierto sólo en el mundo puede ser una herramienta para innodb copia de seguridad en caliente de bases de datos y herramienta de copia de seguridad de base de datos XtraDB. características:

  1. El rápido proceso de copia de seguridad y confiable;

  2. El proceso de copia de seguridad no interrupción se ejecuta la transacción;

  3. Posible ahorrar espacio en disco y capacidades de compresión basadas en el tráfico;

  4. prueba de copia de seguridad automática;

  5. Restaurar velocidad;

Documentos tomados del Marco

xtrabackupLograr la copia de seguridad completa

Aquí se utiliza xtrabackupuna herramienta de configuración de front-end innobackupexpara conseguir una copia de seguridad completa de la base de datos

Uso innobackupexcuando la copia de seguridad se denomina xtrabackupcopia de seguridad de todos los InnoDB tabla, copiar todos los documentos relevantes en la definición de la estructura mesa (.frm), así como MyISAM , MERGE , CSV , y ARCHIVO tablas de los documentos pertinentes, así como copias de seguridad de los gatillos y el perfil de base de datos de información archivos relacionados, estos archivos se pueden guardar en un directorio llamado tiempo.

El proceso de copia de seguridad

[root@node1 ~]# mkdir /extrabackup  #创建备份目录
[root@node1 ~]# innobackupex --user=root /extrabackup/ #备份数据
###################提示complete表示成功*********************

[root@node1 ~]# ls /extrabackup/  #看到备份目录
2016-04-27_07-30-48 

Normalmente, la copia de seguridad se ha completado, los datos no se puede utilizar para las operaciones de recuperación, como copia de seguridad de datos puede contener la transacción no se ha presentado o ha sido enviado pero que todavía no se han sincronizado con las transacciones de archivos de datos. Por lo tanto, en este momento el archivo de datos sigue siendo inconsistente, por lo que necesitamos para "preparar" una copia de seguridad completa

[root@node1 ~]# innobackupex --apply-log /extrabackup/2016-04-27_07-30-48/  #指定备份文件的目录

#一般情况下下面三行结尾代表成功*****************
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 369661462
160427 07:40:11 completed OK!

[root@node1 ~]# cd /extrabackup/2016-04-27_07-30-48/
[root@node1 2016-04-27_07-30-48]# ls -hl  #查看备份文件
total 31M
-rw-r----- 1 root root  386 Apr 27 07:30 backup-my.cnf
drwx------ 2 root root 4.0K Apr 27 07:30 employees
-rw-r----- 1 root root  18M Apr 27 07:40 ibdata1
-rw-r--r-- 1 root root 5.0M Apr 27 07:40 ib_logfile0
-rw-r--r-- 1 root root 5.0M Apr 27 07:40 ib_logfile1
drwx------ 2 root root 4.0K Apr 27 07:30 mysql
drwx------ 2 root root 4.0K Apr 27 07:30 performance_schema
drwx------ 2 root root 4.0K Apr 27 07:30 test
-rw-r----- 1 root root   27 Apr 27 07:30 xtrabackup_binlog_info
-rw-r--r-- 1 root root   29 Apr 27 07:40 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root  117 Apr 27 07:40 xtrabackup_checkpoints
-rw-r----- 1 root root  470 Apr 27 07:30 xtrabackup_info
-rw-r----- 1 root root 2.0M Apr 27 07:40 xtrabackup_logfile

La recuperación de datos

[root@node1 ~]# rm -rf /data/*   #删除数据文件

***不用启动数据库也可以还原*************

[root@node1 ~]# innobackupex --copy-back /extrabackup/2016-04-27_07-30-48/   #恢复数据, 记清使用方法

#########我们这里是编译安装的mariadb所以需要做一些操作##########
[root@node1 data]# killall mysqld

[root@node1 ~]# chown -R mysql:mysql ./* 
[root@node1 ~]# ll /data/      #数据恢复
total 28704
-rw-rw---- 1 mysql mysql    16384 Apr 27 07:43 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Apr 27 07:43 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 Apr 27 07:43 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Apr 27 07:43 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Apr 27 07:43 ib_logfile1
-rw-rw---- 1 mysql mysql      264 Apr 27 07:43 mysql-bin.000001
-rw-rw---- 1 mysql mysql       19 Apr 27 07:43 mysql-bin.index
-rw-r----- 1 mysql mysql     2166 Apr 27 07:43 node1.anyisalin.com.err


[root@node1 data]# service mysqld restart
MySQL server PID file could not be found!                  [FAILED]
Starting MySQL..                                           [  OK  ]

MariaDB [(none)]> SHOW DATABASES;  #查看数据库, 已经恢复
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec

Copia de seguridad incremental

#########创建连两个数据库以供测试#####################
MariaDB [(none)]> CREATE DATABASE TEST1;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE TEST2;
Query OK, 1 row affected (0.00 sec)

[root@node1 ~]# innobackupex --incremental /extrabackup/ --incremental-basedir=/extrabackup/2016-04-27_07-30-48/ 

[root@node1 ~]# ls /extrabackup/2016-04-27_07-57-22/ #查看备份文件
total 96
-rw-r----- 1 root root   386 Apr 27 07:57 backup-my.cnf
drwx------ 2 root root  4096 Apr 27 07:57 employees
-rw-r----- 1 root root 49152 Apr 27 07:57 ibdata1.delta
-rw-r----- 1 root root    44 Apr 27 07:57 ibdata1.meta
drwx------ 2 root root  4096 Apr 27 07:57 mysql
drwx------ 2 root root  4096 Apr 27 07:57 performance_schema
drwx------ 2 root root  4096 Apr 27 07:57 test
drwx------ 2 root root  4096 Apr 27 07:57 TEST1
drwx------ 2 root root  4096 Apr 27 07:57 TEST2
-rw-r----- 1 root root    21 Apr 27 07:57 xtrabackup_binlog_info
-rw-r----- 1 root root   123 Apr 27 07:57 xtrabackup_checkpoints
-rw-r----- 1 root root   530 Apr 27 07:57 xtrabackup_info
-rw-r----- 1 root root  2560 Apr 27 07:57 xtrabackup_logfile

BASEDIR se refiere al directorio en la copia de seguridad completa después de la ejecución de este comando, el innobackupexcomando /extrabackupcrear un nuevo directorio llamado en el momento del directorio para almacenar todos los datos de copia de seguridad incremental. Además, después de realizada una vez más copias de seguridad incrementales copias de seguridad incrementales, que --incremental-basedirdebe apuntar al directorio de la última copia de seguridad incremental se encuentra.

Debe tenerse en cuenta, copias de seguridad incrementales sólo se puede aplicar o tablas InnoDB XtraDB, para tablas MyISAM, en realidad se realiza una copia de seguridad incremental se lleva a cabo cuando una copia de seguridad completa.

copia de seguridad incremental de acabado

[root@node1 ~]# innobackupex --apply-log --redo-only /extrabackup/2016-04-27_07-30-48/
[root@node1 ~]# innobackupex --apply-log --redo-only /extrabackup/2016-04-27_07-30-48/ --incremental-dir=/extrabackup/2016-04-27_07-5
7-22/

La recuperación de datos

[root@node1 ~]# rm -rf /data/*   #删除数据

[root@node1 ~]# innobackupex --copy-back /extrabackup/2016-04-27_07-30-48/     #整理增量备份之后可以直接通过全量备份还原

[root@node1 ~]# chown -R mysql.mysql /data/
[root@node1 ~]# ls /data/ -l
total 28732
-rw-rw---- 1 mysql mysql     8192 Apr 27 08:05 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Apr 27 08:05 aria_log_control
drwx------ 2 mysql mysql     4096 Apr 27 08:05 employees
-rw-r----- 1 mysql mysql 18874368 Apr 27 08:05 ibdata1
-rw-r----- 1 mysql mysql  5242880 Apr 27 08:05 ib_logfile0
-rw-r----- 1 mysql mysql  5242880 Apr 27 08:05 ib_logfile1
drwx------ 2 mysql mysql     4096 Apr 27 08:05 mysql
-rw-rw---- 1 mysql mysql      245 Apr 27 08:05 mysql-bin.000001
-rw-rw---- 1 mysql mysql       19 Apr 27 08:05 mysql-bin.index
-rw-r----- 1 mysql mysql     1812 Apr 27 08:05 node1.anyisalin.com.err
-rw-rw---- 1 mysql mysql        5 Apr 27 08:05 node1.anyisalin.com.pid
drwx------ 2 mysql mysql     4096 Apr 27 08:05 performance_schema
drwx------ 2 mysql mysql     4096 Apr 27 08:05 test
drwx------ 2 mysql mysql     4096 Apr 27 08:05 TEST1
drwx------ 2 mysql mysql     4096 Apr 27 08:05 TEST2
-rw-r----- 1 mysql mysql       29 Apr 27 08:05 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql      530 Apr 27 08:05 xtrabackup_info

MariaDB [(none)]> SHOW DATABASES;  #数据还原
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TEST1              |
| TEST2              |
| employees          |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.00 sec)

#关于xtrabackup还有很多强大的功能没有叙述、有兴趣可以去看官方文档

resumen

Método de copia de seguridad la velocidad de copia de seguridad tasa de recuperación conveniencia función generalmente se usa
cp rápido rápido Generalmente, baja flexibilidad débil Una pequeña cantidad de datos de copia de seguridad
mysqldump lento lento En general, puede ignorar las diferencias de motor de almacenamiento general Pequeño y la cantidad media de copia de seguridad de datos
lvm2 instantánea rápido rápido En general, el soporte es de espera casi caliente, rápido general Pequeño y la cantidad media de copia de seguridad de datos
xtrabackup más rápido más rápido InnoDB lograr en espera activa, la memoria requerida por el motor potente copia de seguridad a gran escala

De hecho, también puede Master-Slave Replication copia de seguridad.

Traslado: http: //www.cnblogs.com/liangshaoye/p/5464794.html

Publicado 15 artículos originales · ganado elogios 7 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/J_M_S_H_T/article/details/87626716
Recomendado
Clasificación