MySQL 备份/恢复问题

标签 mysql

我需要将 MySQL 数据库移动到新位置。 根据workbench,数据库大小只有200MB,但有些表有数百万行,报告索引和数GB的数据长度。结果,EXPORT 的大小为 15GB,导出 DB 并将其复制到新位置需要花费数小时,再次导入需要花费更多时间。在此过程中网站需要离线,这样数据库才不会发生变化。第一次尝试超过 36 小时,导入失败。 这太长了,有没有比可怕的导入/导出更好/更快的方法呢?我习惯于使用 MSSQL,它可以非常快速地完成这类事情,使数据库脱机,将文件复制到新位置,安装数据库,完成。这需要几分钟,而且非常简单。一直不明白为什么 MySQL 让这变得如此困难。

最佳答案

Percona XtraBackup 是一个有用的工具,如果您有 InnoDB 表,innobackupex 将有助于进行热备份和恢复。

同时配置 InnoDB File-Per-Table备份将类似于 MyISAM 表。

如果你有 MyISAM 表,过程是:

  1. 停止服务器源服务器。
  2. 复制(并压缩)您的 database folder在安全的地方,例如:/var/lib/mysql/your_database
  3. 停止MySQL服务器后,将文件恢复到目标服务器的同一个地方。
  4. 启动目标服务器。

两台服务器的版本必须有最小的差异,因为 MyISAM 有自己的格式版本。

关于MySQL 备份/恢复问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684499/

相关文章:

c# - 根据用户名计算日期之间所花费的时间

php - 仅返回重复行中的一行

php - 特殊条件的 SQL 查询不起作用

javascript - 清除表单并显示新评论 jquery php

mysql - 通过 TTL 持久性将数据从 Cassandra 实时复制到 ElasticSearch

php - 如何将查询语句转换为 DB::raw eloquent laravel?

mysql - 从具有相同列名和组 tehm 的两个不同表中进行计数(如果名称相同)

mysql - 使用 SQL 关键字作为列的别名

mysql - 在 SQL 中声明变量的正确方法是什么?

mysql - 将 2 个具有不同列数的 select 语句组合在一起,其中第一个语句已使用 JOIN