当前位置 主页 > 服务器问题 > Linux/apache问题 >

    MySql数据库备份的几种方式

    栏目:Linux/apache问题 时间:2019-12-07 16:02

    mysqldump工具备份

    备份整个数据库

    $> mysqldump -u root -h host -p dbname > backdb.sql

    备份数据库中的某个表

    $> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
    

    备份多个数据库

    $> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql

    备份系统中所有数据库

    $> mysqldump -u root -h host -p --all-databases > backdb.sql

    直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份

    windowns: installpath/mysql/data

    linux: /var/lib/mysql

    在复制前需要先执行如下命令:

    MYSQL> LOCK TABLES;
    # 在复制过程中允许客户继续查询表,
    MYSQL> FLUSH TABLES;
    # 将激活的索引页写入硬盘。
    

    mysqlhotcopy工具备份

    备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。

    要使用该备份方法必须可以访问备份的表文件。

    $> mysqlhotcopy -u root -p dbname /path/to/new_directory;
    #将数据库复制到new_directory目录。
    

    mysql命令导入sql文件还原

    $> mysql -u root -p [dbname] < backup.sql
    # 执行前需要先创建dbname数据库,如果backup.sql是mysqldump创建的备份文件则执行是不需要dbname。
    MYSQL> source backup.sql;
    # 执行source命令前需要先选择数据库。

    直接复制数据库目录还原

    注: 该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。

    关闭mysql服务。 将备份的文件或目录覆盖mysql的data目录。 启动mysql服务。 对于linux系统,复制完文件后需要将文件的用户和组更改为mysql运行的用户和组。

    mysqlhotcopy快速恢复

    停止mysql服务,将备份数据库文件复制到存放数据的位置(mysql的data文件夹),重先启动mysql服务即可(可能需要指定数据库文件的所有者)。

    $> cp -R /usr/backup/test /usr/local/mysql/data
    # 如果恢复的数据库已经存在,则使用DROP语句删除已经存在的数据库之后,恢复才能成功,还需要保证数据库版本兼容。
    

    相同版本数据库之间迁移

    $> mysqldump -h www.abc.com -uroot -p password dbname | 
    $> mysqldump -h www.bcd.com -uroot -p password
    # 将服务器www.abc.com的数据库dbname迁移到服务器www.bcd.com的相同版本数据库上。
    

    不同版本的mysql数据库之间的迁移

    备份原数据库。

    卸载原数据库。

    安装新数据库。

    在新数据库中还原备份的数据库数据。

    数据库用户访问信息需要备份mysql数据库。

    默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。

    不同数据库之间的迁移

    MyODBC工具实现MySQL和SQL Server之间的迁移。

    MySQL Migration Toolkit工具。

    表的导出和导入

    SELECT ...... INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。