mysql的备份和还原

mysql的备份和还原

 

一  备份

mysql提供了专门做备份的程序(命令) – mysqldump。使用这个命令不需要你登录进mysql,因为它不是mysql内部的命令,命令的格式如下:

mysqldump -u root -p [dbname]>[backup file]

当执行上面的命令后,就会要求输入的root的密码,输入后备份就开始。备份的文件就生成在执行命令的当前目录。

 

1. 备份单个数据库

mysqldump -u root -p mydb1 > mydb1.sql 

 

2. 备份多个数据库

mysqldump -u root -p –databases mydb1 mydb2 > mydb.sql

注意如果你没有加

–databases

这个选项,意义就变成了备份数据库mydb1的mydb2表了。

 

3. 备份所有的数据库

mysqldump -u root -p –all-databases > allmydb.sql

不过一般不要这么做,因为mysql和test这2个mysql默认已有的数据库你大部分情况不需要备份的。

 

mysqldump: Couldn't execute 'SELECT @@GTID_MODE': Unknown system variable 'GTID_MODE'

原因就不解释了,直接告诉你解决方法,加上下面的选项,注意s前面是2杠

–-set-gtid-purged=OFF

 

如果你遇到类似这样的错误,很有可能是你使用了不同版本的mysql的server和client,解决办法就是使用和服务器相同版本的mysql的客户端。

 

mysqldump: Couldn't execute 'show create table `general_log`': Table 'mysql.general_log' doesn't exist 

 

 

二  还原

 

还原则使用mysql命令就可以。格式如下:

mysql -u root -p [database] < [database file]

 

这里要注意一点,需要保证database是存在的,如果不存在先使用下面的命令创建:

create database XXXX

 

例如:

mysql -u root -p mydb1 < mydb1.sql 

 

三 备注

 

上面提到的备份还原方法只是数据表数据,trigger,但是不包括stored procedure。想要备份stored procedure,需要额外的参数,

 

 

  • –routines – FALSE by default
  • –triggers – TRUE by default

就是-rountines

这个参数默认是false,而triggers默认就是true,这就是为什么triggers会被备份,而stored procedure不会的原因。

 

比如你想连同stored procedure一起备份就是:

 

mysqldump -uroot -p mydb1 -routines > mydb1.sql

 

 

完。

 

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

5 thoughts on “mysql的备份和还原

  1. Pingback: 不同版本的mysql数据迁移 | 360converter博客360converter博客

  2. Pingback: 不暂停MySQL服务的情况下备份数据库 | 360converter博客360converter博客

Leave a Reply

Your email address will not be published. Required fields are marked *