备份概述

备份方式

·按照数据库服务状态分为:

冷备份:在备份时停止数据库服务,将整个数据库复制到备份设备中。

热备份:在备份时数据库是运行的。

· 按照备份的数据分为:

物理备份:备份数据库服务器上存储的原始数据和文件,可以直接拷贝和恢复。

逻辑备份:备份的是SQL语句,可用于不同版本和不同类型的MySQL数据库之间的数据迁移。

备份策略

l 完全备份:备份所有数据(单一或多个库、单一或多张表、整个数据库)

l 只备份更新数据:

差异备份:备份自完全备份后产生的数据

增量备份:备份自上次备份之后产生的数据

MySQL数据备份与恢复_数据

备份系统三要素

MySQL数据备份与恢复_数据_02


完全备份与恢复

物理备份及恢复

· 备份操作

cp   -r   /var/lib/mysql   /备份目录/mysql.bak 

tar   -zcf   /root/mysql.tar.gz   /var/lib/mysql/*

· 恢复操作

cp   -r  备份目录/mysql.bak       /var/lib/mysql/ 

tar  -zxf  /root/mysql.tar.gz  -C  /var/lib/mysql/ 

chown   -R   mysql:mysql   /var/lib/mysql

逻辑备份及恢复

· 完全备份

]#mysqldump -uroot -p密码 库名 > /目录/xxx.sql

· 库名表示方式

库名表名列表

-B库名列表

--all  -databases或-A

//备份1张表或多张表所有数据

//备份1个库或多个库所有数据

//备份1台服务器所有数据

[root@mysql50~]#mysqldump -uroot -proot -A  >  /bakdir/allbak.sgl    

· 完全恢复

]#mysql  -uroot -p密码   [库名] </目录/名.sql

注意:恢复库时库名可以省略

注意:备份和恢复时,数据库服务必须是运行状态

mysqldump 备份缺点

物理备份缺点

l 跨平台性差

l 备份时间长、冗余备份、浪费存储空间

mysqldump备份缺点

l 效率较低、备份和还原速度慢、锁表

l 备份过程中,数据插入和更新操作被阻塞


增量备份与恢复

软件介绍

l 一款强大的在线热备份工具

l 备份过程中不锁库表,适合生产环境

l 由专业组织Percona提供(改进MySQL分支)

增量备份

·首次完全备份

Xtrabackup  --host=127.0.0.1 --user=用户名  -password=密码--backup --target-dir=备份目录 --datadir=数据库目录

·增量备份

xtrabackup  --host=127.0.0.1 --user=用户名 --password=密码 --backup --target-dir=备份目录 --incremental-basedir=参考目 录 --datadir=数据库

增量恢复

·准备恢复数据

Xtrabackup  --prepare  --apply-log-only  --target-dir=/完全备份目录

· 合并数据

Xtrabackup  --prepare  --apply-log-only  --target-dir=/完全备份目录   --incremental-dir=/新数据目录名

· 拷贝数据

Xtrabackup  -copy-back  -target-dir=/ 完全备份目录

Xtrabackup  -copy-back  -target-dir=/ 完全备份目录

恢复步骤

· 具体如下:

l 准备恢复数据

l 合并数据(合并的顺序要和增量备份的顺序一致)

l 清空数据库目录

l 拷贝数据

l 修改数据库目录所有者/组用户为mysql

l 重启数据库服务

差异备份与恢复

差异备份

· 首次完全备份

Xtrabackup --host=127.0.0.1 --user=用户名 --password=密码 --backup --target-dir=/备份目录 --datadir=/数据库目录

· 差异备份

Xtrabackup --host=127.0.0.1 --user=用户名 --password=密码 --backup --target-dir=/备份目录 -- incremental-basedir=/完全备份目录 --datadir=/数据库目录

差异恢复

· 准备恢复数据

Xtrabackup --prepare --apply-log-only --target-dir=完全备份目录

· 合并数据

xtrabackup --prepare --apply-log-only  --target-dir=/完全备份目   --incremental-dir=/最后一次差异备份

·拷贝数据

Xtrabackup --copy-back  --target-dir=完全备份目录

恢复步骤

· 具体如下:

准备恢复数据

合并数据最后一次差异备份

清空数据库目录

拷贝数据

修改数据库目录所有者/组用户为mysql

重启mysql服务

数据实时备份与恢复

binlog日志管理

日志介绍

·什么是binlog日志

① 也称做二进制日志

② MySQL 服务日志文件的一种

③ 保存除查询之外的所有SQL命令

④ 可用于数据的备份和恢复

⑤ 配置mysql主从同步的必要条件


查看日志

· 日志默认是启用

MySQL数据备份与恢复_数据库_03

· 日志默认存储在/var/lib/mysql 目录下

mysql>system   ls   /var/lib/mysql/binlog.*

/var/lib/mysql/binlog.000001   /var/lib/mysql/binlog.index

自定义日志

配 置 项                               用 途

server_id=数字                 指定id值(1-255)

log_bin=                           启用binlog日志

max_binlog_size=数值m   指定日志文件容量,默认1G

[root@mysql52~]#vim  /etc/my.cnf.d/mysql-server.cnf

.......

[mysqld]

log-bin=/目录名/日志名               //指定存放目录和文件名

:wq

[root@mysql11]#mkdir  /mylog;chown  mysql  /mylog

[root@mysql11~]#systemctl  restart  mysqld


创建新日志文件

· Binlog日志文件默认1G容量,超出后会自动创建新日志

mysql> flush logs ;

]#systemctl restart mysqld

]#mysqldump -uroot -p密码 --flush-logs -B tarena > /t.sql

]#mysqldump -uroot -p密码 --flush-logs -A > /all.sql


恢复数据

相关命令

· 日志文件常用管理命令

mysql>show master status;

命令格式

·把查看到的文件内容管道给连接mysql服务的命令执行

//查看文件全部内容,适用于恢复所有数据

]#mysqlbinlog       /目录/文件名 | mysql-uroot       -p密码

]#mysqlbinlog  /var/lib/mysql/binlog.000001   |mysql-uroot- proot