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