Foros del Web » Programando para Internet » PHP »

Reiniciar MySQL desde PHP.

Estas en el tema de Reiniciar MySQL desde PHP. en el foro de PHP en Foros del Web. Buen día, Tengo un sistema basado en web (montado en una plataforma LAMP) que hace muchas consultas a una base de datos en MySQL, y ...
  #1 (permalink)  
Antiguo 26/04/2009, 12:06
Avatar de jjyepez  
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Reiniciar MySQL desde PHP.

Buen día,

Tengo un sistema basado en web (montado en una plataforma LAMP) que hace muchas consultas a una base de datos en MySQL, y debido a la cantidad de registros y algunos problemas con la integridad referencial, el servidor MySQL termina por colapsar y caerse de forma abrupta, es decir; los servicios de MySQL se caen y requieren de levantarlos accediendo al servidor mediante un terminal y ejecutando "mysqld" ...

Necesito poder reiniciar los servicios de MySQL de manera automática desde PHP, he probado:

Código PHP:
system("mysqld"); 
Código PHP:
shell_exec('mysqld'); 
Código PHP:
exec('mysqld'); 
Código PHP:
passthru('mysqld'); 
Pero sin mucho éxito ... quizás me falta algo en relación a los permisos de ejecución o algo así.

Cualquier ayuda será apreciada ...

Saludos y éxito!

jjy

Última edición por jjyepez; 26/04/2009 a las 12:49
  #2 (permalink)  
Antiguo 26/04/2009, 17:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Reiniciar MySQL desde PHP.

Hola jjyepez,

Recuerda que al usar exec() o system() etc. Estos se ejecutan con los permisos del usuario bajo el que se ejecute PHP, para iniciar el servicio de mysql, generalmente se necesitan permisos de root para inciar correctamente el servicio.

Saludos.
  #3 (permalink)  
Antiguo 15/10/2009, 23:25
Avatar de jjyepez  
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Reiniciar MySQL desde PHP. (InnoDB y MyISAM)

Luego de esfuerzos infructuosos tratando de ejecutar el comando para reiniciar mysql, decidí buscar la solución atacando la raíz del problema.

Según lo que observé -y comprobé en otros foros, al utilizar MyISAM e InnoDB de forma no controlada en una base de datos MySQL y al hacer consultas complejas entre tablas de ambos "engines" se producía el colapso del servicio de la base de datos.

Para corregir el problema tuve que pasar todas las tablas de la base de datos a un sólo engine.
Inicialmente se pasaron todas a InnoDB pero ... eventualmente decidí pasar todas a MyISAM ya que la base de datos no fue diseñada por sus desarrolladores con reglas de integridad relacional mínimas por lo que InnoDB era poco práctico y eventualmente colapsó debido al tamaño de logs, etc.

Las lecciones de esta experiencia con MySQL se resumen en:
1.- Definitivamente se deben tomar el tiempo y el esfuerzo necesarios para hacer un análisis, diseño y/o reingeniería de base de datos a fin de establecer estructuras normalizadas, reglas adecuadas y condiciones de integridad relacional que permitan obtener el máximo provecho del manejador con los engines más recientes.
2.- Si a pesar de aplicar el punto anterior determinamos que las características de la data y el manejo de ésta no amerita el uso de InnoDB, es preferible "mantenerlo simple" usando para todas las tablas MyISAM, mientras no afecte el performance y la integridad de la información.
3.- Tomarse el tiempo necesario para solucionar el problema desde la raíz ... siempre será la mejor opción.
4.- La solución no está sólo en el "código fuente del programa" sino en una combinación de ajustes en: la base de datos, ajustes en la configuración de los servicios del manejador y del servidor, ajustes en el programa, etc ... los ajustes (pequeños o grandes) de varios factores sincronizados son realmente efectivos; en otras palabras: no siempre es sólo "el programa" ...

Éxito.
--
Julio J. Yépez
jjyepez

PD: Gracias GatorV por tu aporte ...

Última edición por jjyepez; 15/10/2009 a las 23:36
  #4 (permalink)  
Antiguo 16/10/2009, 01:31
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Reiniciar MySQL desde PHP. (InnoDB y MyISAM)

Cita:
Iniciado por jjyepez Ver Mensaje
Luego de esfuerzos infructuosos tratando de ejecutar el comando para reiniciar mysql, decidí buscar la solución atacando la raíz del problema.

Según lo que observé -y comprobé en otros foros, al utilizar MyISAM e InnoDB de forma no controlada en una base de datos MySQL y al hacer consultas complejas entre tablas de ambos "engines" se producía el colapso del servicio de la base de datos.

Para corregir el problema tuve que pasar todas las tablas de la base de datos a un sólo engine.
Inicialmente se pasaron todas a InnoDB pero ... eventualmente decidí pasar todas a MyISAM ya que la base de datos no fue diseñada por sus desarrolladores con reglas de integridad relacional mínimas por lo que InnoDB era poco práctico y eventualmente colapsó debido al tamaño de logs, etc.

Las lecciones de esta experiencia con MySQL se resumen en:
1.- Definitivamente se deben tomar el tiempo y el esfuerzo necesarios para hacer un análisis, diseño y/o reingeniería de base de datos a fin de establecer estructuras normalizadas, reglas adecuadas y condiciones de integridad relacional que permitan obtener el máximo provecho del manejador con los engines más recientes.
2.- Si a pesar de aplicar el punto anterior determinamos que las características de la data y el manejo de ésta no amerita el uso de InnoDB, es preferible "mantenerlo simple" usando para todas las tablas MyISAM, mientras no afecte el performance y la integridad de la información.
3.- Tomarse el tiempo necesario para solucionar el problema desde la raíz ... siempre será la mejor opción.
4.- La solución no está sólo en el "código fuente del programa" sino en una combinación de ajustes en: la base de datos, ajustes en la configuración de los servicios del manejador y del servidor, ajustes en el programa, etc ... los ajustes (pequeños o grandes) de varios factores sincronizados son realmente efectivos; en otras palabras: no siempre es sólo "el programa" ...

Éxito.
--
Julio J. Yépez
jjyepez

PD: Gracias GatorV por tu aporte ...
Me ha parecido muy bueno tu post.
¿Dónde puedo leer más sobre integridad referencial?
  #5 (permalink)  
Antiguo 03/11/2009, 17:10
Avatar de jjyepez  
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Respuesta: Reiniciar MySQL desde PHP.

Hola karliky,
Gracias.

He encontrado este tutorial de Eduardo Zarate en Mysql Hispano que habla sobre:
" ... los conceptos de la integridad referencial, y se explica como aplicarlos en MySQL para la definición de claves foráneas .. " aprovechando las características del engine INNODB.

La url es: http : // wwww . mysql-hispano . org / page.php ? id=27 & pag=1

Espero que sea de utilidad para tí y para otros que consulten este foro.

Éxito.
--
Julio J. Yépez
jjyepez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:35.