mysqldump实现所有数据备份与恢复

备份

使用mysqldump命令,使用时mysqldump最好使用全路径名,可以使用find / -name mysqldump命令来查看路径。

备份命令如下:
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -B --all-databases > /tmp/back.sql

--all-databases  表示备份所有数据库
-B  参数作用是备份的sql文件中就有创建数据库的语句了
  • 但是执行命令时可能会出现以下错误
mysqldump: [Warning] Using a password on the command line interface can be insecure.

ps:出现了以上警告,还是依然执行成功;如果未执行成功,可尝试以下解决方式。

  • 解决
    修改my.cnf配置文件,在[client]下添加三行命令
[client]
host=localhost
user=root
password=root
//用户名密码根据实际情况填写

配置完之后重启数据库服务,运行备份命令。
如果仍然出错,则采用另外的备份命令,如下:
/usr/local/mysql/bin/mysqldump --defaults-extra-file=/etc/my.cnf -B --all-databases > /back.sql

--defaults-extra-file  参数指定的是mysql的配置文件

参考:
https://dev.mysql.com/doc/refman/5.6/en/password-security-user.html?spm=5176.7737807.2.3.D6p7hh

  • 结果
    备份成功之后就可以在当前目录下看到back.sql

还原

将back.sql备份文件传输到需要还原数据的服务器中,登录mysql,执行source back.sql命令,即可还原数据:

mysql > source /tmp/back.sql

另注

备份单个库

备份某个数据库的结构和数据/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -B 数据库名> back.sql

备份某个数据库的结构/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -d -B 数据库名> back.sql

备份某个数据库的数据/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -t -B 数据库名> back.sql

-B 的参数作用,会添加以下sql语句,这样在恢复数据时就无需自己创建相应的数据库:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `girls` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `girls`;
#girls为备份的数据库

备份单个表

/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -B 数据库名 表名> back.sql

常见问题

备份数据时出现错误:
Got error: 2002: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) when trying to connect

在执行备份命令时加上-h参数,例如:
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -h127.0.0.1 -B --all-databases > /tmp/back.sql

参考博客:
https://www.cnblogs.com/yanghongtao/p/10897282.html
https://www.cnblogs.com/wt645631686/p/7832993.html
https://www.cnblogs.com/flyfly123/p/12325770.html
https://www.cnblogs.com/emanlee/p/5410177.html

猜你喜欢

转载自blog.csdn.net/qq_44209563/article/details/107525997