Home >Database >Mysql Tutorial >mysql之备份跟导入数据(包括二进制日志)

mysql之备份跟导入数据(包括二进制日志)

WBOY
WBOYOriginal
2016-06-07 16:27:10975browse

mysql之备份和导入数据(包括二进制日志) 前言 :今天早上在写博客时,思索再三,没有更好的头绪,就想起了以前在操作mysql的时候,经常要用的一些命令,下面就来简单介绍一下 ? 备份数据: C:\Users\xxxxmysqldump -uxxx -pxxx backup backup.sqlC:\Users\x

mysql之备份和导入数据(包括二进制日志)

前言:今天早上在写博客时,思索再三,没有更好的头绪,就想起了以前在操作mysql的时候,经常要用的一些命令,下面就来简单介绍一下

?

备份数据:

C:\Users\xxxx>mysqldump -uxxx -pxxx backup > backup.sql

C:\Users\xxxx>

?mysqldump :mysql用于存储数据库的应用程序,会产生一个sql文件,如上文的backup.sql,其中包含了数据库的create、insert into等语句。

?

随后我们使用dir命令查看一下C:\Users\xxxx>目录的文件列表,可以看到

2014/08/23  10:15             1,271 backup.sql

?恢复数据:

mysql> use backup;
Database changed
mysql> source C:\Users\xxxx\backup.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.03 sec)

?使用mysql命令进入到mysql命令行,使用use backup切换数据库,然后使用source命令进行数据的恢复。

?

以上source命令在处理mysql的大量数据恢复时,速度还是比较可观的。

但是我们在真实的项目当中,经常需要用到二进制日志,那么下面我们来做一个二进制的日志备份操作

?

首先:我们查看一下mysql二进制日志是否开启

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.14 sec)

?

第二步:我们开启二进制日志(在Windows的mysql安装目录中的my.ini文件中增加以下内容,确保你的f盘有mysqlbin目录

# add log-bin
log-bin=f:/mysqlbin/binlog.log
# set the database for test
binlog-do-db=backup

?

第三步:我们重启一下mysql

C:\Users\xxxx>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。


C:\Users\xxxx>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

第四步:再次查看log_bin是否开启

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)

?

第五步:对backup数据库进行一下操作,假如已经存在

mysql> show columns from binlog;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.08 sec)

mysql>

?我们插入一条数据

mysql> insert into binlog values (2);
Query OK, 1 row affected (0.01 sec)

mysql> select * from binlog;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

mysql>

?

第六步:我们查看一下二进制日志目录

F:\mysqlbin>dir
 驱动器 F 中的卷是 F:
 卷的序列号是 000C-A0EB

 F:\mysqlbin 的目录

2014/08/23  11:02    <dir>          .
2014/08/23  11:02    <dir>          ..
2014/08/23  11:02               126 binlog.000001
2014/08/23  11:02               107 binlog.000002
2014/08/23  11:02                52 binlog.index
               3 个文件            285 字节
               2 个目录 117,389,742,080 可用字节</dir>
</dir>

第七步:我们再使用mysqlbinlog查看一下,内容比较多,上下使用了...空过,可以看到"insert into binlog values (2)"为我们刚刚操作的内容

F:\mysqlbin>mysqlbinlog binlog.000002
...
use backup/*!*/;
SET TIMESTAMP=1408763281/*!*/;
<span>insert into binlog values (2)</span>
/*!*/;
# at 271
#140823 11:08:01 server id 1  end_log_pos 298   Xid = 9
...

?

那么我们再次回去标题讲的二进制日志恢复和备份,备份就如前文所讲,那么就再来说说二进制的恢复

?

第一种:使用source命令,二进制日志是不能直接通过source命令来恢复,那么我们需要按照以下步骤来进行

?

第一步:先将二进制日志转换成普通sql文件

F:\mysqlbin>mysqlbinlog -uxxx -pxxx binlog.000001 > binlog1.sql

F:\mysqlbin>mysqlbinlog -uxxx -pxxx binlog.000002 > binlog2.sql

F:\mysqlbin>dir
 驱动器 F 中的卷是 F:
 卷的序列号是 000C-A0EB

 F:\mysqlbin 的目录

2014/08/23  11:22    <dir>          .
2014/08/23  11:22    <dir>          ..
2014/08/23  11:02               126 binlog.000001
2014/08/23  11:08               298 binlog.000002
2014/08/23  11:02                52 binlog.index
2014/08/23  11:22               644 binlog1.sql
2014/08/23  11:22             1,569 binlog2.sql
               5 个文件          2,689 字节
               2 个目录 117,389,737,984 可用字节</dir>
</dir>

?

第二步:新建一个sql文件,里面输入以下内容

source F:\mysqlbin\binlog1.sql
source F:\mysqlbin\binlog2.sql

?

第三步:导入以上的sql文件

mysql> source C:\Users\xxx\backup.sql
Query OK, 0 rows affected (0.00 sec)

?

第二种方法,使用mysqlbinlog

F:\mysqlbin>mysqlbinlog binlog.000001 | mysql -uroot -proot

F:\mysqlbin>mysqlbinlog binlog.000002 | mysql -uroot -proot

?

最后:这些简单的,常用的命令,以及使用方式都是非常值得总结的。

?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn