备份概述
备份方式
·按照数据库服务状态分为:
冷备份:在备份时停止数据库服务,将整个数据库复制到备份设备中。
热备份:在备份时数据库是运行的。
· 按照备份的数据分为:
物理备份:备份数据库服务器上存储的原始数据和文件,可以直接拷贝和恢复。
逻辑备份:备份的是SQL语句,可用于不同版本和不同类型的MySQL数据库之间的数据迁移。
备份策略
l 完全备份:备份所有数据(单一或多个库、单一或多张表、整个数据库)
l 只备份更新数据:
差异备份:备份自完全备份后产生的数据
增量备份:备份自上次备份之后产生的数据
备份系统三要素
完全备份与恢复
物理备份及恢复
· 备份操作
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主从同步的必要条件
查看日志
· 日志默认是启用
· 日志默认存储在/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