MYSQL数据库迁移、恢复及自动备份

1.利用原数据库的创建SQL创建一个数据库,确保表及表结构与原数据库一致:

CREATE TABLE <table_name> …;

2.删除新建的表空间:

ALTER TABLE <table_name> DISCARD TABLESPACE;

每个表都需要操作一次。

3.将待恢复的<table_name>.ibd文件copy到目标数据库文件夹下,并修改文件权限:

4.导入表空间:

ALTER TABLE <table_name> IMPORT TABLESPACE;

一样需要每个表都操作一次

异常处理:

直接复制DADA下的数据库文件覆盖会导致MYSQL无法正常启动。此时删除data目录下的除数据库文件夹以及ibdata1之外的文件可以让MYSQL恢复正常启动

导入表空间出错的时候注意一下源数据库跟现在使用的数据库版本是否一致。版本不一致会导致导入表空间报错。

*注意: 一定不要删除ibdata1, 查了资料, 说这个是很重要的文件,保存着innodb相关的数据(有这个文件说不定直接覆盖后可以正常使用)。万一删除的话就按上面的操作来恢复。当然前提是数据库文件夹下的文件是完整可用的。

以上为本知识库数据误删除后 的恢复记录,历时六天,必须记下备用。

自动备份数据库脚本:

新建一个批处理文件,如:mysql_backup_tool.bat,文件内容如下:

rem MySQL backup start

@echo off

::删除一周前的备份数据

forfiles /p “c:\mysql_backup” /m backup_*.sql -d -7 /c “cmd /c del /f @path”

::设置时间变量

set “Ymd=%date:0,4%%date:5,2%%date:8,2%%time:0,2%%time:3,2%%time:6,2%”

::进入mysql安装目录的bin目录下

cd C:\Program Files\MySQL\MySQL Server 5.7\bin\

::执行备份操作

mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events “用数据库名替换” > c:\mysql_backup\backup_%Ymd%.sql

@echo on

rem MySQL backup end

forfiles 为删除过期文件的命令,-d -7 删除7天的文件;

关于时间参数的参考:

%date:~0,10% //提取年月日信息

%date:~-3% //提取星期几信息

%time:~0,5% //提取时间中的时和分

%time:~0,-3% //提取时和分和秒信息

mysqldump 为MySQL提供的备份命令,该命令所在目录为MySQL安装目录下的bin文件夹中,此处直接使用该命令的前提是该命令所在bin文件夹已被设置为系统环境变量,如未设置,则要写全路径;

mysqldump -u username -p password --default-character-set=utf8 dbname > backupfile.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值