mysql备份与导入数据 mysql二进制日志导入数据

发布时间:2020-11-26编辑:脚本学堂
本文介绍了mysql备份数据与导入数据的方法,以及mysql二进制日志导入数据的方法,非常多的sql语句实例,有需要的朋友参考下。

本节内容:
mysqlerjinzhirizhi/ target=_blank class=infotextkey>mysql二进制日志备份恢复
 
备份数据:
 

C:Usersxxxx>mysqldump -uxxx -pxxx backup > backup.sql  

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> 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) 

第六步:查看下二进制日志目录。
 

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 可用字节

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

F:mysqlbin>mysqlbinlog binlog.000002 
... 
use backup/*!*/; 
SET TIMESTAMP=1408763281/*!*/; 
<span style="color: #000000;">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 可用字节

第二步:新建一个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