MySQL——数据还原、数据库迁移

时间:2022-09-28 14:19:51

一.   数据还原

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 -ppassword
    mysqldump  导出的数据直接通过管道符“|”,传给  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版