命令行模式下备份、还原 MySQL 数据库的语句小结

 更新时间:2012年11月11日 19:14:34   作者:  
为了安全起见,需要经常对数据库作备份,或者还原,学会在命令行模式下备份、还原数据库,还是很有必要
为了安全起见,需要经常对数据库作备份,或者还原。对于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的导出、导入功能了,但如果你的数据库体积比较大,作为 Web 应用的 phpMyAdmin 可能会遭遇“超时”而操作失败。所以,学会在命令行模式下备份、还原数据库,还是很有必要的。

1、备份数据库
在 Linux 命令行模式下备份 MySQL 数据库,用的是 mysqldump 命令:

复制代码 代码如下:

mysqldump -u mysqluser -p test_db


对以上命令稍作解释:

•-u 意味着你要指定一个 MySQL 用户名来连接数据库服务,如上面的 mysqluser 即为 MySQL用户名。
•-p 则意味着你需要有一个有效的,与以上用户名对应的密码。
•最后一个参数则是需要备份的那个数据库的名称:test_db

如果直接执行以上命令,紧接着就会提示需要输入 MySQL 密码,数据密码后,它会直接将备份出来的 SQL 脚本显示在屏幕上,这当然不是我们想要的结果。我们需要把数据库备份成一个文件,可用以下命令:
复制代码 代码如下:

mysqldump -u mysqluser -p test_db > test_db.sql

这样,就会在当前目录下备份出一个名为test_db.sql的文件。

当然,如果数据库体积比较大,通常会对备份出来的文件进行压缩,备份和压缩可以在同一行命令内完成:
复制代码 代码如下:

mysqldump -u mysqluser -p test_db | gzip > test_db.sql.gz

压缩的时候,最好再给文件名加上扩展名.gz,以便下次还原数据库的时候心中有数。

2、还原数据库
还原数据库的命令也很简单,如果你备份出来的文件是未压缩的版本,则还原数据库的命令如下:
复制代码 代码如下:

cat test_db.sql | mysql -u mysqluser -p test_db

用cat命令,把 SQL 脚本内容输出给 MySQL 程序以便还原。可以看到,MySQL 后面的几个参数,跟备份时候的一样。

如果是已压缩版本的备份文件,则需用以下命令才能还原:
复制代码 代码如下:

gunzip < test_db.sql.gz | mysql -u mysqluser -p test_db

类似地,用gunzip命令,解压缩,然后把脚本内容输出给 MySQL 程序以便还原。

2012-10-08 update:

如不考虑将 .sql 文件压缩打包的话,也可以用下面两条语句分别导出、导入。
复制代码 代码如下:

mysqldump -u root -p test_db > test_db.sql
mysql -u root -p test_db < test_db.sql


备份MySQL数据库的命令
复制代码 代码如下:

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
复制代码 代码如下:

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql


直接将MySQL数据库压缩备份
复制代码 代码如下:

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表
复制代码 代码如下:

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库
复制代码 代码如下:

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构
复制代码 代码如下:

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库
复制代码 代码如下:

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令
复制代码 代码如下:

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库
复制代码 代码如下:

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器
复制代码 代码如下:

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

相关文章

  • MySQL之同表一个字段如何赋值给另一个字段

    MySQL之同表一个字段如何赋值给另一个字段

    这篇文章主要介绍了MySQL之同表一个字段如何赋值给另一个字段问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Windows10下mysql 8.0.12 解压版安装图文教程

    Windows10下mysql 8.0.12 解压版安装图文教程

    这篇文章主要为大家详细介绍了Windows10下mysql 8.0.12 解压版安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySQL 去除字符串中的括号以及括号里的所有内容

    MySQL 去除字符串中的括号以及括号里的所有内容

    这篇文章主要介绍了MySQL 去除字符串中的括号以及括号里的所有内容,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • MySQL ifnull()函数的具体使用

    MySQL ifnull()函数的具体使用

    本文主要介绍了MySQL ifnull()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Navicat出现无法远程连接MySql服务器问题的解决办法

    Navicat出现无法远程连接MySql服务器问题的解决办法

    这篇文章主要介绍了Navicat出现无法远程连接MySql服务器问题的解决办法,文章通过思路判断出现问题的情况,然后进行逐一排查,确定问题出现的原因并给出解决办法,本文对此问题的解决介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • MySQL中dd::columns表结构转table过程及应用详解

    MySQL中dd::columns表结构转table过程及应用详解

    MySQL的dd表是用来存放表结构和各种建表信息的,客户端建的表都存在mysql.table和mysql.columns表里,还有一个表mysql.column_type_elements比较特殊,用来存放SET和ENUM类型的字段集合值信息,对mysql dd::columns表结构相关知识感兴趣的朋友一起看看吧
    2022-09-09
  • MySQL8.0修改密码的正确姿势分享

    MySQL8.0修改密码的正确姿势分享

    如果当初设置了一个很复杂的数据库密码,是很可能忘记的,下面这篇文章主要给大家介绍了关于MySQL8.0修改密码的正确姿势,需要的朋友可以参考下
    2022-03-03
  • Linux centos7环境下MySQL安装教程

    Linux centos7环境下MySQL安装教程

    这篇文章主要为大家详细介绍了Linux centos7环境下MySQL安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • mysql使用from与join两表查询的区别总结

    mysql使用from与join两表查询的区别总结

    这篇文章主要给大家介绍了关于mysql使用from与join两表查询的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • processlist命令 查看mysql 线程

    processlist命令 查看mysql 线程

    processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。
    2009-04-04

最新评论