《Mysql数据库备份》要点: 本文介绍了Mysql数据库备份,希望对您有用。如果有疑问,可以联系我们。
前言在生产环境中,我们数据库可能会遭遇各种各样的不测从而导致数据丢失,大概分为以下几种:
硬件故障 软件故障 自然灾害 黑客攻击 误操作(占比最大)
在数据丢失之后能够恢复数据,我们需要定期备份数据,数据备份的策略要根据不同的应用场景进行定制,大概有以下几个参考值: 能够容忍丢失多少数据 恢复数据需要多长时间 需要恢复哪些数据
根据这些数值我们可以定制符合特定环境中的数据备份策略. 数据的备份类型
数据的备份类型根据其自身的特性主要分为以下几组:
完全备份:备份整个数据集 部分备份:备份部分数据集.
增量备份:备份自上一次备份以来(增量或完全)变化的数据,节约空间、还原麻烦 差异备份:备份自上一次备份以来变化的数据,浪费空间、还原简单
如下图所示: 
MySQL备份数据的方式在mysql中备份主要有以下几种方式: 热备份:数据库的读写操作不受影响 温备份:读操作可以执行,但是不能执行写操作 冷备份:数据库不能进行读写操作
此外,Mysql中进行不同方式的备份还取决于存储引擎是否支持 MyISAM:支持温备份和冷备份,不支持热备份 InnoDB:三种备份均支持
根据数据库中数据的备份方式,可分为:
备份需要考虑的问题一般情况下,需要备份的数据分为以下几种:
数据 二进制日志,InnoDB事务日志 代码(存储过程、存储函数、触发器、事件调度器) 服务器配置文件
主要的备份工具有以下几种:
muysqldump:逻辑备份工具,适用于所有的存储引擎,支持温备份、完全备份,对于InnoDB存储引擎支持热备份; cp、tar归档复制工具:物理备份工具,冷备、完全备份和部分备份 lvm2快照:热备,借助文件系统管理工具进行备份 mysqlhotcopy:仅支持MylSAM引擎 xtrabackup: 一款非常强大的InnoDB/XtraDB热备工具,支持完全备份、增量备份,由percona提供
设计合适的备份策略针对不同的场景下,应该制定不同的备份策略对数据库进行备份:
直接cp,tar复制数据库文件 mysqldump+复制BIN LOGS lvm2快照+复制BIN LOGS xtrabackup
以上几种解决方案针对不同的场景: 如果数据量较小,可以使用第一种方式,直接复制数据库 如果数据量还行,可以使用第二种方式,先使用mysqldump对数据库进行完全备份,然后定期备份BINARY LOG达到增量备份的效果 如果数据量一般,而又不过分影响业务运行,可以使用第三种方式,使用lvm2的快照对数据文件进行备份,而后定期备份BINARY LOG达到增量备份的效果 如果数据量很大,可以使用第四种方式,使用xtrabackup进行完全备份后,定期使用xtrabackup进行增量备份或差异备份
使用cp进行备份备份数据库 mkdir /backup #创建文件夹存放备份数据库文件 cp -a /var/lib/mysql/* /backup #保留权限的拷贝源数据文件 ls /backup #查看目录下的文件
恢复数据库 cp -a /backup/* /var/lib/mysql/ #将备份的数据文件拷贝回去 service mysqld restart #重启MySQL
使用mysqldump备份mysqldump是一个客户端的逻辑备份工具,可以生成一个重现创建原始数据库和表的SQL语句,可以支持所有的存储引擎,对于InnoDB支持热备. 基本语法结构 shell> mysqldump [options] db_name [tbl_name ...] 恢复需要手动CRATE DATABASES shell> mysqldump [options] --databases db_name ... 恢复不需要手动创建数据库 shell> mysqldump [options] --all-databases 恢复不需要手动创建数据库
备份数据库 mysqldump --all-databases --lock-all-tables > backup.sql #备份数据库到backup.sql文件中 cp /var/lib/mysql/mysql-bin.000003 /root #备份二进制文件
恢复数据库 SET sql_log_bin=OFF; #暂时先将二进制日志关闭 source backup.sql #恢复数据,所需时间根据数据库时间大小而定 SET sql_log_bin=ON; #开启二进制日志 mysqlbinlog --start-position=106 --stop-position=191 mysql-bin.000003 | mysql employees #通过二进制日志增量恢复数据
lvm2快照和xtrabackup小编还在摸索中…… 请期待后续文章…… 使用contrab实现mysql每日备份
总结

编程之家PHP培训学院每天发布《Mysql数据库备份》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|