一. 数据还原
1. 使用 mysql 命令还原
对于已经备份的包含 CREATE、INSERT 语句的文本文件,可以使用 mysql 命令导入到数据库中。
语法格式如下:
mysql -u user -p [dbname] < filename.sql
user 是执行 backup.sql 文件中语句的用户名; p 表示用户密码;dbname 是数据库名。如果 filename.sgl 文件为mysqldump 工具创建的包含创建数据库语句的文件,执行的时候不需要指定数据库名。
【例】使用 mysql 命令将 F:\backup\booksDB_20180603.sql 文件中的备份导入数据库中。输入的语句如下:
C:\>mysql -u root -p booksDB < F:\backup\booksDB_20180603.sql Enter password: ************* C:\>
执行该语句前,必须先在 MySQL 服务器中创建 booksDB 数据库,如果不存在此数据库,恢复过程将会出错。命令执行成功之后,booksDB_20180603.sql 文件中的语句就会在指定的数据库中恢复以前的表。
如果已经登录 MySQL 服务器,还可以使用 source 命令导入 sql 文件。
soure 语句的语法如下:
source filename【例】使用 root 用户登录服务器,然后使用 soure 导入本地的备份文件 booksDB_20180603.sql 。输入的语句如下:
mysql> use booksDB Database changed mysql> source F:\backup\booksDB_20180603.sql Query OK, 0 rows affected (0.00 sec) …… Query OK, 0 rows affected (0.00 sec) …… Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
2. 直接复制到数据库目录
如果数据库通过复制数据库文件备份,可以直接复制备份的文件到到 MySQL 数据目录下实现还原。通过这种方式还原时,必须保存备份数据的数据库和待还原的数据库服务器的主版本号相同。而且这种方式只对 MyISAM 引擎的表有效。对于 InnoDB 引擎的表不可用。
3. mysqlhotcopy快速恢复
mysqlhotcopy 备份后的文件也可以用来恢复数据库,在 MySQL 服务器停止运行时,将备份的数据库文件拷贝到 MySQL存放数据的位置(MySQL的 Data 文件夹中),重新启动MySQL服务即可。如果以根用户执行该操作,必须指定数据库文件的所有者。语法如下:
chown -R mysql.mysql /var/lib/mysql/dbname
【例】 从 mysqlhotcopy 复制备份恢复数据库,语句如下:
cp -R /usr/backup/test usr/local/mysql/data执行完该语句,重启服务器, MySQL 将恢到备份状态。
二. 数据库迁移
1. 相同版本的 MySQL 数据库之间的迁移
相同版本的 MySQL 数据库之间的迁移就是在主版本号相同的 MySQL 数据库之间进行数据库移动。迁移过程其实就是在源数据库备份和目标数据库还原过程的组合。
【例】将 www.abc.com 主机上的 MySQL 数据迁移到 www.bcd.com主机上:
mysqldump -h www.bac.com -uroot -ppassword dbname | mysql -hwww.bcd.com -uroot -ppasswordmysqldump 导出的数据直接通过管道符“|”,传给 mysql 命令导入主机 www.bcd.com 的数据库中。dbname 为需要迁移的数据库名称,如果要迁移全部的数据库,可使用参数 --all-databases。
2. 不同版本的 MySQL 数据库之间的迁移
因为数据库升级等原因,需要将较旧版本MySQL数据库中的数据迁移到的较新版本的数据库中。
从新版本向旧版本MySQL迁移数据时要特别小心,最好使用 mysqldump 命令导出,然后倒入目标数据库中。
3. 不同数据库之间迁移
不同类型的数据库之间的迁移,是指从把MySQL的数据库转移到其他类型的数据库,例如从MySQL迁移到ORACLE,从ORACLE迁移到MySQL和从MySQL迁移到sqlserver等。
迁移之前,需要了解不同数据库的架构,比较它们之间的差异。不同数据库中定义相同类型的数据的关键字可能会不同。
据库迁移可以使用一些工具,例如,在 Windows 系统下,可以使用 MyODBC 实现 MySQL 和 SQL Servcr 之间的迁移。MySQL官 方提供的工具 MySQL Migration Toolkit 也可以在不同的数据库之间进行数据迁移。
【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版