Mysql备份(版本5.7)
备份的语句mysqldump的基本语法:
//--single-transaction支持热备份
//mysqldump [options] dbname table1 table2...>BackupName.sql;
mysqldump --single-transaction -uusername -p dbname table1 table2...>BackupName.sql;
如果执行脚本提示 "Mysql"不是内部或外部命令,需要根据自己电脑Mysql的安装路径在系统环境变量的Path中进行新增/编辑
单个数据库完全备份
运行CMD,在页面输入一下备份脚本:
mysqldump --single-transaction -u username -p testback>E:BACK.sql;
将[testback]数据库备份到E盘下的Back.sql文件
多个数据库备份
GZIP
脚本: mysqldump -uroot -p [数据库名称]|gzip>[备份文件路径]
如果提示”zip不是外部或者内部命令…“! 需要确认C:\windows\system32文件下是否存在gzip.exe文件
数据库的还原
运行CMD,转至Mysql的Bin目录,登录Mysql:
mysql -u root -p
指定目标数据库(现有的数据库): use DatabaseName;
最后执行数据库的还原命令:
//use Database
source [filepath]
//这里的Backup文件导出时含有CreateDatabase语句
//导出脚本:mysqldump -uroot -p -b testback>FieldName.sql
//导入不需要指定存在的数据库
//反之导入脚本需要加上数据库名:>mysql -uroot -p DatabaseName<filepath
C:\Users\cn0086206836>mysql -uroot -p<E:Back3.sql
Enter password: ***********
ZIP文件还原
//脚本提示gunzip不是内部或外部命令时,需要确认C:\windows\system32文件下是否存在gunzip.exe文件
>gunzip<[数据库zip备份文件路径]|mysql -uXXX -pXXXX [还原到的目标数据库]
备份计划
上述的BAT备份脚本中不支持热备份
热备份需修改相对应的脚本
mysqldump.exe --skip-opt -hxx.xxx.xx -uroot -pxxx aadt_test > D:/CSMysqlBack/%filename%.sql
Navicat备份
注意
使用Navicat备份文件还原时,会出现表数据丢失的问题,这时候需要修改下数据库的 max_allowed_packet
,设置为52428800(1024102450)就可以了
Mysql差异备份
参考链接
第一步:开启Mysql日志
如何开启mysql的binlog日志呢?
在my.inf主配置文件中直接添加三行
log_bin=ON
log_bin_basename=…/mysql-bin
log_bin_index=…/mysql-bin.index
三个参数来指定,
第一个参数是打开binlog日志
第二个参数是binlog日志的基本文件名,后面会追加标识来表示每一个文件
第三个参数指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录
当然也有一种简单的配置,一个参数就可以搞定
log-bin=…/mysql-bin
这一个参数的作用和上面三个的作用是相同的,mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index
这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。这个时候我们必须还要指定一个参数
server-id=123454
打开my.ini文件。添加/编辑配置项[bin-log=filepath]
注意:如果安装的文件中找不到my.ini,那么可以去你安装MySql的磁盘下的ProgramData文件下找找。关于my.ini文件的路径以及创建
修改完保存时需要注意文件的编码格式,记事本打开时自动保存会默认为UTF-8的编码格式,这样会导致Mysql服务无法启动。需要修改为对应的ANSI编码格式
第二步:完全备份一次数据库
删除数据库(模拟误删除)
刷新日志文件
查看日志文件并进行恢复
恢复语法:mysqlbinlog [options] [filepath] |mysql -uroot -p
图二中根据日志恢复数据库到Pos位2087的日志节点