过年了,数据库备份走起,平时都不管,但是到了重大节假日的时候,数据库不备份就要中奖了,那这个假期就没法过了。
一、数据库备份脚本
#5.6以下的版本每天生成一个
创建备份文件:database_backup.bat
c:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
set "my_databse=mysql_dev"
mysqldump -uzdx_dev -pZdx_DEV2018 --skip-lock-tables --ignore-table=%my_databse%.log_by_pay_notify --ignore-table=%my_databse%.log_by_message_send --ignore-table=%my_databse%.log_by_footprint --default-character-set=utf8 %my_databse%> E:\mysqlbak\zdx\zdx_%Ymd%.sql
#5.6及以上的版本每天生成一个
创建备份文件:database_backup.bat
d:
cd D:\Program Files (x86)\mysql-5.7.18-winx64\bin
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
set "my_databse=mysql_dev"
mysqldump --default-character-set=utf8 --skip-lock-tables --ignore-table=%my_databse%.log_by_pay_notify --ignore-table=%my_databse%.log_by_message_send --ignore-table=%my_databse%.log_by_footprint %my_databse% > D:\mysql_backup\zdx\zdx_%Ymd%.sql
修改:D:\Program Files (x86)\mysql-5.7.18-winx64\bin\my.ini
加入下面的信息,数据库的账户密码,端口,IP等信息,不写到这里会报错,具体我就不写了
[mysqldump]
host=localhost
port=3306
user=my_database_name
password=my_database_password
解释一下,我们里面配置信息里面的参数:
set "my_databse=mysql_dev" 指的将数据库名称做成参数,后面很多地方需要使用
--skip-lock-tables 不锁表备份,否则备份时锁表--lock-tables
--ignore-table 不备份某些表,比如用户行为日志表、短信发送记录表 可以配置多个
当我们的数据库备份文件很大的情况,开启压缩
7z.exe 最新版本64位下载地址:下载
#5.6及以上的版本每天生成一个
创建备份文件:database_backup.bat
d:
cd D:\Program Files (x86)\mysql-5.7.18-winx64\bin
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
set "my_databse=mysql_dev"
mysqldump --default-character-set=utf8 --skip-lock-tables --skip-lock-tables --ignore-table=%my_databse%.log_by_pay_notify --ignore-table=%my_databse%.log_by_message_send --ignore-table=%my_databse%.log_by_footprint %my_databse% > D:\mysql_backup\zdx\zdx_%Ymd%.sql
"C:\Program Files\7-Zip\7z.exe" a "D:\mysql_backup\zdx\zdx_%Ymd%.sql.zip" "D:\mysql_backup\zdx\zdx_%Ymd%.sql"
del /F "D:\mysql_backup\zdx\zdx_%Ymd%.sql"
forfiles /p "D:\mysql_backup\zdx" /s /m *.zip /d -10 /c "cmd /c del @path" > del_bak.log
@echo on
解释:将数据库名称设置成变量
set "my_databse=mysql_dev"
解释:参数说明
--skip-lock-tables 不锁表备份
--ignore-table 表不备份
解释:将刚刚备份的文件用7z.exe压缩成.zip
"C:\Program Files\7-Zip\7z.exe" a "D:\mysql_backup\zdx\zdx_%Ymd%.sql.zip" "D:\mysql_backup\zdx\zdx_%Ymd%.sql"
解释:将7z.exe压缩前的备份文件删除
del /F "D:\mysql_backup\zdx\zdx_%Ymd%.sql"
解释:将此文件夹10天前的备份文件删除
forfiles /p "D:\mysql_backup\zdx" /s /m *.zip /d -10 /c "cmd /c del @path" > del_bak.log
修改:D:\Program Files (x86)\mysql-5.7.18-winx64\bin\my.ini
加入下面的信息,数据库的账户密码,端口,IP等信息,不写到这里会报错,具体我就不写了
[mysqldump]
host=localhost
port=3306
user=my_database_name
password=my_database_password
二、备份恢复脚本
#5.6以下的版本每天生成一个
创建恢复脚本文件:database_restore.bat
c:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
mysqldump -uzdx_dev -pZdx_DEV2018 --skip-lock-tables --default-character-set=utf8 zdx < E:\mysqlbak\zdx\zdx_%Ymd%.sql
#5.6以上的恢复脚本
创建恢复脚本文件:database_restore.bat
d:
cd D:\Program Files (x86)\mysql-5.7.18-winx64\bin
mysqldump --default-character-set=utf8 --skip-lock-tables xingxingzx < D:\mysql_backup\xingxingzx\xingxingzx_20200117.sql
这个版本也是依靠这个配置的
修改:D:\Program Files (x86)\mysql-5.7.18-winx64\bin\my.ini
加入下面的信息,数据库的账户密码,端口,IP等信息,不写到这里会报错,具体我就不写了
[mysqldump]
host=localhost
port=3306
user=my_database_name
password=my_database_password
备份文件大于1G,建议使用以下恢复操作
创建恢复脚本文件:database_restore.bat
c:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
mysql -uzdx_dev -pZdx_DEV2018 zdx < E:\mysqlbak\zdx\zdx_%Ymd%.sql
数据恢复速度可以在 /mysql_home/data/数据库名 下面实时看到存储文件的大小在变动
三、windows系统的计划任务
例如参考: windows系统的计划任务
这个大家到处都能看到,但是要指出有些没有做好的: