暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

mysql物理备份学习笔记

原创 郭鑫 2021-06-08
2022

说名:本文仅代表个人学习笔记记录

物理备份比逻辑备份快很多,备份出的文件和数据文件差不多大,不像逻辑备份会比数据文件大。

mysqlbackup

官方备份工具,企业版需付费,对于innodb引擎的表mysqlbackup支持热备,对于非innodb表mysqlbackup只能温备,原因是这类引擎不支持事务也就是说不能通过事务日志来保证备份的一致性,所以就只能给表加上一个全局锁来解决了。为了得到一致的备份mysqlbackup要不停的去追踪mysql数据库的sln号,也就是说mysqlback要执行备份那么它一定要连接上数据库。mysqlbackup对数据库的备份是通过复制文件的方式进行的,即mysqlback要和数据库在同一台机器上(可参考这篇文章学习:https://www.modb.pro/db/58208),mysqlbackup工具没有类似oracle的rman catalog。

示例:
备份用户的创建与授权

grant reload on *.* to back@'localhost' identified by 'beijing';
grant create,insert,drop,update on mysql.backup_progress to back@'localhost';
grant create,insert,drop,update,select on mysql.backup_history to back@'localhost';
grant super on *.* to back@'localhost';
grant replication client on *.* to back@'localhost';
grant process on *.* to back@'localhost';
grant lock tables, select,create,alter on *.* to back@localhost;
grant create, insert, drop, update on mysql.backup_sbt_history to back@'localhost';

备份命令:
mysqlbackup --defaults-file=/etc/my.cnf --user=back --password=beijing --datadir=/mysql/data --backup-image=/home/mysql/backup.mbi --uncompress --force --backup-dir=/mysql/backup copy-back-and-apply-log

–backup-dir:可以看成是mysqlbackup的工作目录,是个临时目录,mysqlbackup工作时会写一些临时文件;
–backup-image:备份文件名。

检验备份文件
mysqlbackup --backup-image=/home/mysql/backup.mbi validate

恢复命令:
mysqlbackup --defaults-file=/etc/my.cnf --datadir=/mysql/data --backup-image=/home/mysql/backup.mbi --uncompress --force --backup-dir=/mysql/backup copy-back-and-apply-log(和备份命令一样)

xtrabackup

Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup

1)xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;
2)innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁,mysql 8.0移除了innobackupex命令。(https://www.cnblogs.com/youkanyouxiao/p/8335173.html)。
3)xbcrypt 加密解密备份工具
4)xbstream 流传打包传输工具,类似tar

Xtrabackup优点
1)备份速度快,物理备份可靠
2)备份过程不会打断正在执行的事务(无需锁表)
3)能够基于压缩等功能节约磁盘空间和流量
4)自动备份校验
5)还原速度快

xtrabackup增量备份的原理:
1)、首先完成一个完全备份,并记录下此时检查点LSN;
2)、然后增量备份时,比较表空间中每个页的LSN是否大于上次备份的LSN,若是则备份该页并记录当前检查点的LSN。

示例:

下载地址 https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar

tar xf Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
yum install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm -y

[root@localhost mysql]# which xtrabackup
/usr/bin/xtrabackup

[root@localhost mysql]# innobackupex -v
innobackupex version 2.4.9 Linux (x86_64) (revision id: a467167cdd4)

[root@localhost mysql]# xtrabackup --version
xtrabackup version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

相关参数说明参考如下链接:
https://www.modb.pro/db/28683

全备:
xtrabackup --defaults-file=/etc/my.cnf --user=root --password=beijing --port=3306 --backup --target-dir=/mysql/backup

增量备份
xtrabackup --defaults-file=/etc/my.cnf --user=root --password=beijing --port=3306 --backup --target-dir=/mysql/backup/incrdb --incremental-basedir=/mysql/backup/

恢复
– 停止mysql
mysqladmin -uroot -p shutdown
– 删除datadir下的所有文件
cd /mysql/data/
rm -rf *
– 准备全备份的日志:
xtrabackup --prepare --apply-log-only --target-dir=/mysql/backup
– 准备增量备份的日志
xtrabackup --prepare --apply-log-only --target-dir=/mysql/backup --incremental-dir=/mysql/a
– 全备份准备
xtrabackup --prepare --target-dir=/mysql/backup
– 拷回数据
xtrabackup -user=root --password=beijing --port=3306 --datadir=/mysql/data/ --copy-back --target-dir=/mysql/backup/
– 启动mysql
mysqld_safe --defaults-file=/etc/my.cnf &

参考链接
https://www.cnblogs.com/zetanchen/p/10164807.html
可参考测试链接
https://www.modb.pro/db/59660

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论