mysqldump
bitsCN.com 根据mysql 5.5第6.4章节理解和自己翻译水平有限如有纰漏请指教,原文如下.http://dev.mysql.com/doc/refman/5.5/en/using-mysqldump.html 6.4 使用mysqldump备份(Using mysqldump for Backups)首先多余的不用说了备份用来干什么大家都清楚。mysqldump备份分两种输出形式:1. 无--tab选项,输出标准的SQL格式。输出包含CREATE语句(databases,tables,stored routines,and so forth),INSERT语句插入数据到表。输出可以保存成一个文件,之后可以用mysql再次创建。选项可以控制输出SQL语句格式,文件类型。2. 含--tab选项,每个表对应两个备份文件。一个文件为由tab分割的文本,一行对应一条数据记录,在目录中这个文件输出名为tb1_name.txt。同样会创建一个含有CREATE TABLE语句,名为tb1_name.sql的文件。 6.4.1 使用mysqldump备份SQL数据(Dumping Data in SQL Format with mysqldump)默认语法shell>mysqldump [arguments] > file_name
shell>mysqldump --all-databases > dump.sql
shell>mysqldump -uroot -p --all-databases > dump.sql
shell>mysqldump --databases db1 db2 db3 > dump.sql
shell>mysqldump --databases test > dump.sql
shell>mysqldump test > dump.sql
shell>mysqldump test t1 t3 t7 > dump.sql
shell>mysql 另外在mysql内部你可以这样写<pre class="brush:php;toolbar:false">mysql>source dump.sql;
shell>mysqladmin create db1
shell>mysql db1 另外在mysql内部创建数据库,选择数据库,导入备份:<pre class="brush:php;toolbar:false">mysql>CREATE DATABASE IF NOT EXISTS db1;<br>mysql>USE db1;<br>mysql>source dump.sql
shell>mysqldump --tab=/tmp db1
shell> mysqldump --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0adb1
1 shell> mysql db1 2 shell> mysqlimport db1 t1.txt
1 mysql> USE db1;<br>2 mysql> LOAD DATA INFILE 't1.txt' INTO TABLE t1;
1 shell>mysqlimport --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1 t1.txt
1 mysql>USE db1;<br>2 mysql>LOAD DATA INFILE 't1.txt' INTO TABLE t1<br>3 ->FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"'<br>4 ->LINES TERMINATED BY '/r/n';
1 shell> mysqldump db1 > dump.sql<br>2 shell> mysqladmin create db2<br>3 shell> mysql db2 在使用db1备份文件覆盖db2时不要使用--databases选项因为那样会在备份文件中写入USE db1. <strong>6.4.5.2 从一个服务器复制数据库到另一个服务器(Copy a Database from one Server to Another)</strong>服务器1:<pre class="brush:php;toolbar:false">1 shell>mysqldump --databases db1 > dump.sql
1 shell>mysql 使用mysqldump时添加--database选项备份文件会包含CREATE DATABASE和USE语句,如果不存在则会创建同时设为默认数据库在导入数据。 你可以忽略--database选项,但在导入数据库的时候需要创建一个数据库(如果需要)然后设置为当前数据库。 服务器1:<pre class="brush:php;toolbar:false">1 shell>mysqldump db1 > dump.sql
1 shell> mysqladmin create db1<br>2 shell> mysql db1 所以忽略--database选项就可以选择不同的数据库导入。 <strong>6.4.5.3 备份存储程序(Dumping Stored Programs)</strong>以下是存储程序几个可选选项(存储过程函数,触发器,日志)--events:调度事件--routines:存储过程和函数--triggers:触发器 triggers默认是备份的routines,events需要选择性备份默认是不备份的可以选择跳过--skip-events, --skip-routines, --skip-triggers。 <strong>6.4.5.4 备份表定义和内容分开(Dumping Table Definitions and Content Separately)</strong>--no-data选项告诉mysqldump不备份表数据,备份文件仅包括创建表。相对的--no-create-info选项告诉mysqldump备份仅包含数据。示例:<pre class="brush:php;toolbar:false">1 shell> mysqldump --no-data test > dump-defs.sql<br>2 shell> mysqldump --no-create-info test > dump-data.sql
shell> mysqldump --no-data --routines --event stest > dump-defs.sql
shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql
shell> mysql 因为备份文件没有表数据库,所以可以处理的很快。这可以发现潜在的不兼容,而不需要长时间的数据加载操作。查看备份文件处理时发生的警告或错误。在验证了没有兼容性问题后备份表数据导入到新服务器在现有服务器:<pre class="brush:php;toolbar:false">shell> mysqldump --all-databases --no-create-info > dump-data.sql
shell> mysql 现在检查表内容运行一些测试查询bitsCN.com