mysql(7)====mysql 备份与还原-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

mysql(7)====mysql 备份与还原

简介:

windows mysql 备份与还原 


步骤1:使用mysqldump命令将suppliers表备份到文件C:\bktestdir\suppliers_bk.sql。
mysqldump -u root -p test suppliers > C:\bktestdir\suppliers_bk.sql

步骤2:使用mysql命令还原suppliers表到test数据库中
DELETE FROM suppliers;
source C:/bktestdir/suppliers_bk.sql;

步骤3:使用SELECT… INTO OUTFILE语句导出suppliers表中的记录,导出文件位于目录C:\bktestdir下,名称为suppliers_out.txt
SELECT * FROM test.suppliers INTO OUTFILE "C:/bktestdir/suppliers_out.txt"
  FIELDS
    TERMINATED BY ','
    ENCLOSED BY '\"'
  LINES
    STARTING BY '<'
    TERMINATED BY '>\r\n';

步骤4:使用LOAD DATA INFILE语句导入suppliers_out.txt数据到suppliers表。
LOAD DATA INFILE 'C:/bktestdir/suppliers_out.txt' INTO TABLE test.suppliers
  FIELDS
    TERMINATED BY ','
    ENCLOSED BY '\"'
  LINES
    STARTING BY '<'
    TERMINATED BY '>\r\n';

步骤5:使用musqldump命令将suppliers表中的记录导出到文件C:\bktestdir\suppliers_html.html。
mysql -u root -p --html --execute="SELECT * FROM suppliers;" test > C:/bktestdir/suppliers_html.html


linux  mysql 备份与还原
备份操作
(1)导出指定库中的部分表
mysqldump [选项] 库名 [表名1] [表名2] .... > /备份路径/备份文件名
(2)导出一个或多个完整的库(包括其中所有的表)
mysqldump [选项] --databases 库名 1  [库名 2] .... > /备份路径/备份文件名
(3)备份mysql 服务器中的所有库
mysqldump [选项]--opt  --all-databases > /备份路径/备份文件名

还原操作
mysql [选项] [库名] [表名] < /备份路径/备份文件名

举例:

随便找一个数据库,创建张表插入数据

备份(-u 指定登录用户 -p 数据库名 表名)   备份名称
mysqldump -u root -p dingxue  student > dingxue.sql
Enter password:****

还原(还原表直接把表放到指定的数据库即可)
mysql -u root -p dingxue  < dingxue.sql



                                                       

/***************************样例表***************************/
CREATE DATABASE booksDB;
user booksDB;

CREATE TABLE books
(
  bk_id  INT NOT NULL PRIMARY KEY,
  bk_title VARCHAR(50) NOT NULL,
  copyright YEAR NOT NULL
);
INSERT INTO books
VALUES (11078, 'Learning MySQL', 2010),
(11033, 'Study Html', 2011),
(11035, 'How to use php', 2003),
(11072, 'Teach youself javascript', 2005),
(11028, 'Learing C++', 2005),
(11069, 'MySQL professional', 2009),
(11026, 'Guide to MySQL 5.5', 2008),
(11041, 'Inside VC++', 2011);

CREATE TABLE authors
(
  auth_id     INT NOT NULL PRIMARY KEY,
  auth_name  VARCHAR(20),
 auth_gender CHAR(1)
);
INSERT INTO authors  
VALUES (1001, 'WriterX' ,'f'),
(1002, 'WriterA' ,'f'),
(1003, 'WriterB' ,'m'),
(1004, 'WriterC' ,'f'),
(1011, 'WriterD' ,'f'),
(1012, 'WriterE' ,'m'),
(1013, 'WriterF' ,'m'),
(1014, 'WriterG' ,'f'),
(1015, 'WriterH' ,'f');

CREATE TABLE authorbook
(
  auth_id  INT NOT NULL,
  bk_id   INT NOT NULL,
  PRIMARY KEY (auth_id, bk_id),
  FOREIGN KEY (auth_id) REFERENCES authors (auth_id),
  FOREIGN KEY (bk_id) REFERENCES books (bk_id)
);

INSERT INTO authorbook
VALUES (1001, 11033), (1002, 11035), (1003, 11072), (1004, 11028),
(1011, 11078), (1012, 11026), (1012, 11041), (1014, 11069);

/***************************样例表***************************/


【例14.1】使用mysqldump命令备份数据库中的所有表
mysqldump -u root -p booksdb > C:/backup/booksdb_20110101.sql

【例14.2】备份booksDB数据库中的books表
mysqldump -u root -p booksDB books > C:/backup/books_20110101.sql

【例14.3】使用mysqldump备份booksDB和test数据库
mysqldump -u root -p --databases  booksDB test> C:\backup\books_testDB_20110101.sql

【例14.4】使用mysqldump备份服务器中的所有数据库
mysqldump  -u root -p --all-databases > C:/backup/alldbinMySQL.sql

【例14.5】使用mysqlhotcopy备份test数据库到/usr/backup目录下
mysqlhotcopy  -u root -p test /usr/backup

【例14.6】使用mysql命令将C:\backup\booksdb_20110101.sql文件中的备份导入到数据库中
mysql -u root-p booksDB < C:/backup/booksdb_20110101.sql

【例14.7】使用root用户登录到服务器,然后使用souce导入本地的备份文件booksdb_20110101.sql
use booksdb;
source C:/backup/booksdb_20110101.sql

【例14.8】从mysqlhotcopy拷贝的备份恢复数据库
cp –R  /usr/backup/test usr/local/mysql/data

【例14.9】将www.abc.com主机上的MySQL数据库全部迁移到www.bcd.com主机上。在www.abc.com主机上执行的命令如下:
mysqldump -h www.bac.com -uroot -ppassword  dbname | 
mysql -hwww.bcd.com -uroot -ppassword

【例14.10】使用SELECT...INTO OUTFILE将test数据库中的person表中的记录导出到文本文件
SELECT *  FROM test.person INTO OUTFILE "C:/person0.txt";

【例14.11】使用SELECT...INTO OUTFILE将test数据库中的person表中的记录导出到文本文件,使用FIELDS选项和LINES选项,要求字段之间使用逗号‘,’间隔,所有字段值用双引号括起来,定义转义字符定义为单引号‘\’’
SELECT * FROM test.person INTO OUTFILE "C:/person1.txt"
  FIELDS 
    TERMINATED BY ','
    ENCLOSED BY '\"'
    ESCAPED BY '\''
  LINES 
    TERMINATED BY '\r\n';

【例14.12】使用SELECT...INTO OUTFILE将test数据库中的person表中的记录导出到文本文件,使用LINES选项,要求每行记录以字符串“> ”开始,以“<end>”字符串结尾
SELECT * FROM test.person INTO OUTFILE "C:/person2.txt"
  LINES 
    STARTING BY '> '
    TERMINATED BY '<end>';

SELECT * FROM test.person INTO OUTFILE "C:/person2.txt"
  LINES 
    STARTING BY '> '
    TERMINATED BY '<end>\r\n';

【例14.13】使用mysqldump将test数据库中的person表中的记录导出到文本文件
mysqldump -T C:/ test person -u root -p

【例14.14】使用mysqldump命令将test数据库中的person表中的记录导出到文本文件,使用FIELDS选项,要求字段之间使用逗号‘,’间隔,所有字符类型字段值用双引号括起来,定义转义字符定义为问号‘?’,每行记录以回车换行符“\r\n”结尾
mysqldump -T C:\backup test person -u root -p --fields-terminated-by=, --fields-optionally-enclosed-by=\" --fields-escaped-by=? --lines-terminated-by=\r\n

【例14.15】使用mysql语句导出test数据库中person表中的记录到文本文件
mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt

【例14.16】使用mysql命令导出test数据库中person表中的记录到文本文件,使用--vertical参数显示结果
mysql -u root -p --vertical --execute="SELECT * FROM person;" test > C:\person4.txt

【例14.17】使用mysql命令导出test数据库中person表中的记录到html文件
mysql -u root -p --html --execute="SELECT * FROM person;" test > C:\person5.html

【例14.18】使用mysql命令导出test数据库中person表中的记录到xml文件
mysql -u root -p --xml --execute="SELECT * FROM person;" test > C:\person6.xml

【例14.19】使用LOAD DATA命令将C:\person0.txt文件中的数据导入到test数据库中的person表
LOAD DATA  INFILE 'C:/person0.txt' INTO TABLE test.person;

【例14.20】使用LOAD DATA命令将C:\person1.txt文件中的数据导入到test数据库中的person表,使用FIELDS选项和LINES选项,要求字段之间使用逗号‘,’间隔,所有字段值用双引号括起来,定义转义字符定义为单引号‘\’’
LOAD DATA  INFILE 'C:/person1.txt' INTO TABLE test.person
  FIELDS 
    TERMINATED BY ','
    ENCLOSED BY '\"'
    ESCAPED BY '\''
  LINES 
    TERMINATED BY '\r\n';

【例14.21】使用mysqlimport命令将C:\backup目录下的person.txt文件内容导入到test数据库中,字段之间使用逗号‘,’间隔,字符类型字段值用双引号括起来,定义转义字符定义为问号‘?’,每行记录以回车换行符“\r\n”结尾
mysqlimport -u root -p test C:/backup/person.txt --fields-terminated-by=, --fields-optionally-enclosed-by=\" --fields-escaped-by=? --lines-terminated-by=\r\n



本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1974729,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章