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
MySQL
lograr 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 respaldarEn 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 quediagrama esquemático
MySQL Data Backup
En
MySQl
lo 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
MySQL
En 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
MySQL
datos de copia de seguridad en la base de datoscopia de seguridad física general es a través
tar
,cp
y 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 calientecp, 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 parciallvm2 snapshot
: casi caliente copia de seguridad, con herramientas de gestión del sistema de archivos de copia de seguridadmysqlhotcopy
: indigno del nombre de una herramienta, espera casi frío, sólo es compatible con MyISAM motor de almacenamientoxtrabackup
: una muy poderosa InnoDB / XtraDB herramienta de copia de seguridad en caliente, apoyar la copia de seguridad completa, copia de seguridad incremental porpercona
proporcionar
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
Si la cantidad de datos es pequeña, puede utilizar la primera forma, copiar directamente el archivo de base de datos
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
Si la cantidad de datos en general, sin afectar indebidamente el funcionamiento del negocio, puede utilizar tercera vía, utilizando
lvm2
una instantánea de los archivos de datos están respaldados, y luego copias de seguridad periódicas registros binarios lograr copias de seguridad incrementalesSi una gran cantidad de datos, sin afectar indebidamente el funcionamiento del negocio, puede utilizar la cuarta forma, utilizando
xtrabackup
la copia de seguridad completa, el uso regular dextrabackup
copias de seguridad incrementales o diferenciales
ejercicio práctico
Utilizar para copia de seguridad cp
Utilizamos aquí es utilizar yum instalar una
mysql-5.1
versió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.1
versión del conjunto de datos utilizado para encontrar a un empleado de la base de datos de redLlevamos 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
mysqldump
comandos
mysqldump
Es 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
#基本语法格式
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 mysqldump
una 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-snapshot
el conocimiento
LVM
La 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.5
versión, utilicextrabackup
el 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óninnodb_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源
xtrabackup
introducción
Xtrabackup
Sepercona
proporcionamysql
, 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:
El rápido proceso de copia de seguridad y confiable;
El proceso de copia de seguridad no interrupción se ejecuta la transacción;
Posible ahorrar espacio en disco y capacidades de compresión basadas en el tráfico;
prueba de copia de seguridad automática;
Restaurar velocidad;
Documentos tomados del Marco
xtrabackup
Lograr la copia de seguridad completa
Aquí se utiliza
xtrabackup
una herramienta de configuración de front-endinnobackupex
para conseguir una copia de seguridad completa de la base de datosUso
innobackupex
cuando la copia de seguridad se denominaxtrabackup
copia 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
innobackupex
comando/extrabackup
crear 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-basedir
debe 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