本人现在做的项目需要将mysql备份和还原。 数据库连接是用的hibernate。备份和恢复是调用的mysql指令,如下
备份: mysqldump –default-character-set=utf8 -t smartbuilding -uusername -ppassword > XXX.slq
恢复: mysql -uusername -ppassword databaseName < XXX.sql
现在的问题是
1. 当本人执行了一次备份以后,执行恢复操作,数据就无法写入数据库,这个时候假如关掉tomcat,数据就马上写入数据库了。
2.假如本人直接执行恢复,这没有问题,这个时候假如刷新页面,那就又出现无法写入数据库的错误。
(直接恢复没有问题的情况是先对备份数据库进行了一次清空操作再将本地sql文件写入工作数据库。之前本人觉得这个过程与备份数据库没有直接的操作关系,就将清空备份数据库的操作取消了,取消后发现直接恢复数据也无法进行了)
相关的代码如下:
备份的代码: 备份过程是先将原数据库的数据备份到备份数据库,在备份数据库中删选数据后再备份
备份数据时调用的函数,先清空备份数据库,再把原数据库的数据写入备份数据库
恢复的代码:先判断是什么设备上的信息,然后在原数据库删除该设备上的数据,再调用恢复函数写入数据
ps:本人以为是hibernate的原因把表锁住了,但是测试发现就算关闭了sessionFactory也还是会出现上述问题,本人猜测与sessionFactory没有太大关系。
求高手帮看看是什么原因导致这个问题。
备份: mysqldump –default-character-set=utf8 -t smartbuilding -uusername -ppassword > XXX.slq
恢复: mysql -uusername -ppassword databaseName < XXX.sql
现在的问题是
1. 当本人执行了一次备份以后,执行恢复操作,数据就无法写入数据库,这个时候假如关掉tomcat,数据就马上写入数据库了。
2.假如本人直接执行恢复,这没有问题,这个时候假如刷新页面,那就又出现无法写入数据库的错误。
(直接恢复没有问题的情况是先对备份数据库进行了一次清空操作再将本地sql文件写入工作数据库。之前本人觉得这个过程与备份数据库没有直接的操作关系,就将清空备份数据库的操作取消了,取消后发现直接恢复数据也无法进行了)
相关的代码如下:
备份的代码: 备份过程是先将原数据库的数据备份到备份数据库,在备份数据库中删选数据后再备份
备份数据时调用的函数,先清空备份数据库,再把原数据库的数据写入备份数据库
恢复的代码:先判断是什么设备上的信息,然后在原数据库删除该设备上的数据,再调用恢复函数写入数据
ps:本人以为是hibernate的原因把表锁住了,但是测试发现就算关闭了sessionFactory也还是会出现上述问题,本人猜测与sessionFactory没有太大关系。
求高手帮看看是什么原因导致这个问题。
解决方案:10分
会不会数据连接池还占着呢
解决方案:20分
建议手动在命令行操作实验下,看看出什么错误。mysql数据库,假如要导入新的备份数据,需要把原数据库drop掉,再create新的空数据库,然后再导入新备份,应该就没什么问题了。
解决方案:10分
以前看《Mysql技术内幕》中建议把mysql服务停了,等恢复完再启动!