Esto no funcionará para hacer una copia de seguridad de su base de datos como un script SQL, a menos que su base de datos sea solo una base de datos de juguete, el equivalente a un script "hola mundo".
Ese guión es espantoso. No debe usarlo para hacer una copia de seguridad de una base de datos. Ese script se ha publicado antes:Base de datos PHP Volcar secuencia de comandos:¿hay algún problema?
-
No hay errores al verificar después de mysql_connect() o mysql_queries(). Probablemente hayas dado una contraseña incorrecta o algo así, pero nunca lo sabrás porque el script no verifica que la conexión haya sido exitosa.
-
No producirá la instrucción INSERT correcta si su base de datos contiene valores NULL.
-
Los juegos de caracteres no se manejan.
-
addslashes() es no adecuado para escapar datos.
-
Los nombres de las tablas no están delimitados.
-
No realiza copias de seguridad de vistas, procedimientos, funciones o disparadores.
-
mysql_query() almacena en búfer los resultados, por lo que si tiene una tabla con miles de filas o más, excederá su límite de memoria de PHP. De hecho, el script concatena la serie de sentencias INSERT en una única variable de PHP. Entonces, antes de que termine, tendrá su totalidad base de datos representada en la memoria.
Nadie debería usar ese script. Es pura basura, y no lo digo a la ligera.
Simplemente usa shellexec() para ejecutar mysqldump.
@Álvaro G. Vicario tiene un buen punto, no es necesario que uses PHP para esta tarea. Supuse que necesita hacer una copia de seguridad desde un script PHP. Así es como crearía una copia de seguridad a partir de un script cron:
Cree un script de shell, puede llamarse como desee, p. mymysqldump.sh. Así es como lo escribiría:
:
: ${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}
Por supuesto, personalice los valores de las variables según sea necesario para su entorno.
Puede notar que el nombre de usuario y la contraseña no en este archivo. Por favor, no ponga contraseñas en scripts en texto sin formato para que todos puedan leerlas. En su lugar, los colocaremos en un archivo de opciones para que sea más seguro.
Cree un usuario especial del sistema operativo que ejecutará la copia de seguridad desde cron. Su sistema puede tener un usuario especial "mysql" o "_mysql" para ejecutar el servidor MySQL, pero este usuario puede estar configurado para no tener un directorio de inicio válido. Necesita un usuario que tenga un directorio de inicio. Llamémoslo "mybackup".
En el directorio de inicio de ese usuario, cree un archivo .my.cnf
con el siguiente contenido:
[mysqldump]
user = alupto_backup
password = xyzzy
Donde "alupto_backup" y "xyzzy" son el nombre de usuario de MySQL y su contraseña (cámbielos para su entorno). Establezca la propiedad y el modo de este archivo para que solo su propietario pueda leerlo:
chown mybackup .my.cnf
chmod 600 .my.cnf
Cree un directorio bin en la página de inicio de este usuario y coloque nuestro script de shell en él.
mkdir ~mybackup/bin
mv mymysqldump ~mybackup/bin
Ahora puede ejecutar el script de shell para probarlo:
sh ~mybackup/bin/mymysqldump
Ahora cree un archivo cron para este usuario:
crontab -u mybackup
@daily ~mybackup/bin/mymysqldump
Eso debería ser todo.