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@]