栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我的数据库备份脚本无法在php中使用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我的数据库备份脚本无法在php中使用?

除非您的数据库只是一个玩具数据库(相当于“ hello world”脚本),否则这将无法以SQL脚本备份数据库。

该脚本令人震惊。您不应该使用它来备份数据库。该脚本之前已发布:PHP数据库转储脚本-
有问题吗?

  • 在mysql_connect()或mysql_queries()之后没有错误检查。您可能只是输入了错误的密码或其他密码,但您永远不会知道,因为脚本无法验证连接是否成功。

  • 如果您的数据库包含任何NULL,它将不会产生正确的INSERT语句。

  • 不处理字符集。

  • addlashes()不适合转义数据。

  • 表名没有定界。

  • 不备份视图,过程,功能或触发器。

  • mysql_query()缓冲结果,因此,如果您的表包含数千行或更多行,则将超出PHP内存限制。实际上,该脚本将一系列INSERT语句串联到单个PHP变量中。因此,在完成之前,您将在内存中表示 整个 数据库。

没有人应该使用该脚本。 这完全是垃圾,我不能轻易地说出来。

只需使用shellexec()运行mysqldump。

@ÁlvaroG. Vicario很好,您甚至不需要使用PHP即可完成此任务。我以为您需要从PHP脚本进行备份。这是我从cron脚本创建备份的方法:

创建一个shell脚本,可以随意调用它,例如mymysqldump.sh。这是我的写法:

:: ${BACKUP_HOST:="localhost"}: ${BACKUP_DATAbase:="mydatabase"}: ${BACKUP_DIR:="/opt/local/var/db/mysql5/backups"}: ${BACKUP_FILE:="${DATAbase}-`date +%Y%m%d%H%M%S`"}mysqldump -h ${BACKUP_HOST} ${BACKUP_DATAbase} > ${BACKUP_DIR}/${BACKUP_FILE}

当然,根据您的环境需要自定义变量的值。

您可能会注意到用户名和密码 不在 此文件中。请不要将密码以纯文本形式输入脚本中,这样每个人都可以阅读它们。相反,我们将它们放在选项文件中以使其更安全。

创建一个特殊的操作系统用户,该用户将要从cron运行备份。您的系统可能有一个特殊的用户“ mysql”或“ _mysql”来运行MySQL
Server,但是该用户可能配置为没有有效的主目录。您需要一个具有主目录的用户。我们称之为“ mybackup”。

在该用户的主目录下,创建一个

.my.cnf
包含以下内容的文件:

[mysqldump]user = alupto_backuppassword = xyzzy

其中“ alupto_backup”和“
xyzzy”是MySQL用户名及其密码(请针对您的环境进行更改)。设置此文件的所有权和模式,以便只有其所有者才能读取它:

chown mybackup .my.cnfchmod 600 .my.cnf

在该用户的主目录下创建一个bin目录,并将我们的shell脚本放入其中。

mkdir ~mybackup/binmv mymysqldump ~mybackup/bin

现在,您可以运行shell脚本进行测试:

sh ~mybackup/bin/mymysqldump

现在为该用户创建一个cron文件:

crontab -u mybackup@daily ~mybackup/bin/mymysqldump

应该是这样。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号