这两天服务器不知道什么原因,数据库第三方软件备份经常失败,因而考虑换个方式。
基于bat备份数据。个人比较喜欢,原因是不必依赖第三方软件,而且操作简单,自定义也很方便。
数据库:ddhost
mysql用户名:root
密码:hhhh
1、新建bat:
(1)生成一个时间戳,例如20160428;
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
(2)保存备份文件的根目录
set "base_dir=E:\BACK\"
(3)生成一个当天备份文件保存的目录
set "back_up_dir=%base_dir%ddhost_%Ymd%"
(4)创建一个目录
md "%back_up_dir%"
(5)使用mysqldump备份sql
cd C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump -h localhost --single-transaction --ignore-table=ddhost.T_SYS_FILE --ignore-table=ddhost.T_SYS_FILE2 -uroot -phhhh --default-character-set=utf8 ddhost > "%back_up_dir%"\ddhost.sql
注:因为有两张表情况比较特殊,不需要备份。基于此,排除这两张表使用【--ignore-table=db_name.table_name】;成功备份后发现中文出现乱码,百度了一下,可使用【--default-character-set=utf8】。
至此,完成备份数据库的bat编写完成。接下来就是考虑定时执行的问题啦~~windows可以设置任务计划,把这个bat放到任务计划里面即可。
在执行bat过程中,mysql的用户名/密码都被暴露了出来,那么能不能让bat在后台偷偷跑呢??关于这个问题,网上给出了很多答案,这里记录其中一种:
2、新建一个vbs文件;
(1)在文件内加入:createobject("wscript.shell").run "E:\mysql_back\mysql_backup.bat",0;
注:E:\mysql_back\mysql_backup.bat是备份数据库的bat的路径!!
(2)把该vbs文件加入到任务计划。
在操作过程中还发现一个问题:把备份好的sql还原到数据库提示中文乱码,关于这个问题也在网上找到了方案,以下是完整的还原语句:
>mysql -hlocalhost --default-character-set=utf8 -uroot -phhhh ddhost3 < E:\BACK\ddhost_20160428\ddhost.sql