mysql数据库备份与数据恢复
按照我自己的备份理解在,配好环境后一般要打开数据库的二进制日志,每天定时做好全备份,实时做好二进制备份,这样在数据库出现了问题才能做到最小损失。定期使用 FlUSH LOGS 或者 mysqladmin flush-logs ,该操作会关闭当前的二进制日志文件,并新建一个binlog日志文件。(和重启mysql后新建的binlog操作一样)。以备份binlog日志,利用binlog日志也可以做增量备份。
在数据出现问题的情况下比如:数据被删除、或者这个表都被删掉了,反正就是出错了。这个时候我们就要使用完全备份和二进制日志来就行恢复数据。
一、备份数据库命令如下:
mysqldump -uroot -p Test_DB > /mydata/mysqlbackup/Test_DB_0809-16:50.sql
然后我们会输入密码。我们可以也写一个定时任务来执行或者使用navicat for mysql实现定时备份。
二、恢复数据库,如果数据被我们不小心删掉了这个时候就先还原,每天定时备份的数据库。这个时候数据就回到了前一天的时候了命令如下:mysql -uroot -p Test_DB < /mydata/mysqlbackup/Test_DB_0809-16\:50.sql,或者使用navicat for mysql还原也行。然后我们取出实时备份的二进制日志,我们可以使用show binary logs;来查看有多少二进制日志,我们挑出需要的二进制日志。执行如下语句可以查看我们的操作里面有posion 时间 我们操作的语句:mysqlbinlog /mydata/mysql/mysql-bin.000003。这个时候我们可以使用如下语句:mysqlbinlog --start-date="2017-06-04 15:04:07" --stop-date="2017-06-04 15:12:25" /mydata/mysql-bin.000003 > one.sql 把指定时间段的操作读出来,这个时间段是正确的操作。然后使用:mysql -uroot -p Test_db<one.sql,恢复到数据库这个时候基本就数据恢复了。也可以使用position定位恢复命令如下:mysqlbinlog --stop-position="2698" /mydata/mysql/mysql-bin.000003 > Backup_1.sql 。根据实际情况操作吧 ,没事别手残。