mysql数据库备份和还原
mysql数据库备份和还原
1.mysqldump是mysql提供的一个非常有用的数据库备份工具,mysqldump命令执行的时候,可以将数据库备份成一个文本文件,该文件中实际上包含了多个create和insert语句,使用这些语句可以重新创建表和插入语句。
2.数据库备份
(1)mysqldump备份的基本语法
mysqldump -u user -h host -p password dbname[tbname,[tbname]]>filename.sql
user:用户名称;host:登录用户的主机名称;password登录密码;dbname:需要备份的数据库名称;
tbname为dbname数据库中需要备份的数据表,可以指定多个需要备份的数据表;
“>”:告诉mysqldump将备份数据表的定义和数据写入备份文件;
filename.sql:备份文件的名称
(2)使用mysqldump备份数据库中的某个表
mysqldump -u user -h host -p password dbname [tbname,[tbname...]]>filename.sql
tbname表示数据库中的表名,多个表名之间用空格隔开。
备份表和备份数据库中所有表的语句不同的地方在于,要在你数据库名称dbname之后指定需要备份的表的名称。
(3)使用mysqldump备份多个数据库
mysqldump -u user -h host -p password --databases [dbname,[dbname...]]>filename.sql
–databases参数之后,必须指定至少一个数据库名称,多个数据库名称之间用空格隔开。
5.使用mysqldump备份数据库中的所有数据库
mysqldump -u user -h host -p password --all-databases>filename.sql
–all-databases参数可以在后面不指定数据库的名称。
注:如果是在服务器上面进行备份,并且表全是MyISAM表,应该考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。
(4)直接复制整个数据库目录
因为mysql表保存为文件方式,所以可以直接复制mysql数据库的存储目录及文件进行备份。这是一种简单、快速、有效的备份方式。想要保持备份的一致性,备份前需要对相关表执行LOCK TABLES操作,然后对表执行FLUSH TABLES。这样当复制数据库目录中的文件时,允许其他客户急需查询表。需要FLUSH TABLES语句来确保开始备份前将所有激活的索引页写入硬盘。当然,也可以停止mysql的服务在进行备份。
这个方法简单,但是不是最好的方法,因为它对于InnoDB存储引擎的表不支持。使用这种方法备份的数据最好还原到相同版本的服务器中,不同的版本可能不兼容。
(5)使用mysqlhotcopy工具快速备份
mysqlhotcopy是一个Perl脚本,它使用LOCK TABLES,FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快途径,但它只能运行在数据库目录所在的服务器上,并且只能备份MyISAM类型的表。只是将表所在目录复制到另一个位置,只能用于备份MyISAM和ARCHIVE表。
3.数据库还原
(1)使用mysql命令还原
mysql -u user -p[dbname]<filename.sql
(2)直接复制到数据库目录
如果数据库通过复制数据库文件备份,可以直接备份的文件到mysql数据目录下实现还原。通过这种方式还原时,必须保存备份数据的数据库和带还原的数据库服务器的主版本号相同。而且这种方式只对MyISAM存储引擎有效,对于InnoDB不可用,执行还原前关闭mysql服务,将备份的文件或目录覆盖mysql的data目录,启动mysql服务。
(3)mysqlhotcopy快速恢复
mysqlhotcopy备份后的文件也可以用来恢复数据库,在mysql服务器停止运行时,将备份的数据库文件复制到mysql存储数据的位置,重新启动mysql服务即可。如果以根据用户选择执行该操作,必须指定数据库文件的所有者。
4.数据库迁移
(1)概念:数据库迁移就是把数据从一个系统迁移到另一个系统上
(2)数据库迁移有以下原因:
需要安装新的数据库服务器
mysql版本更新
数据库管理系统的变更