mysql备份与导入数据
1,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
2,mysql恢复数据:
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)
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 可用字节
第七步:再使用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
以上就是mysql数据库备份与导入数据的全部内容了,希望对大家有所帮助。