UrBackup数据库备份和恢复之MySQL/MariaDB

下面介绍的所有备份方法都是零拷贝(使用XtraBackup进行增量备份除外)。即数据将直接传输到备份服务器,而不需要先创建本地副本。

创建测试数据库及用户并授权

创建数据库

create database demo;

创建用户

CREATE USER \'demo\'@\'localhost\' IDENTIFIED BY \'zzstxxjs_demo\';
flush privileges;

为用户授权数据库相关的权限

grant all privileges on   demo.* to demo@localhost;
flush privileges;

创建测试表

use demo;
CREATE TABLE `sys_users` (
  `username` varchar(20) NOT NULL COMMENT \'用户名\',
  `password` varchar(20) DEFAULT NULL COMMENT \'密码\',
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

放入测试数据

insert into sys_users (username,password) values (\'admin\',\'admin\');
insert into sys_users (username,password) values (\'guest\',\'guest\');
insert into sys_users (username,password) values (\'zhangsan\',\'zhangsan\');
insert into sys_users (username,password) values (\'lisi\',\'lisi\');
insert into sys_users (username,password) values (\'wangwu\',\'wangwu\');

查询测试数据

UrBackup数据库备份和恢复之MySQL/MariaDB

查询测试数据

使用SQL dump进行备份

优点

  • 易于设置
  • 允许在恢复时迁移到不同的MySQL版本
  • 非二进制文件。例如,您可以在恢复之前手动删除一些表或修改数据
  • 占用空间可以更小,因为它不包含索引

缺点

  • 恢复时间可能会更长,因为MySQL/MariaDB必须重建索引
  • 使用UrBackup增量备份可能会导致大量传输
  • 必须在增量备份期间读取整个数据库(不包括索引)

结论:如果您在Linux上有一个小型数据库(例如1GB),那么就使用这种备份方法。

如何设置

在Linux上的二进制客户端:在/usr/local/etc/urbackup/mariadbdump.conf文件中将0修改为1。之后的文件备份将包括urbackup_backup_scripts/mariadbdump.sql中的数据库转储文件。

如何恢复

从一个空数据库开始,从服务器下载SQL转储,然后应用SQL转储:

mysql -u root -p < mysqldump.sql

使用快照备份

优点

  • 易于安装在Windows上
  • UrBackup只传输更改的数据
  • 适当的进度条
  • 在网络通畅时进行快速恢复,因为索引包含在备份中

缺点

  • 您可能无法在Linux上设置快照方法
  • 由于对索引进行了备份,所以备份可能比SQL dump方法备份的文件大
  • 不可能恢复到以前不同的MySQL版本
  • 如果没有可用的更改块跟踪,则必须在增量备份期间读取全量的数据库
  • 快照可能会降低数据库的速度,这取决于快照存储写时复制数据的位置(Windows上的影子存储)

结论:在Windows上是最简单的方法,在Linux上也是很好的方法,如果文件系统快照的方法是可行的。如果更改块跟踪可用,则是最好的方法。

如何设置

配置客户端备份MySQL数据目录。例如Linux下的/var/lib/mysql和Windows下的C: \ProgramData\MySQL\MySQL Server 5.5\data。确保您已经在Linux上配置了快照方法。

如何恢复

停止MySQL/MariaDB,然后在Linux下恢复/var/lib/ MySQL,在Windows下恢复C:\ProgramData\MySQL\MySQL Server 5.5\data。

使用Percona XtraBackup进行二进制备份

优点

  • UrBackup只传输更改的数据
  • 在更频繁的备份期间不会读取全量的数据库(只有差异)
  • 如果索引应该包含在备份中,则配置对应的选项
  • 数据库不会因为快照而变慢

缺点

  • 您需要安装一个与您的数据库匹配的Percona XtraBackup版本
  • 可能比使用快照的备份稍微慢一些
  • 目前仅为支持Linux并提供了相应的文档

结论:对于高流量和大型的MySQL/MariaDB实例来说是最好的方法。

安装Percona XtraBackup

查看当前数据库版本

mysql -V
UrBackup数据库备份和恢复之MySQL/MariaDB

示例采用的是mysql5.7,选择对应Percona XtraBackup版本(https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/)进行安装

UrBackup数据库备份和恢复之MySQL/MariaDB

示例下载rpm包进行安装,推荐使用Percona-XtraBackup-2.4

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/\
binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

如何安装(Linux)

修改/usr/local/etc/urbackup/mariadbxtrabackup.conf中的0为1,并根据需要修改其他配置选项。

通过运行下面的脚本设置服务器

/usr/local/share/urbackup/scripts/setup-mariadbbackup

这将配置正确目录的备份,并为增量备份创建虚拟客户端[incr]。

修改备份配置的Mysql/MariaDB的账号跟密码:

vi  /usr/local/etc/urbackup/mariadbxtrabackup.conf
UrBackup数据库备份和恢复之MySQL/MariaDB

修改备份账号root的密码

通过运行测试XtraBackup是否工作:

/usr/local/share/urbackup/scripts/mariadbxtrabackup > /dev/null

如果是手动安装的mysql,需要把mysql对应bin 目录下的msyqld 放置到环境变量中。

然后,将[incr]的备份间隔配置为相对较小的时间,将主要的客户端使用(虚拟)全量备份脚本的备份间隔配置为相对较大的时间,并在不影响数据库使用的时候通过备份窗口调度它。

测试结果

UrBackup数据库备份和恢复之MySQL/MariaDB

测试结果

如何恢复

安装恢复依赖的jq

wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
tar -xf jq-1.5.tar.gz
cd jq-1.5
./configure
make
make install

在进行备份前先进行全量备份,然后删除用户表sys_users 中,非admin的用户,在进行恢复。

运行脚本

/usr/local/share/urbackup/scripts/restore-mariadbbackup

将数据库服务器还原为增量备份或全量数据库备份。这个脚本允许你选择你想要恢复到的全量/增量备份,启动/停止MySQL/MariaDB,然后自动首先应用全量备份,然后应用增量备份。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/21659.html

发表评论

登录后才能评论