mysql的数据备份方案
mysql按照备份恢复方式分为逻辑备份和物理备份
逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现 物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单 这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小 下面介绍以下3种常用的备案方法 mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具。支持基于InnoDB的热备份。但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景。 mysqldump完全备份+二进制日志 —>实现时间点恢复 温备: 在使用MyISAM引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁 这时候可以进入数据库手动加读锁。这样比较麻烦,在mysqldump工具中直接有一个加锁的选项 mysqldump --databases mydatabase --lock-all-tables --flush-logs> /tmp/backup-`date +%F-%H-%M`.sql 如果是针对某张表备份,只要在数据库名称后面加上表名称就行了 这里注意,要实现时间点的恢复,加上--flush-logs选项,在使用备份文件恢复后,然后再基于二进制日志进行时间点的恢复 时间点的恢复方法 mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql 然后用mysql命令导入这个sql脚本就行了 热备: 如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:--single-transaction mysqldump --databases mydb --single-transaction --flush-logs --master-data=2 > /tmp/backup-`date +%F-%H-%M`.sql 注意点 恢复的时刻关闭二进制日志 mysql>set sql_log_bin=0; 因为这是基于逻辑备份方式,在恢复日志时会执行sql语句插入数据,而恢复时候插入数据的日志没有意义。 基于LVM快照备份 在物理备份中 ,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令打包。但这些只能进行冷备份 不同的存储引擎能备份的级别也不一样,MyISAM能备份到表级别,而InnoDB不开启每表一文件的话就只能备份整个数据库。 下面就介绍下使用LVM的快照功能进行备份 为了安全 首先在数据库上施加读锁 mysql>FLUSH TABLES WITH READ LOCK; 刷新一下二进制日志,便于做时间点恢复 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |