AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-109562

uberrebu's questions

Martin Hope
uberrebu
Asked: 2019-02-26 13:41:33 +0800 CST

tabela django_session matando meu servidor MySQL e aplicativo django

  • 0

Eu preciso de sua ajuda eu tenho um aplicativo Django que tem cerca de 7 anos e está degradando agora .. toda vez que o site cai e faz backup e o problema é com o servidor mysql

Normalmente eu preciso apenas reiniciar o servidor mysql e ele volta .. eu tenho feito isso por 2 anos e estou pronto para corrigir o problema de uma vez por todas e preciso de sua ajuda para fazer isso

Aqui está a captura de tela das tabelas do banco de dados insira a descrição da imagem aqui

As django_sessiontabelas têm 3,512,729,600comprimento de dados e 24,152,301linhas, suponho que é de onde vem o problema e por que o site morre às vezes quando o mysql não consegue lidar com a consulta e vários tempos limite que matam o aplicativo. Se for outra coisa, por favor, me esclareça.

De qualquer forma, tentei excluir a django_sessiontabela, mas sem sorte, recebo os seguintes erros

Erro na consulta (1451): Não é possível excluir ou atualizar uma linha pai: uma restrição de chave estrangeira falha ( font_database. fonts_fontfile, CONSTRAINT session_id_refs_session_key_37e5d4124e1e319fFOREIGN KEY ( session_id) REFERENCES django_session( session_key))

O que eu faço aqui? Precisa de ajuda séria aqui

A versão do MySQL é 5.7.23

Se precisar de mais informações, pergunte-me e tentarei adicioná-las a esta pergunta.

Obrigado

ATUALIZAR:

Acabei de notar que o problema é que o número total de conexões no servidor MySQL está no máximo em 152

mysql> show status where `variable_name` = 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 152   |
+-------------------+-------+
1 row in set (0.74 sec)

Além disso, quando eu verifico as conexões, elas são todas do django_sessions, e é por isso que quando reinicio o servidor, ele funciona bem, mas volta ao mesmo problema, pois a tabela de sessões é muito alta e muitas linhas

mysql> show processlist;
+------+--------------------+-----------+--------------------+---------+------+--------------+----------------------------------------------------------------------------------------------------+
| Id   | User               | Host      | db                 | Command | Time | State        | Info                                                                                               |
+------+--------------------+-----------+--------------------+---------+------+--------------+----------------------------------------------------------------------------------------------------+
| 3709 | font_database | localhost | font_database | Query   | 3164 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:00:37' |
| 3710 | font_database | localhost | font_database | Query   | 3162 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:00:39' |
| 3711 | font_database | localhost | font_database | Query   | 3161 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:00:41' |
| 3714 | font_database | localhost | font_database | Query   | 3133 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:01:09' |
| 3716 | font_database | localhost | font_database | Query   | 3131 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:01:11' |
| 3717 | font_database | localhost | font_database | Query   | 3129 | Sending data | SELECT COUNT(*) FROM `django_session` WHERE `django_session`.`last_login` >= '2019-02-23 13:01:13' |
...
...
till maxed to 152 connections

Novamente, se você precisar de alguma informação adicional, pergunte e eu a fornecerei. Isso é tudo que eu acredito que pode ajudar a dar idéia de qual é o problema


ATUALIZAÇÃO: (a partir do pedido nos comentários)

EXPLAIN SELECT COUNT(*) FROM django_session WHERE django_session.last_login >= '2019-02-23 13:00:37'

id  select_type table   partitions  type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  django_session  NULL    ALL NULL    NULL    NULL    NULL    24200442    33.33   Using where

SHOW CREATE TABLE django_session

Table   Create Table
django_session  CREATE TABLE `django_session` (
  `session_key` varchar(40) NOT NULL,
  `session_data` longtext NOT NULL,
  `expire_date` datetime NOT NULL,
  `created` datetime NOT NULL,
  `last_login` datetime NOT NULL,
  PRIMARY KEY (`session_key`),
  KEY `django_session_c25c2c28` (`expire_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

UPDATE v2: (depois de executar ALTER TABLE django_session ADD KEY (last_login))

EXPLAIN SELECT COUNT(*) FROM django_session WHERE django_session.last_login >= '2019-03-04 13:00:37'

id  select_type table   partitions  type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  django_session  NULL    range   last_login  last_login  5   NULL    1   100.00  Using where; Using index
mysql python
  • 1 respostas
  • 768 Views
Martin Hope
uberrebu
Asked: 2019-01-03 01:36:32 +0800 CST

O dimensionamento vertical é uma boa ideia para um servidor de banco de dados mysql?

  • 0

Eu opero um servidor de banco de dados mariadb/mysql e não quero ter problemas com o gerenciamento de um servidor de banco de dados multi-cluster, tenho acesso a enorme CPU e RAM e ARMAZENAMENTO quando necessário

então minha pergunta para os administradores de banco de dados experientes e experientes é que o dimensionamento vertical é bom o suficiente? sim o tempo de inatividade está ok desde que os dados estejam protegidos Prefiro lidar com o tempo de inatividade de alguma falha do sistema ou problema que só acontecerá muito raramente...

Então, quais são os gargalos que vou encontrar ao executar um banco de dados de até 512 GB de memória e como 128 vCPU? e como 2TB de armazenamento SSD?

como isso é pior do que, digamos, rodando como um cluster de 8 bancos de dados mariadb/mysql com cada 64 GB de memória, 16 vCPU e armazenamento SSD de 256 GB?

sim, eu sei sobre iops, mas quero dizer com muito cache de redis, acho que é possível reduzir o estresse nessa parte também

praticamente há CPUs e servidores cada vez mais poderosos que podem ser empacotados em uma única máquina. typo) de memória em uma única máquina

por favor envie seus conselhos e dicas obrigado!!!

mysql optimization
  • 1 respostas
  • 662 Views
Martin Hope
uberrebu
Asked: 2016-11-03 08:06:01 +0800 CST

Excluir todos os dados no banco de dados Postgres

  • 21

Eu criei um novo dump de banco de dados de um servidor de produção com os sinalizadores --data-onlye --column-inserts, portanto, tenho apenas várias instruções de inserção para inserir dados ao executar uma restauração em um servidor de teste.

pg_dump -h localhost -U adminuser --data-only --column-inserts maindb > maindb.sql

Como excluo todos os dados no banco de dados do servidor de teste primeiro, antes de restaurar os dados do dump de produção?

Eu quero excluir todos os dados apenas para não ter que descartar e criar o banco de dados e todas essas coisas. Eu só quero remover dados e inserir novos dados, isso é tudo.

Não tenho a opção de descartar e criar o banco de dados por vários motivos. Terei que remover todos os dados e apenas inserir apenas, então o que for preciso para descobrir como fazer isso, estou disposto a fazer isso, mas preciso de ajuda, obviamente, para começar.

Também preciso automatizar esse processo. Automatizará "despejar dados do banco de dados de produção", depois "excluir dados no banco de dados de teste" e, em seguida, "restaurar dados no banco de dados de teste". Eu só preciso de ajuda na parte "excluir dados no banco de dados de teste".

Estou executando no PostgreSQL 9.5.2

postgresql postgresql-9.5
  • 6 respostas
  • 106774 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve