发表于: 2018-01-21 21:18:06
1 660
完成
准备小课堂知识点: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.000002为logbin的文件,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,P2为E:/hostname.00000x中位置戳的开始点和结束点,该语句就是将P1到P2之间的操作转存为 E:/filename.sql ,注意此时要指明logbin的文件路径。
最后可以恢复数据,但是忘记截图了。
问题
第一次成功后,我不小心把其中的一个日志文件删除了,而且垃圾箱也没有记录,这导致了我的数据库无法启动,
从而无法使用mysql的binlog功能,除非你把my.ini中log-bin注释掉。
查看window日志记录报了四个错:
最早的报错是,我就是把那个文件删了,但现在我修复了mysql还是没有解决。。。。。。好烦,不想试了,以后就当mysql没有binlog这个功能算了。。。。。。
收获
知道遇到问题去查看日志,而不是去瞎百度。
计划
开始任务二
评论