当前位置:首页 > PHP教程 > PHP总结归纳

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

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

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

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

?

备份数据:

c:usersxxxx>mysqldump -uxxx -pxxx backup > backup.sql c:usersxxxx>

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

?

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

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

?恢复数据:

mysql> use backup; database changed mysql> source c:usersxxxxbackup.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:usersxxxx>net stop mysql mysql 服务正在停止. mysql 服务已成功停止。 c:usersxxxx>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 . 2014/08/23 11:02 .. 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 可用字节

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

f:mysqlbin>mysqlbinlog binlog.000002 ... use backup/*!*/; set timestamp=1408763281/*!*/; insert into binlog values (2) /*!*/; # 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 . 2014/08/23 11:22 .. 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 可用字节

?

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

source f:mysqlbinbinlog1.sql source f:mysqlbinbinlog2.sql

?

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

mysql> source c:usersxxxbackup.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

?

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

?



【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!