Bitrix e atualizando o MariaDB para a última versão estável

Bom dia, queridos Khabrovitas! Permita-me apresentar-me, Alexandre. Administrador de sistemas de um pequeno mas orgulhoso estúdio WEB. Nós realmente queremos que tudo funcione de forma rápida, segura e com software novo. Para fazer isso, até levantamos o pacote nagios + PhantomJS no computador intra-escritório e a cada 30 minutos verificamos a velocidade de carregamento da página. De acordo com os termos de serviço, também monitoramos as atualizações do 1C-Bitrix e as instalamos regularmente. E então, um dia, após a próxima atualização, vemos uma mensagem no painel de administração informando que, desde o verão de 2019, o 1C-Bitrix parou de funcionar com o MySQL 5.5 e precisa ser atualizado. Os caras do ISPSystem são bonitos e expandem regularmente a funcionalidade do painel, pelo que um agradecimento especial a eles. Mas desta vez não foi possível clicar em tudo com o mouse. Mas o que aconteceu e quantos cabelos grisalhos estão agora na minha barba podem ser encontrados sob o corte.

Havia apenas a opção de instalar um “servidor DBMS alternativo” instalado no contêiner do Docker. Claro, eu entendo que o Docker é muito econômico com recursos, mas não importa o quão bom ele funcione, a sobrecarga ainda será > 0. E aqui estamos, por assim dizer, lutando em décimos de segundo e otimizando todos os sites na entrada antes de publicar e assinar um acordo. Então não é minha escolha.
Ok, o que está na documentação? Faça backup de tudo, adicione um arquivo com um link para o repositório MariaDB em yum.repos.d e, em seguida,

rpm -e --nodeps MariaDB-server MariaDB-client MariaDB-common

Yum posteriormente jurará pelo fato de que alguém removeu os pacotes sem seu conhecimento. Mas primeiro - deixe-o jurar, está tudo bem. E em segundo lugar, se você fizer a exclusão por meio do yum, ele tentará demolir, junto com o MariaDB, tudo o que está relacionado a ele por dependências, e isso é PHP e ISPManager e PHPmyadmin. Então, vamos lidar com os bugs mais tarde.


yum clean all
yum update
yum install MariaDB-server MariaDB-client MariaDB-common

Em geral, tudo foi configurado e iniciado. O bom é que as bases foram recolhidas e não foi necessário restaurá-las dos lixões. Eu verifiquei os sites - eles funcionam e rapidamente. Fui a alguns painéis de administração para garantir que nada caísse e cancelei a inscrição para o diretor de que estava tudo bem. Em menos de 30 minutos, descobriu-se que não estava nada bem ...

Quando tentei ir ao painel de administração e adicionar qualquer edição no conteúdo, uma mensagem caiu

MySQL Query Error: INSERT INTO b_iblock_element_property (ID, IBLOCK_ELEMENT_ID, IBLOCK_PROPERTY_ID, VAL UE, VALUE_NUM) SELECT 10555 ,2201 ,P.ID ,'3607' ,3607.0000 FR OM b_iblock_property P WHERE ID = 184 [[1062] Duplicate entry '10555' for key 'PRIMARY']

Como o conteúdo do site é adicionado por nossos funcionários, os clientes ainda não sabiam de nada e ainda não haviam começado a nos separar. Mas era uma questão de tempo, porque as informações dos sites precisam ser atualizadas, e muitos clientes acompanham isso muito de perto.

Pelo texto do erro, podemos concluir que o Bitrix está tentando adicionar um novo registro ao banco de dados, especificando a mesma chave primária que tinha o artigo que está sendo editado. Portanto, há motivos para suspeitar que o problema ocorra do lado do Bitrix. Acesse o site deles e entre em contato com o suporte. Quase imediatamente obtemos a resposta “problema difícil. Deu para engenheiros seniores - espere ... "

Tive que esperar bastante (todo o diálogo ocorreu de 25.06.2019/9.07.2019/10.4.6 a XNUMX/XNUMX/XNUMX) e o resultado foi a mensagem “esse problema não está relacionado ao funcionamento do Bitrix CMS, mas está relacionado ao funcionamento do próprio banco de dados no mariadb XNUMX e, infelizmente, com lado do site esse problema para resolver está faltando a possibilidade, será necessário migrar para a versão antiga do MariaDB.”

Naveguei... pensei em downgrade no começo da história, mas aqui em preto e brancoque não pode haver rebaixamento. Mescle dumps e reimplemente em um servidor recém-instalado. Aqueles. é bom que eu não atualizei todos os servidores de uma vez. Aqueles. “apenas” uma centena de sites (risada nervosa :-)). Eles também disseram no suporte: “Para resolver o problema ao usar o banco de dados MariaDB 10.4.6, você precisará entrar em contato com o suporte técnico do MariaDB que a transação não excluirá um registro do banco de dados caso seja feita uma solicitação:

$DB->Query("DELETE FROM ".$strTable." WHERE ID = ".$res["ID"]);
$results = $DB->Query("SELECT * FROM ".$strTable." WHERE ID = ".$res["ID"]);”

A esperança brilhou por algumas horas desde o momento em que começamos a nos comunicar com o suporte do MariaDB, mas então recebi uma carta na qual fui informado de forma extremamente correta de que não era um usuário comercial e, portanto, ninguém resolveria propositalmente meu problema, mas há um fórum no site deles e você pode tentar procurar opções lá … Não vou aborrecê-lo com detalhes. Não há opções lá.
SOBRE! Adquirimos uma licença para ISP!
Olá, suporte? Pessoal, ajudem!
- Desculpe, não oferecemos suporte a bandidos que alteram as versões nativas do DBMS. Se desejar, existe uma opção com um servidor alternativo no docker.
- Mas como os usuários e bancos de dados chegarão lá? Para encaixe?
- Bem, você os arrasta para lá com as mãos ...
- Sim! E não se esqueça que a porta do mysql vai mudar e você vai precisar passar e reescrever todas as configurações.
Ok obrigado vou pensar...
Pensei e resolvi demolir o 10.4 com handles e instalar o 10.2 com o qual não houve problemas em outros servidores.

O processo não foi muito diferente do processo de atualização. Só que foi necessário alterar 10.4 para 10.2 no link para o repositório, redefinir e recriar o cache para o yum. Bem, mais uma “ninharia”: depois de remover 10.4, vamos para /var/lib/mysql e deletamos tudo de lá. Sem esta etapa, após a instalação do 10.2, o serviço travará constantemente e você verá

Не удалось подключиться к базе данных '' Lost connection to MySQL server at 'reading initial communication packet', system error: 104 "Connection reset by peer"

Ou

Lost connection to MySQL server at 'handshake: reading inital communication packet', system error: 104

Antes de importar os bancos de dados, primeiro defino a senha root do mysql que foi especificada nas configurações do ISP e importei o despejo do banco de dados mysql. Bem, como já existem usuários e direitos, simplesmente importamos todos os bancos de dados de usuários em uma linha com a conta root.

Texto do script para dump do banco de dados:

#!/bin/bash
echo 'show databases' | mysql -u root --password="ПаРоЛь_РУТА" --skip-column-names | grep -v information_schema | xargs -I {} -t bash -c 'mysqldump -u root --password="ПаРоЛь_РУТА" {} | gzip > /BACK/back-$(hostname)-{}-$(date +%Y-%m-%d-%H.%M.%S).sql.gz'

Antes de importar bancos de dados, você precisa descompactá-los. Então, basta executar o comando

gunzip /BACK/*.gz

E a última coisa: por algum motivo, hífens são permitidos em nomes de bancos de dados (se você os criar usando o ISPmanager). Mas ao criar ou tentar fazer upload de um dump para um banco de dados que possui um hífen no nome, você recebe uma mensagem informando que a sintaxe da consulta está incorreta.

Leia até o fim todas as bênçãos. Peço desculpas pelas vírgulas provavelmente não espaçadas - elas estão com problemas. Se houver desejos de uma proposta essencialmente descrita - escreva no pessoal porque nos comentários tenho medo de perder alguma coisa. E não xingue muito - este é meu primeiro artigo 🙂

UPD1:

Quase esqueci de mencionar: enquanto tentava encontrar uma solução para o problema sem fazer o downgrade do MariaDB, tive que atualizar as informações de alguma forma. Foi atualizado assim: todo o banco de dados é convertido de InnoDB para MyISAM, o infa é atualizado e depois convertido de volta para InooDB.
UPD2:

Acabei de receber uma carta da 1C-Bitrix com o seguinte conteúdo:

Solicitação de revisão concluída
"Depois de atualizar o mariadb para 10.4.6, ocorreu um erro ao salvar o elemento infoblock"
Módulo: iblock, versão: desconhecida
Solução: rejeitado

Então, por enquanto, aparentemente é impossível atualizar para 10.4 🙁

Fonte: habr.com

Adicionar um comentário