PHP - Replicar base de datos

 
Vista:
sin imagen de perfil

Replicar base de datos

Publicado por GIAN (4 intervenciones) el 04/06/2018 20:41:36
Hola nenes, tratare de ir directo al grano, tengo una bd en un servidor centralizado, el cual cada ciertas horas replica esta bd a distintos servers a nivel nacional, por mala suerte y condiciones en 3 de estos establecimientos no estaba llegando el servicio de internet por un par de meses, obligando a crear en estas tiendas los productos de manera manual, dicho esto, como hago ahora para que mis bd esten iguales; como asi les explico:

En esos meses que pasaron, se creo desntro de la bd de la tienda un producto X podria ser pasta de trigo de un kilo gramo; quedando en la bd de posicion n° 50, pero este mismo producto en la bd central su id es el n° 10, ahora me piden cambiar el id de la tienda por el del centralizado, como debo hacer? ya que si solo sustituyo los id me va a traer un lio terrible ya que, pudiese ser que en el central el id 50 son toallitas para bebe, esto debo realizarlo sin afectar el hecho que durante todos esos meses se facturo fue pasta y no toallitas de culito xD gracias de antemano campeones
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi
Val: 588
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Replicar base de datos

Publicado por santi (204 intervenciones) el 05/06/2018 19:56:20
Hola,

Y sustituir la bbdd de los productos añadidos manualmente por la bbdd centralizada, ¿no se solucionaría? Sabiendo que cada cierto tiempo se actualiza con la centralizada, se cambiaría de todas formas no?

O igual no lo he pillado del todo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Replicar base de datos

Publicado por GIAN (4 intervenciones) el 05/06/2018 21:44:57
No man ya que la central tiene prioridad sustituiria lo que se realizo manual ese es el problema, se que hay una manera pero no me llega la logica de como podria hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Replicar base de datos

Publicado por italo (150 intervenciones) el 06/06/2018 04:14:44
Hola

1
Hola nenes, tratare de ir directo al grano, tengo una bd en un servidor centralizado, el cual cada ciertas horas replica esta bd a distintos servers a nivel nacional, por mala suerte y condiciones en 3 de estos establecimientos no estaba llegando el servicio de internet por un par de meses,

me parece que este es el error principal, el hecho que no haya internet como servicio, habrian mil maneras de que tengas el database actualizado, incluso con la conexion de un celular... incluso dejando de replicar en esas tiendas y haciendo un aplicativo online que actualizen los datos, incluso hasta con un excel por ultimo, a mi parecer ese fue el error, jalada de orejas para todos los tecnicos IT de tu trabajo.

1
obligando a crear en estas tiendas los productos de manera manual, dicho esto, como hago ahora para que mis bd esten iguales; como asi les

de seguro trabajando en ambiente de test con la copia de tus database, podrias usar el tool compare de mysql

https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqldbcompare.html

lee la documentacion, prueba y prueba hasta que entiendas el mecanicmos de update/insert luego del compare.

1
ahora me piden cambiar el id de la tienda por el del centralizado

por curiosidad quien te ha pedido eso?

estas seguro que te ha pedido exactamente eso? porque muchas veces los errores son de comprension/comunicacion/interpretacion entre el que pide y el que escucha.

1
En esos meses que pasaron, se creo desntro de la bd de la tienda un producto X podria ser pasta de trigo de un kilo gramo; quedando en la bd de posicion n° 50, pero este mismo producto en la bd central su id es el n° 10, ahora me piden cambiar el id de la tienda por el del centralizado, como debo hacer? ya que si solo sustituyo los id me va a traer un lio terrible ya que, pudiese ser que en el central el id 50 son toallitas para bebe, esto debo realizarlo sin afectar el hecho que durante todos esos meses se facturo fue pasta y no toallitas de culito xD gracias de antemano campeones

de seguro arreglar las cosas a mano da mas errores que otra cosa.

primero que nada, se deduce que los datos no se deberian de repetir en ninguno de los database (master o tienda).

- los datos tienen fecha de cuando fueron agregados?
- los datos luego que se agregan, los id's son insertados en otras tablas?
- los datos son fijos? o dependen de datos de otras tablas con foreing key?
- el database tiene muchas tablas relacionadas o solo pocas tablas?

ya que lo que podrias hacer es: (si es que no tiene relaciones )

0) prueba en tu ambiente de test con la copia (backup) de las ultima version de tus database (master/tienda)
1) database master
2) database cliente
3) compare de los dos database y la diferencia del database tienda la guardas en otro database tienda_temporal
4) el database tienda_temporal lo insertas en el database master
5) lo haces con los otros database de tus tiendas offline
6) revisas los datos que no se repitan
7) le dices al que te lo pidio que el database master esta actualizado con los datos de las tiendas offline y que lo revise.
8) explicale la logica que has utilizado, debe de entender el mecanismo, que los id de un table no basta cambiarla asi por asi ya que es muy riesgoso por la integridad de los datos.

si no deseas aplicar estos consejos, escribenos que es lo que has pensado hacer para ayudarte nuevamente.

salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Replicar base de datos

Publicado por GIAN (4 intervenciones) el 06/06/2018 14:54:29
Hola italo muy buena tu respuesta, y este problemon me acabo de enterar apenas esta semana, yo tengo aproximadamente 4 meses en esta unidad y pues el rollo de la conectividad en estas tiendas viene de hace 5 meses en una y en otra creo que 2, me acaban de asignar esa tarea, yo lo veo como prueba de mis capacidades ya que es mi primer trabajo en el area, para responde run poco lo que me preguntas, si tienen fecha o historico, tambien los ids se agregan a otras tablas, algunos son fijos algunos no, ya que por ejemplo hay en algunos de estos productos son sometidos a impuestos y otros no, aparte de eso en un post anterior pedia informacion acerca de una reconversion monetaria, estos productos tienen un precio en base de miles y con un scrip se estan bajando a centenas, las tablas relacionales no son muchas pero la base de datos es bastante amplia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Replicar base de datos

Publicado por italo (150 intervenciones) el 07/06/2018 01:51:09
Hola Gian, de seguro el apartado correcto es en la seccion MYSQL ahi te podrian brindar mejor ayuda.

Por otra parte, para poderte ayudar mejor seria bueno que nos des mas informacion, no toda la estructura de base de datos, pero si al menos la estructura de la tabla donde supuestamente deberia de cambiar el id.

Seguramente lo fundamental en tu caso es estudiar bien toda la base de datos, conocer todas las tablas y relaciones.

Doy por descontado que el database centralizado y el de las tiendas a nivel de estructura es el mismo, deberas comprobar esto ya que en 2 o 5 meses el database centralizado ha podido tener cambios estructurales, mientras que los otros database de las tiendas no.

Todo depende como esta definido tu database en base a los requisitos/pedidos de los funcionales.

Ya que por lo que comentas:

1
los ids se agregan a otras tablas, algunos son fijos algunos no, ya que por ejemplo hay en algunos de estos productos son sometidos a impuestos y otros no

cambiar el id en una tabla no es la solucion,, deberas individuar todas las tablas donde se maneja ese id y cambiarlas a todas, pero volvamos a lo nuestro.

Por lo que he entendido, tienes (dependidiendo del los requisitos):

* en el caso de producto

una tabla de producto: id, nombre, descripcion
una tabla de cantidad_producto: id_producto, cantidad
una tabla de precios_producto: id_producto, precio
una tabla del proveedor del producto: id_producto, id_proveedor

quiere decir que deberas cambiar el id del producto en 4 tablas.(una a la vez dependiendo del tipo de references.)

1
2
3
ahora me piden cambiar el id de la tienda por el del centralizado
 
En esos meses que pasaron, se creo desntro de la bd de la tienda un producto X podria ser pasta de trigo de un kilo gramo; quedando en la bd de posicion n° 50, pero este mismo producto en la bd central su id es el n° 10, ahora me piden cambiar el id de la tienda por el del centralizado, como debo hacer? ya que si solo sustituyo los id me va a traer un lio terrible ya que, pudiese ser que en el central el id 50 son toallitas para bebe, esto debo realizarlo sin afectar el hecho que durante todos esos meses se facturo fue pasta y no toallitas de culito xD gracias de antemano campeones

dudas:

- trabajas con el id auto_incremet y son esos id los que deseas cambiar?
- los producto tienes su propio codigo o todo se basa en el id auto_incremet?

entonces defines el metodo de trabajo: (pero aqui depende todo de como esta hecho el database) por lo que he comprendido de tu post es:

- que los productos no se repiten
- ya que un producto no puede existir mas de una vez en la tabla producto.

entonces:

0) aplicaria los siguiente puntos por cada tienda.

1) que hacer cuando se repiten en el database centralizado y tiendas?

los records con productos que existen en ambos databases (centralizado y tiendas) o sea que donde el producto se repite deberan ser modificados en el database de la tienda.

1.1) se hace el insert en el database centralizado de los detalles de operaciones con los id corregidos

2) que hacer cuando no existen en el database centralizado pero si en el database de la tienda?

tendran que ser agregados como nuevos productos en el database centralizado.

2.1) luego corregir el id del database de las tiendas con el id generado en el insert del database centralizado.

2.2) se hace el insert en el database centralizado de los detalles de operaciones con los id corregidos.

empieza en tu ambiente de test con una copia del database centralizado y una copia del database de las tiendas.

si tienes dudas o errores lo mejor seria pasar a lenguaje tecnico con respectivo codigos y estructuras del database, para que se entienda mejor la problematica.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar