下面介绍的所有备份方法都是零拷贝(使用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,然后自动首先应用全量备份,然后应用增量备份。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/21659.html