¿Borracho borrar biblioteca? 7 horas de datos desaparecen para siempre

Comunidad de combate de Python

Comunidad de combate de Java

Mantenga presionado para identificar el código QR a continuación, agregue según sea necesario

Escanee el código QR a seguir para agregar servicio al cliente

Ingrese a la comunidad de Python ▲

Escanee el código QR a seguir para agregar servicio al cliente

Ingrese a la comunidad Java

Fuente 丨 Cloud Headlines

https://mp.weixin.qq.com/s/Q5WSXCVWs9rd34FA46k6Cg

Alrededor de las 10:45 pm del 17 de octubre, hora de Europa Central, el fundador y programador de Keepthescore borró accidentalmente la base de datos de producción después de beber unos vasos de vino tinto. Más de 300,00 marcadores y datos relacionados desaparecieron repentinamente.

Afortunadamente, la empresa utiliza una base de datos alojada proporcionada por DigitalOcean, lo que significa que DigitalOcean realiza automáticamente una copia de seguridad todos los días. Después de 5 minutos de tensión y pánico, el personal de Keepthescore puso el sitio web en modo de mantenimiento e intentó restaurar la copia de seguridad. Alrededor de las 11:15 p.m., hora de Europa Central, 30 minutos después del desastre, volvió a la normalidad, pero los datos del marcador de 7 horas desaparecieron para siempre.

Para ser precisos, todos los marcadores creados o agregados entre las 15:47 y las 23:21 del 17 de octubre de 2020 se perderán.

Al final, ¿qué pasó?

Algunas personas no pueden evitar culpar del desastre a unas copas de vino tinto. Sin embargo, la función para borrar la base de datos se escribió mientras estaba despierto. Una función elimina la base de datos local y crea todas las tablas necesarias desde cero. Esta noche, mientras escribía un código a altas horas de la noche, la función se conectó a la base de datos de producción y borró la base de datos.

¿por qué? En la actualidad, todavía estamos tratando de entender por qué.

Aquí está el código que causó el desastre:

def database_model_create():    """Only works on localhost to prevent catastrophe"""    database = config.DevelopmentConfig.DB_DATABASE    user = config.DevelopmentConfig.DB_USERNAME    password = config.DevelopmentConfig.DB_PASSWORD    port = config.DevelopmentConfig.DB_PORT    local_db = PostgresqlDatabase(database=database, user=user, password=password, host='localhost', port=port)    local_db.drop_tables([Game, Player, Round, Score, Order])    local_db.create_tables([Game, Player, Round, Score, Order])    print('Initialized the local database.')

Tenga en cuenta que el host está codificado en localhost. Esto significa que nunca se puede conectar a ninguna máquina que no sea la del desarrollador. Además: por supuesto, Keepthescore utiliza diferentes contraseñas y usuarios para entornos de desarrollo y producción. En este momento están demasiado cansados ​​para saber qué está pasando.

¿Qué lecciones se han aprendido? ¿Por qué esta situación no vuelve a ocurrir?

Keepthescore ha entendido que tener una función para eliminar una base de datos es demasiado peligroso para usarse en todas partes. El problema es que nunca se puede probar el mecanismo de seguridad correctamente, porque probar significará comenzar con la base de datos de producción.

Keepthescore ha entendido que es absolutamente necesario contar con copias de seguridad que faciliten una rápida recuperación. Agradecen a DigitalOcean por hacer que este trabajo sea confiable y fácil.

Afortunadamente, nadie perdió su trabajo debido a este desastre. Los fundadores no despedirán a los desarrolladores porque son la misma persona.

Además, esta aplicación web es solo un proyecto paralelo, no el tipo de software para ejecutar la planta de energía.

Irónicamente, hace apenas unos días, publicaron un tweet sobre el ridículo gen cultural de eliminar la base de datos de producción:

程序员专栏 扫码关注填加客服 长按识别下方二维码进群



Contenido emocionante reciente recomendado:  

 Comparación de los ingresos de los programadores en China, Estados Unidos, Japón e India

 Un día triste para los programadores

 SringMVC desde la entrada hasta el código fuente, este es suficiente

 10 animaciones visuales de Python, con cuidado y belleza

Mira el buen artículo aquí para compartirlo con más personas ↓↓

Supongo que te gusta

Origin blog.csdn.net/Px01Ih8/article/details/109233517
Recomendado
Clasificación