发表于: 2018-01-21 21:18:06

1 657


完成

准备小课堂知识点:mysql的数据备份和还原 - 如何使用mysqldump和mysqlbinlog

mysqldump 备份指定数据库:

打开cmd,操作如下:

备份到:F:/backup2.sql

恢复

备份:mysqldump -u root -p database_name  > E:/filename.sql

恢复:mysql  -u root -p database_name  < E:/filename.sql

选择性备份:mysqldump -u root -p database_name table1 table2 ...  > E:/filename.sql
 全部备份:mysqldump -u root -p --all-databases > E:/filename.sql


利用mysqlbinlog还原数据库:

binlog是二进制日志,简单的理解就是将数据库中的数据以二进制的形式记录下来,默认形式是hostname.00000x(x=1,2,3...)。此外,mysqlbinlog生成的备份文件是动态备份!mysqlbinlog生成备份文件后,我们再对database进行更改,但是此次更改操作由于发生在mysqldump后不会被记录在.sql文件中,但是,binlog日志会将我们对数据的所有操作都记录下来,它就像是一个工作在后台的监视器,以一定的时间间隔查看我们在此段时间内执行的操作,并将之记录下来。

如何开启log_bin?

mysql安装完后有个默认目录:C:\ProgramData\MySQL\MySQL Server 5.7 ,其下有个my.ini文件在安装过程中该文件已经被配置好了,字符集(utf8),datadir ,端口号3306......配置的很详细, 要开启log_bin,很简单,只需要将my.ini#log-bin 前的 # 去掉即可

二进制logbin文件存储的位置默认为:C:\ProgramData\MySQL\MySQL Server 5.7\Data)

 mysql重启完后,然后我们借助show variables like 'log_bin'; 便可查看log_bin是否开启:


 在确定log_bin打开后,在mysql下输入  show master status;便可查看当前logbin文件的位置戳:

DESKTOP-LKU5AUB-bin.000002logbin的文件,position值为154,也就是当前操作完成时位置戳指向154.

插入一条数据后,position值为428,可见插入新的数据段在位置戳154到428之间

删掉所插数据,用mysqlbinlog恢复到删除数据段之前:

   mysqlbinlog   --start-position = P1  --stop-position=P2  E:/hostname.00000x > E:/filename.sql

 

     mysql -u root -p database_name < E:/filename.sql


  P1,P2E:/hostname.00000x中位置戳的开始点和结束点,该语句就是将P1P2之间的操作转存为 E:/filename.sql ,注意此时要指明logbin的文件路径。

最后可以恢复数据,但是忘记截图了。


问题

第一次成功后,我不小心把其中的一个日志文件删除了,而且垃圾箱也没有记录,这导致了我的数据库无法启动,


从而无法使用mysql的binlog功能,除非你把my.inilog-bin注释掉。

查看window日志记录报了四个错:

最早的报错是,我就是把那个文件删了,但现在我修复了mysql还是没有解决。。。。。。好烦,不想试了,以后就当mysql没有binlog这个功能算了。。。。。。


收获

知道遇到问题去查看日志,而不是去瞎百度。


计划

开始任务二





返回列表 返回列表
评论

    分享到