windows mysql 数据库备份与还原方法

周俊奇 经验评论196阅读模式

一.使用 Mysql 自带 mysqldump 命令进行数据库备份

mysql 数据库自带备份命令 mysqldump ,可对数据库进行备份操作
最简单的备份是将数据库备份至本地,生成  **.sql 文件

编写备份脚本文件
(创建一个 txt 文件,写入批处理脚本,再将文件的后缀改为 .bat 变为批处理脚本文件)

rem autherKant
rem date:20201118
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
 
::创建存储的文件夹
if not exist "D:\mysql_backup" md "D:\hero_backup"
 
::执行备份操作
"D:\mysql-8.0.20-winx64\bin\mysqldump" --opt --user=root --password=root --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "demo" >D:\mysql_backup\backup_demo_%Ymd%.sql
 
::删除两周前的备份数据
forfiles /p "D:\mysql_backup" /m backup_*.sql -d -14 /c "cmd /c del /f @path"
 
@echo on
rem ******Backup MySQL End******

其中一些关键语句解释:

1.1 为备份文件存储位置设立一个文件夹,即如果不存在该文件就 md 创建该文件夹

::创建存储的文件夹
if not exist "D:\hero _backup" md "D:\hero_backup"

1.2 备份操作:
“D:\mysql-8.0.20-winx64\bin\mysqldump” :执行本地mysql文件安装路径的bin文件夹中的mysqldump
–single-transaction=TRUE: 备份时没有锁表
–user=root :mysql 帐号
–password=root :mysql 密码
–host=127.0.0.1 :mysql 的ip地址
–port=3306 :mysql 的端口号
–default-character-set=utf8 :备份默认编码
events “hero” :进行备份的数据库名称
>D:\mysql_backup\backup_hero_%Ymd%.sql :备份文件存储的路径
set “Ymd=%date:0,4%%date:5,2%%date:~8,2%” :设置备份的日期参数,以供给 sql 命名使用

关于时间参数的参考:
%date:~0,10% //提取年月日信息
%date:~-3% //提取星期几信息
%time:~0,5% //提取时间中的时和分
%time:~0,-3% //提取时和分和秒信息

*注意由于脚本文件以空格和逗号进行分隔执行,所以有关路径的如果路径中有空格,必须以双引号引起来
*通常建议有关路径的都用双引号引起来

::执行备份操作
"D:\mysql-8.0.20-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "demo" >D:\mysql_backup\backup_demo_%Ymd%.sql

1.3 对备份文件进行过期删除处理
Forfiles:从文件夹或树中选择要进行批处理的文件。
语法:
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
参数:
/p Path:指定Path ,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
/m SearchMask:按照SearchMask 搜索文件。默认的SearchMask 是*.* 。
/m backup_*.sql 指的是搜索以backup_为前缀,.sql为后缀的文件
/s:指示forfiles 在子目录中搜索。
/c Command:在每个文件上运行指定的Command 。带有空格的命令字符串必须用引号括起来。默认的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]:选择日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,其中MM / DD / YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或- ,则使用+ 。DD 的有效范围是0 - 32768。
-d -14:即前14天

::删除两周前的备份数据
forfiles /p "D:\mysql_backup" /m backup_*.sql -d -14 /c "cmd /c del /f @path"

二、跨主机备份

2.1 将需要的数据库备份至其他主机的指定数据库内
语法:
mysqldump --host=源数据库ip -u源数据库账户 -p源数据库密码 --opt 要备份的数据库 | mysql --host=目标机器ip -u目标数据库用户名 -p目标数据库密码 -C 目标数据库

mysqldump --host=127.0.0.1 -uroot -proot --opt demo | mysql --host=1.2.3.4 -uroot -proot -C demo

2.2 远程备份数据库的 sql 文件
语法:

"D:\mysql-8.0.20-winx64\bin\mysqldump" --opt --user=root --password=root --host=远程数据库ip --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "demo" >D:\mysql_backup\backup_demo_%Ymd%.sql

注:
进行远程备份的前提是,远程数据库需要创建一个对本机IP能够访问的用户,创建远程访问用户操作。

还原数据库

两种还原方法:

mysqldump -uroot -proot -h127.0.0.1 demo < "D:\mysql_backup\backup_demo_20200814.sql"
mysql -uroot -proot demo< "D:\mysql_backup\backup_demo_20200814.sql"

 
周俊奇
  • 本文由 周俊奇 发表于 2020年7月13日 20:59:25
  • 转载请务必保留本文链接:https://www.bikaao.com/archives/70.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: