程序员开发实例大全宝库

网站首页 > 编程文章 正文

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

zazugpt 2024-09-07 21:43:05 编程文章 26 ℃ 0 评论

下面介绍的所有备份方法都是零拷贝(使用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');

查询测试数据

使用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

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

示例下载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

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

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

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

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

测试结果

如何恢复

安装恢复依赖的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,然后自动首先应用全量备份,然后应用增量备份。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表