什么是MySQL?
MySQL是一种流行的数据库管理解决方案,它使用SQL查询语言来访问和操作数据。它可以轻松地用于管理来自网站或应用程序的数据。 备份对于任何类型的数据都很重要,在谈论数据库时,这尤其重要。 MySQL可以以几种不同的方式备份,我们将在本文中讨论。 对于本教程,我们将使用安装了MySQL 5.5的Ubuntu 12.04 VPS。大多数现代发行版和最新版本的MySQL应该以类似的方式操作。
如何用mysqldump备份MySQL数据库
一个与MySQL备份的最常见的方式是使用一个被称为
“mysqldump的 ”命令。
备份
有一篇文章
如何导出使用mysqldump数据库在这里。该命令的基本语法是:
mysqldump -u username -p database_to_backup > backup_name.sql
恢复
要恢复使用mysqldump创建的数据库转储,您只需要将文件重定向到MySQL。 我们需要创建一个空白数据库来容纳导入的数据。首先,通过键入以下命令登录MySQL:
mysql -u username -p
创建一个新的数据库,它将保存数据转储中的所有数据,然后退出MySQL提示符:
CREATE DATABASE database_name;
exit
接下来,我们可以通过发出以下命令将转储文件重定向到我们新创建的数据库中:
mysql -u username -p database_name < backup_name.sql
您的信息现在应该恢复到您创建的数据库。
如何将MySQL表备份到文本文件
您可以使用MySQL中的select语句将表中的数据直接保存到文本文件中。 此操作的一般语法是:
SELECT * INTO OUTFILE 'table_backup_file' FROM name_of_table;
此操作将将表数据保存到MySQL服务器上的文件。如果已经有一个选择了名称的文件,它将失败。
注意:此选项仅保存表数据。
如果你的表结构很复杂,必须保存,最好使用另一种方法!
如何使用automysqlbackup备份MySQL信息
有一个叫
“automysqlbackup”实用程序,它是在Ubuntu软件仓库。 此实用程序可以安排为定期自动执行备份。 要安装此程序,请在终端中键入以下内容:
sudo apt-get install automysqlbackup
键入以下命令运行该命令:
sudo automysqlbackup
automysqlbackup的主配置文件位于“/ etc / default / automysqlbackup”。使用管理权限打开它:
sudo nano /etc/default/automysqlbackup
你可以看到,这个文件,默认情况下,通过位于“/etc/mysql/debian.cnf”的MySQL文件分配许多变量。它包含维护登录信息 从此文件,它读取必须备份的用户,密码和数据库。 备份的默认位置为“/ var / lib / automysqlbackup”。搜索此目录以查看备份的结构:
ls /var/lib/automysqlbackup
daily monthly weekly
如果我们查看每日目录,我们可以看到每个数据库的子目录,其中是从命令运行时的gzip压缩sql转储:
ls -R /var/lib/automysqlbackup/dailey
.:
database_name information_schema performance_schema
./database_name:
database_name_2013-08-27_23h30m.Tuesday.sql.gz
./information_schema:
information_schema_2013-08-27_23h30m.Tuesday.sql.gz
./performance_schema:
performance_schema_2013-08-27_23h30m.Tuesday.sql.gz
Ubuntu安装了一个cron脚本,该程序将每天运行它。它将组织文件到相应的目录。
如何在使用复制时进行备份
可以使用MySQL复制以上述技术备份数据。 复制是一个过程
从一台服务器的数据镜像到另一台服务器(主从)或
镜像要么服务器到另一个(主-主)所做的更改 。 虽然复制允许数据镜像,但当您尝试保存特定时间点时,它会遇到困难。这是因为它不断地复制动态系统的变化。 为了避免这个问题,我们可以:
临时禁用复制
您可以通过发出以下命令临时禁用从站的复制:
mysqladmin -u user_name -p stop-slave
另一个选项,它不完全停止复制,但把它放在暂停,可以说,可以通过输入:
mysql -u user_name -p -e 'STOP SLAVE SQL_THREAD;'
复制停止后,您可以使用上述方法之一进行备份。这允许您在备份从属服务器时使主MySQL数据库保持联机。 完成后,通过键入以下命令重新启动复制:
mysqladmin -u user_name -p start-slave
使备份计算机暂时为只读
您还可以通过暂时使数据为只读来确保服务器内的一致数据集。 您可以在主系统或从系统上执行这些步骤。 首先,登录MySQL具有足够的权限来操纵数据:
mysql -u root -p
接下来,我们可以将所有缓存的更改写入磁盘,并通过键入以下命令将系统设置为只读:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
现在,使用mysqldump执行备份。 备份完成后,通过键入以下命令将系统恢复到其原始工作顺序:
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
关于不再推荐的技术的注释
mysqlhotocopy
MySQL包含备份数据库赶紧叫
“mysqlhotcopy的 ”一个Perl脚本。此工具可用于快速备份本地计算机上的数据库,但它有限制,使我们避免推荐它。 最重要的原因是我们不会在这里介绍mysqlhotcopy的用法,因为它只适用于使用“MyISAM”和“Archive”存储引擎存储的数据。 大多数用户不更改其数据库的存储引擎,从MySQL 5.5开始,默认存储引擎是“InnoDB”。此类型的数据库无法使用mysqlhotcopy进行备份。 此脚本的另一个限制是它只能在保存数据库存储的同一台机器上运行。这会阻止从远程计算机运行备份,这在某些情况下可能是一个主要的限制。
复制表文件
有时建议的另一种方法是简单地复制MySQL存储其数据的表文件。 这种方法有一个与“mysqlhotcopy”相同的原因。 虽然使用此技术与将文件存储在文件中的存储引擎是合理的,但是InnoDB(新的默认存储引擎)不能以这种方式备份。
结论
在MySQL中执行备份有许多不同的方法。所有都有他们的好处和弱点,但有些更容易实施,比其他人更广泛有用。 您选择部署的备份方案将在很大程度上取决于您的个人需求和资源,以及您的生产环境。无论您决定使用何种方法,请务必验证备份并练习还原数据,以确保进程正常运行。