随着互联网不断的发展,企业对运维人员的能力要求也越来越高,尤其是要求运维人员能处理各种故障、专研自动化运维技术、云计算机、虚拟化等,满足公司业务的快速发展。
本章向读者介绍数据库备份方法、数量量2T及以上级别数据库备份方案、xtrabackup企业工具案例演示、数据库备份及恢复实战等。
15.1 企业级数据库备份实战
在日常的运维工作中,数据是公司非常重要的资源,尤其是数据库的相关信息,如果数据丢了,少则损失几千元,高则损失上千万。所以在运维工作中要及时注意网站数据的备份,尤其要及时对数据库进行备份。
企业中如果数据量上T级别,维护和管理是非常复杂的,尤其是对数据库进行备份操作。
15.2 数据库备份方法及策略
企业中MySQL数据库备份最常用的方法如下:
直接cp备份
Sqlhotcopy
主从同步复制
Mysqldump备份
Xtrabackup备份
Mysqldump和Xtrabackup均可以备份MYSQL数据,如下为Mysqldump工具使用方法:
通常小于100G的MYSQL数据库可以使用默认Mysqldump备份工具进行备份,如果超过100G的大数据,由于Mysqldump备份方式是采用的逻辑备份,最大的缺陷是备份和恢复速度较慢。
基于Mysqldump备份耗时会非常长,而且备份期间会锁表,锁表直接导致数据库只能访问Select,不能执行Insert、Update等操作,进而导致部分WEB应用无法写入新数据。
如果是Myisam引擎表,当然也可以执行参数–lock-tables=false禁用锁表,但是有可能造成数据信息不一致。
如果是支持事务的表,例如InnoDB和BDB,–single-transaction参数是一个更好的选择,因为它不锁定表。
mysqldump -uroot -p123456 --all-databases --opt --single-transaction > 2022all.sql
其中 --opt 快捷选项,等同于添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。
本选项能让 Mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用–skip-opt 禁用。
如果运行 Mysqldump没有指定–quick 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会导致内存溢出而异常退出。
15.3 Xtrabackup企业实战
Mysql冷备、Mysqldump、Mysql热拷贝均不能实现对数据库进行增量备份,在实际环境中增量备份非常的实用,如果数据量小于100G,存储空间足够,可以每天进行完整备份,如果每天产生的数据量大,需要定制数据备份策略例如:每周日使用完整备份,周一到周六使用增量备份,或者每周六完整备份,周日到周五使用增量备份。
Percona-xtrabackup是为实现增量备份而生一款主流备份工具,Xtrabackup有两个主要的工具,分别为:xtrabackup、innobackupex。
Percona XtraBackup是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl、Percona Server及MariaDB,开源免费,是目前互联网数据库备份最主流的工具之一。
Xtrabackup只能备份InnoDB和XtraDB两种数据引擎的表,而不能备份MyISAM数据表,Innobackupex-1.5.1则封装了Xtrabackup,是一个封装好的脚本,使用该脚本能同时备份处理innodb和Myisam,但在处理Myisam时需要加一个读锁。
XtraBackup备