mysql数据备份与还原到lixu_mysql 数据备份与还原

数据备份

1.mysqldump

备份单个数据库中的所有表

mysqldump -u root -p testdb >/www/test.sql

备份数据库中的某个表

mysqldump -u root -p testdb user >/www/user.sql

备份多个数据库

mysqldump -u root -p --databases testdb fgame >/www/my.sql

备份所有的表

mysqldump -u root -p --all-databases >/www/all.sql

2.直接复制整个数据库目录

要想保证数据的一致性,备份前需要对表执行LOCK TABLES操作,然后执行FLUSH TABLES。也可以停止mysql服务器再进行备份

注意:这种方法对InnoDB存储引擎的表不适用

3.使用mysqlhotcopy工具快速备份

这个执行文件在 mysql/bin 文件夹下

mysqlhotcopy -u root -p test /www/data

我测试没有成功

数据还原

1.使用mysql命令还原

mysql -u root -p testdb < /www/testdb.sql       //执行语句前必须现在MySQL中创建testdb表

也可以在登陆mysql命令行后使用source

source /www/testdb.sql

注意:执行source命令前,必须使用use语句选择数据库

2.直接复制数据到数据库目录

注意:文件的读写权限

3.mysqlhotcopy

不建议使用

数据库迁移

1.相同版本mysql之间的迁移

将www.abc.com主机上的MySQL数据库全部迁移到www.bcd.com主机上。在www.abc.com主机上执行的命令如下:

mysqldump –h www.abc.com –uroot –ppassword dbname | mysql –h www.bcd.com –uroot –ppassword

2.不同版本的MySQL数据库之间的迁移

最好使用mysqldump 导出再导入

3.不同数据库之间的切换

迁移之前,要了解不同数据库的架构,比较语句的差异,不同数据库中定义的相同类型的数据关键字可能会不同

表的导出和导入

1.用SELECT…INTO OUTFILE导出文本文件

SELECT *  FROM test.person INTO OUTFILE '/www/person.txt';

【例1】

使用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';

【例2】

使用SELECT...INTO OUTFILE将test数据库中的person表中的记录导出到文本文件,使用LINES选项,要求每行记录以字符串“> ”开始,以“”字符串结尾

SELECT * FROM test.person INTO OUTFILE "C:/person2.txt"

LINES

STARTING BY '> '

TERMINATED BY '';

SELECT * FROM test.person INTO OUTFILE "C:/person2.txt"

LINES

STARTING BY '> '

TERMINATED BY '\r\n';

2.用mysqldump 导出文本文件

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

使用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

3.使用mysql命令

mysql -u root -p --execute "select 语句" testdb > testdb.txt

【例1】使用mysql命令导出test数据库中person表中的记录到html文件

mysql -u root -p --html --execute="SELECT * FROM person;" test > C:\person5.html

【例2】使用mysql命令导出test数据库中person表中的记录到xml文件

mysql -u root -p --xml --execute="SELECT * FROM person;" test > C:\person6.xml

4.导入.sql文件

常用source 命令

如mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source /www/bbs_server_backup.sql

导入文本文件

1.用LOAD DATA INFILE方式导入文本文件

使用LOAD DATA命令将C:\person0.txt文件中的数据导入到test数据库中的person表

LOAD DATA  INFILE 'C:/person0.txt' INTO TABLE test.person;

【例】使用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';

2.使用mysqlimport命令导入文本文件

命令在mysql/bin文件夹下

./mysqlimport -u root -p booksDB /test/books.txt     //booksDB是数据库名,books必须是已经存在的表名

【例】使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值