方案一:采用mysql自带的工具mysqldump。
脚本文件backup.bat如下:
set "YMD=%date:~,4%%date:~5,2%%date:~8,2%"
cd /d C:\Program Files\MySQL\MySQL Server 5.7\bin
mysqldump --no-defaults -uroot -p"501501" sdxs > E:/databaseBackupData/sdxs/sdxs_%YMD%.sql
解释如下:
1、set "YMD=%date:~,4%%date:~5,2%%date:~8,2%" 表示给变量YMD赋值为执行该脚本时的年月日,比如为20180505。
2、cd /d C:\Program Files\MySQL\MySQL Server 5.7\bin 表示切换cmd目录到C:\Program Files\MySQL\MySQL Server 5.7\bin中。特别注意 /d 必须加上。否则失败。
3、mysqldump --no-defaults -uroot -p"501501" sdxs > E:/databaseBackupData/sdxs/sdxs_%YMD%.sql
表示执行mysqldump 命令。--no-defaults 的作用主要是解决执行该命令出现error的--no-beep。即如下图错误。
4、完整的mysqldump命令表示如下:
mysqldump --no-defaults --user=root --password=123456 --host=127.0.0.1 --port=3306 google >d:/databaseBackup/my.sqlml
如果添加 --no-data 选项,则只备份结构不会备份数据。
--host=127.0.0.1 用于指定mysql数据库所在的ip地址,这里指定为本地的ip 。因此可以远程备份,异地备份,该选项用于指定备份哪一台机器上的mysql数据库。
--port=3306 用于指mysql定数据库服务使用的端口,这里指定为3306端口 。
--databases 数据库A,数据库B,数据库C等,用于指定备份指定mysql服务器的哪些数据库。如果备份这台mysql服务器上的所有的数据库的所有表,则用 --all-databases 选项
--user="igoodful" 用于指定数据库的用户名,这里指定用户名为igoodful 。
--password="123456" 表示该数据库用户的密码,这里是给igoodful用户指定的密码为123456 。
--comments="很好" 表示给备份文件添加注释。
--default-character-set=utf8 表示该数据库使用的默认字符集 。
--events 表示数据库的事件也会备份,默认不会备份事件。
--password="123456" 表示该数据库用户的密码,这里是给igoodful用户指定的密码为123456 。