ITPub博客

首页 > 数据库 > MySQL > mysql的逻辑备份

mysql的逻辑备份

原创 MySQL 作者:dotaddjj 时间:2012-07-24 23:28:47 0 删除 编辑

Mysql物理备份可以利用mysqldump工具来备份相应的数据库的文本数据,其命令相对也很简单。

C:Userspc>mysqldump -help

Usage: mysqldump [OPTIONS] database [tables]

OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

OR mysqldump [OPTIONS] --all-databases [OPTIONS]

For more options, use mysqldump --help

例如备份xiaoyu的tab02表

C:Userspc>mysqldump -u root -p xiaoyu tab02 >f:tab02.txt

Enter password: ******

备份xiaoyu的tab02和tab01的表

C:Userspc>mysqldump -u root -p xiaoyu tab02 tab01 >f:tab02.txt

Enter password: ******

备份xiaoyu这个database

C:Userspc>mysqldump -u root -p xiaoyu >f:tab02.txt

Enter password: ******

备份相应的条件的数据文本记录

C:Userspc>mysqldump -u root -p xiaoyu t_qury01 --where='id=3' > f:test01.txt

Enter password: ******

Mysqldump还可以使用—no-data不导出建表语句,只导出文本文件数据;--no-create-info不导出rows,只导出建表的ddl语句, .

-master-data或者--master-data=2时mysqldump会将当前mysql使用的binlog日志的名称和位置记录到dump文件中,并且是以change_master语句的形式,--master-data=1将会把change-master以注释的形式存在,这些信息可以在实施slave在线搭建时有用。即使不搭建slave也可以在某些情况下利用binlog做进一步恢复。

当然这些dump文件都是ddl和dml的文本文件,可以扩平台迁移,同样mysql也提供了纯文本的文件备份,简而言之就是数据源。

C:Userspc>mysqldump -u root -p -T f:app xiaoyu tab02 --fields_terminated_by=,

--fields_enclosed_by="

Enter password: ******

这样就会在f:app目录下生成一个tab02.sql的ddl文件和tab02.txt存文件文件,tab02.txt也就是数据源。

也可以先进入到mysql数据库中,用如下形式导出文本文件的数据源,不过疑惑的是该命令在linux环境下正常执行,在windows环境下居然抱权限不足,无法写入。

mysql> select * into outfile '/tmp/test01.txt'

-> fields terminated by ',' enclosed by '"'

-> from userinfo limit 10;

那么相对的逻辑备份的恢复就很简单了,ddl和dml的文本文件可以用如下方式:

Source path和myql –u root –p < /tmp/test01.txt恢复即可。

这里顺便提一下对于mysql的逻辑备份和恢复的理解,由于逻辑备份时是一个一个表的备份,就有可能造成数据的不一致,有些应用可能影响不大但是对于关系比较严格的系统就不能忽略了,可以在备份开始时采取lock table(针对所有存储引擎)或者—single_transaction的形式来备份,前者lock table write只提供读取功能,后者是利用innodb等存储引擎的事务一致性来实现的。

数据源方式的逻辑恢复也相对简单,这里个人一般使用如下方式:

[root@Analyser ~]# mysqlimport -u root -p cobra --fields_terminated_by=, --fields_optionally_enclosed_by=" /tmp/userinfo.txt

注意再测试mysqlimport过程中,如果该表有索引信息,那么用mysqimport 数据源很可能会出现

mysqlimport: Error: 1062, Duplicate entry '0' for key 'SYS_C009326', when using table: userinfo

此时是因为索引造成,采取的truncate表后然后倒入数据源正常。

虽然数据源文件占用空间小,但是还是推荐使用mysqldump的形式来进行逻辑备份,简单而且命令相对来说比较容易记忆。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1058999/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 审计初记载
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662967