mysqldump

mysqldump备份工具,可以完成数据库的备份以及不同数据库之间的移植,例如从低版本的Mysql到高版本的mysql,并且可以从mysql数据库移植到oracle和sql server.

备份所有数据库:

mysqldump --all--databases > chen.sql

备份指定数据库:

mysqldump --databases db1 db2 >chendump.sql


选项;

mysqldump --single-transaction test > test.sql 保证数据的一致性,innodB有效,并且确保没有DDL语句

DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。
如insert,delete,update,select等都是DML.

DDL语句用语定义和管理数据库中的对象,如Create,Alter和Drop.

DDL操作是隐性提交的!不能rollback
常见的DDL语句:CREATE DATABASE,CREATE TABLE,ALTER TABLE ,DROP TABLE,CREATE VIEW,ALTER VIEW ,DROP VIEW

  --lock-tables(-l) 在备份中,依次锁表,一般用于MyISAM,备份时只能对数据库进行读取操作。备份可保证数据的一致性。Innodb不需要只需要加--single-transaction 即可。这俩个参数是互斥的,如果一个数据库里面有MySIAM 又有 Innodb的话就只能使用--lock-table这样只能保证备份的是一致的,但是下面的表内容可能不一致。

--lock-all-tables 全部锁住。

--add-drop-database:在create database之前先drop database要与-all-databases和-databases一起使用。



备份一张表:

mysql>select * into outfile '/home/mysql/a.txt' from a

cat a.txt 默认列与列之间是用TAB键分开的。

1 a

2 b

注意目录必须是mysql:mysql的权限否则会报错。

[root@lichen~] mysql test -e "select * into outfile '/home/mysql/a.txt'fields terminated by ',' from a"

注意文件存在也是会报错的

由于a.txt存在所以报错,如果不存在cat a.txt

1,a

2,b



xtrabackup lvm