首页 > 代码库 > mysql学习之旅-数据库自动备份和手动恢复

mysql学习之旅-数据库自动备份和手动恢复


1、导入测试数据库数据

建库
show databases;
CREATE DATBASE easthome;
建表
 CREATE TABLE tj(name varchar(8),tel int(8));
CREATE TABLE sex(name varchar(8),sex int(1));
插入信息
INSERT INTO easthome.tj(name,tel) VALUES(‘LIYAN‘,88888888);
INSERT INTO easthome.tj(name,tel) VALUES(‘zy‘,77777777);
insert into easthome.sex(name,sex) values(‘zy‘,1);
mysql> insert into easthome.sex(name,sex) values(‘LIYAN‘,0);
Query OK, 1 row affected (0.00 sec)
insert into easthome.sex(name,sex) values(‘yangchen‘,1);
 insert into sex(name,sex) values(‘zhangyun‘,0);
mysql> show tables;
+--------------------+
| Tables_in_easthome |
+--------------------+
| sex                |
| tj                 |
+--------------------+
2 rows in set (0.00 sec)

mysql> select * from sex;
+----------+------+
| name     | sex  |
+----------+------+
| zy       |    1 |
| LIYAN    |    0 |
| yangchen |    1 |
| zhangyun |    0 |
+----------+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM easthome.tj;
+-------+----------+
| name  | tel      |
+-------+----------+
| LIYAN | 88888888 |
| zy    | 77777777 |
+-------+----------+
2 rows in set (0.00 sec)


2、开始备份
mysqldump备份成dump文件
==============
MySQL   安装位置:D:\app\mysql57
数据库名称为:easthome
MySQL root   密码:redhat
数据库备份目的地:D:\db_backup\

脚本:

rem *******************************Code Start*****************************
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
D:\app\mysql57\bin\mysqldump.exe  -uroot -predhat --default-character-set=binary -f easthome > D:\db_bakup\easthome_%Ymd%.dump
@echo on
rem *******************************Code End*****************************

将以上代码保存为backup_db.bat   调试时可以在结尾加上pause,查看是否正常执行
然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)
说明:此方法可以不用关闭数据库,并且可以按每一天的时间来名称备份文件。
通过%date:~5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:~,20%得到的当前计算机日期格式),所以通过%date:~5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为2009-02-05,通过%date:~5,2%则可以得到02。(日期的字符串的下标是从0开始的)

3、导入到冷备库中     #在这里卡了半天,原来mysqldump只是导出工具,导入时必须要用mysql

在cmd中登录mysql
mysql -uroot -p
create database mytest
use mytest
source d:\db_bakup\easthome_20160901.dump
show tables;    #检查是否导入成功

效果如下:
mysql> source D:\db_bakup\easthome_20160901.dump
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_mytest |
+------------------+
| sex              |
| tj               |
+------------------+
2 rows in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mytest             |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql学习之旅-数据库自动备份和手动恢复