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 ↓↓