我想使用<在这里插入最喜欢的PHP框架> / plain php
/我的第二喜欢的语言对mysql数据库中的某些表进行定期备份。我希望它是自动化的,以便以后出现问题时可以还原备份。
我尝试执行查询并将结果保存到文件中。最终得到看起来像这样的代码。
$sql = 'SELECT * FROM my_table ORDER id DESC';
$result = mysqli_query( $connect, $sql );
if( mysqli_num_rows( $result ) > 0){
$output=fopen('/tmp/dumpfile.csv','w+');
/* loop through recordset and add that to the file */
while( $row = mysqli_fetch_array( $result ) ) {
fputcsv( $output, $row, ',', '"');
}
fclose( $output );
}
我在本地计算机上设置了cron作业,以使用此代码访问网页。我还尝试在服务器上编写cronjob,以CLI身份运行脚本。但这引起了各种各样的问题。这些包括
我也听说过mysqldump
。我尝试使用exec
它运行,但是会产生错误。
我该如何解决?
http://dev.mysql.com/doc/refman/5.7/zh-CN/select-
into.html
SELECT … INTO OUTFILE将选定的行写入文件。可以指定列和行终止符以产生特定的输出格式。
这是一个完整的示例:
SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
该文件保存在服务器上,并且所选路径必须可写。尽管此查询可以通过PHP和Web请求执行,但最好通过mysql控制台执行。
可以使用LOAD DATA INFILE将以这种方式导出的数据导入另一个数据库。
尽管此方法在遍历结果集并逐行保存到文件方面具有优越性, 但不如使用…好。
mysqldump在许多方面都优于SELECT
INTO OUTFILE,生成CSV只是此命令可以执行的许多操作之一。
mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。它转储一个或多个MySQL数据库以进行备份或转移到另一台SQL服务器。mysqldump命令还可以生成CSV,其他定界文本或XML格式的输出。
理想情况下,应从您的shell调用mysqldump。可以在php中使用exec来运行它,但是由于产生转储可能会花费很长时间,具体取决于数据量,并且php脚本通常只运行30秒,因此您需要将其作为后台进程运行。
mysqldump并非没有很多问题。
它并非旨在作为用于备份大量数据的快速或可扩展解决方案。对于大数据量,即使备份步骤花费了合理的时间,恢复数据也可能会非常缓慢,因为重播SQL语句会涉及磁盘I
/ O进行插入,创建索引等。
一个经典的例子看到了这个问题:使用python的MySQL备份导致服务器崩溃,其中一个mysqldump似乎在较早的一个mysqldump完成之前启动,并使网站完全没有响应。
复制使数据可以从一台MySQL数据库服务器(主服务器)复制到一台或多台MySQL数据库服务器(从服务器)。默认情况下,复制是异步的;从站不需要永久连接就可以接收来自主站的更新。根据配置,您可以复制数据库中的所有数据库,选定的数据库甚至选定的表。
因此,复制的操作与SELECT INTO OUTFILE
或有所不同。msyqldump
理想的做法是使本地副本中的数据保持最新状态(本来可以说得很完美,但有一个称为“从属滞后”的情况)。另一方面,如果您使用计划任务mysqldump
每24小时运行一次。想象一下,如果服务器在23小时后崩溃,会发生什么情况?
每次运行mysqldump时,您都会产生大量数据,请定期进行处理,您会发现硬盘已满,或者文件存储账单即将付诸东流。通过复制,只有更改才能传递到服务器(通过使用所谓的binlog)
复制的替代方法是使用Percona XtraBackup。
Percona XtraBackup是基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。
尽管是Percona,但它与Mysql和Mariadb兼容。它具有执行增量备份的能力,而这正是mysqldump的最大局限。
本文向大家介绍Shell脚本自动备份MySQL到FTP并定期清理过期备份,包括了Shell脚本自动备份MySQL到FTP并定期清理过期备份的使用技巧和注意事项,需要的朋友参考一下 以前公司用的一个网上找的MySQL自动备份到FTP的Shell脚本,一直用着不错。但是问题就是随着备份文件的越来越多,不得不定期清理FTP上的老备份文件,十分的不便。 实际上MySQL备份无需保留太长时间的,如果能有自动
本文向大家介绍Oracle自动备份及自动备份步骤,包括了Oracle自动备份及自动备份步骤的使用技巧和注意事项,需要的朋友参考一下 数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dm
本文向大家介绍8种手动和自动备份MySQL数据库的方法,包括了8种手动和自动备份MySQL数据库的方法的使用技巧和注意事项,需要的朋友参考一下 作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的。本文就为大家介绍几种适用于企业的数据备份方法。 使用MySQLDump进行MySQL备份 mysqldump是MySQL内置的工具,允许用户将数据库指定不同的选
主要内容:备份一个数据库,备份多个数据库,备份所有数据库数据库的主要作用就是对数据进行保存和维护,所以备份数据是数据库管理中最常用的操作。为了防止数据库意外崩溃或硬件损伤而导致的数据丢失,数据库系统提供了备份和恢复策略。 保证数据安全的最重要的一个措施就是定期的对数据库进行备份。这样即使发生了意外,也会把损失降到最低。 数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本。当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库
本文向大家介绍在Windows环境下使用MySQL:实现自动定时备份,包括了在Windows环境下使用MySQL:实现自动定时备份的使用技巧和注意事项,需要的朋友参考一下 一、编写备份脚本 这是一段很常见的windows批处理脚本文件,我来简单解释一下其中的关键部分: forfiles 用来对备份目录下的过期备份进行删除。“E:\mysql\MySQL BackUp”是备份文件所在的路径,可以自行
本文向大家介绍linux下mysql如何自动备份shell脚本,包括了linux下mysql如何自动备份shell脚本的使用技巧和注意事项,需要的朋友参考一下 Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。 保存后将以上脚本加入cront