Backup online no MySQL com xtrabackup

Meu último post referente a backups foi a bastante tempo atrás. Embora ainda válido, não é aconselhável para ser utilizado como backup diário, então resolvi mostrar uma outra opção, o XtraBackup.

Com XtraBackup, você pode realizar backups sem interromper leituras e escritas (ele requer lock por um período bem curto de tempo para pegar coordenadas do binlog).
Hoje vou mostrar como realizar backup completos utilizando a ferramenta.

Instalação:

Para realizar a instalação, eu aconselho utilizar os repositórios para Yum / Apt-get:

Centos / Redhat:

sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
sudo yum …
[Leia mais]
Replicação Mestre-Escravo MySQL escalável em contêineres Docker

A replicação permite que você mantenha facilmente várias cópias dos dados do MySQL. Ele é obtido através dos dados do contêiner mestre sendo copiados automaticamente para um ou mais bancos de dados escravos.

Ter seus dados armazenados em vários contêineres de banco de dados pode ser muito útil para melhorar o desempenho, executar serviços de backup, analisar informações e aliviar falhas do sistema.

Podem ser destacados os seguintes casos de uso para implementação de replicação MySQL:

  • Soluções de escalabilidade – melhorando o desempenho espalhando a carga entre vários escravos onde todas as leituras ocorrem, enquanto todas as escritas e atualizações ocorrem no banco de dados mestre
  • Backups – executando backups no escravo sem …
[Leia mais]
Como fazer subconsultas: um passo a passo

Apesar da maioria das consultas feitas por quem está começando em SQL ser com SELECT externos, nesse artigo vou apresentar um recurso bastante útil que vai ajudar você a melhorar a legibilidade da sua query assim como, em alguns casos, otimizar o tempo do retorno das suas informações para o usuário. As chamadas subconsultas.

Uma subconsulta nada mais é do que uma instrução SELECT dentro de outro SELECT que retorna algumas colunas específicas que são usadas em algumas funções como INSERT e UPDATE por exemplo.

1. Tipos de subconsultas

Segue abaixo os tipos de subconsultas:

  • Subconsultas de uma única linha: retornam zero ou uma linha para a instrução SQL externa;
  • Subconsultas de várias linhas: retornam uma ou mais linhas para a SQL externa;
  • Subconsultas de várias colunas: retornam mais de uma coluna …
[Leia mais]
Pacote PHP notável: PHP Elastic Search para MySQL

O MySQL tem um bom mecanismo de pesquisa de texto completo, mas quando você tenta usar pesquisas de texto completo e, ao mesmo tempo, tem o aplicativo atualizando o banco de dados, isto pode ser muito lento porque atualizar os índices deixa mais lento o resto dos acessos de banco de dados.

Muitas vezes, é mais rápido indexar os dados a serem pesquisados com um banco de dados separado.

A Elastic search é um mecanismo independente para indexação e pesquisa de dados usando uma API REST.

Esta classe pode indexar e pesquisar registros MySQL usando o Elastic Search. Desta forma, você pode fornecer uma pesquisa de texto completo em dados em um banco de dados MySQL sem sobrecarregar o servidor MySQL principal.

O pacote PHP Elastic Search para MySQL é um dos poucos pacotes do PHP que …

[Leia mais]
Importando dados rapidamente no MySQL.md

Há um tempo, meu amigo Frank de Jonge me contou que conseguiu aumentar a performance em uma importação de 10h para 16 minutos. De acordo com ele, as alterações envolviam campos que eram muito longos que armazenavam pequenas strings, o número de índices e de chaves estrangeiras nas tabelas. Estamos falando de pelo menos 1 milhão de registros aqui, e ele estava se perguntando se era possível ter uma importação ainda mais rápida.

O básico

Existem várias maneiras de se importar informações para um banco de dados. Tudo depende da origem e o destino. Um pouco mais de contexto para melhor entendimento: você poderia retirar dados de uma aplicação legada que exporta dados em CSV para seu servidor de banco de dados ou até mesmo dados de …

[Leia mais]
Diferenças – MySQLi versus PDO versus MySQL, Benchmark para Comparação de desempenho, Segurança e Conversão que funciona em 2016 e 2017

Desde que o PHP 7 foi lançado e o suporte para o PHP 5 foi encerrado, muitas empresas de hospedagem tiraram o PHP 5 de seus servidores, e desenvolvedores PHP foram forçados a migrar seu código para funcionar com PHP 7.

Uma das mudanças do PHP 7 foi a descontinuação da extensão original do MySQL. Os desenvolvedores tiveram que optar por migrar seu código para usar o MySQLi ou e a extensão PDO.

Leia este artigo para saber sobre as diferenças e decidir qual é o melhor para você migrar seu código para trabalhar no PHP 7 ou posterior, bem como aprender sobre alguns pacotes recomendados que usam PDO ou MySQLi para executar propósitos comuns de banco de dados, como backup, segurança, registro de usuário e login, abstração de banco de dados, ORM (Object-Relational Mapping) etc.

1 – PDO versus MySQLi …

[Leia mais]
C# – Obtendo o ID do último registro inserido no banco de dados MySQL

Neste artigo, vou mostrar como podemos obter o ID do último registro inserido no banco de dados MySQL.

Eu já mostrei como recuperar o ID do último registro inserido no MS Access e no SQL Server nestes artigos:

Vamos fazer a mesma coisa para o MySQL.

Então, como obter o ID do último registro inserido no banco de dados MySQL? A resposta é:a depende… Sim, vai depender de como e quando você precisa obter essa informação.

Você deseja obter o último registro inserido ou o maior existente? Pense bem…

Existem 4 abordagens que você pode usar:

  • Obter o …
[Leia mais]
O método mais rápido para melhorar o desempenho de qualquer Servidor de Aplicações Web PHP usando MySQL ou PostgreSQL

No mundo do desenvolvimento Web, muitas vezes enfrentamos o problema da escolha do servidor certo para o ambiente de produção de um aplicativo Web.

Talvez precisemos comprar um novo servidor para suportar a carga esperada, ou talvez o cliente queira implantar em um servidor existente.

Em ambos os casos, se depois da implantação e execução, o aplicativo apresentar um desempenho ruim, então teremos que perguntar à equipe o que podemos fazer para tornar a aplicação mais rápida, ou usar um servidor melhor.

Portanto, precisamos determinar se o aplicativo tem uma boa performance. Leia este artigo para aprender a determinar rapidamente o desempenho de um aplicativo no servidor atual.

Introdução

Todos os desenvolvedores querem lançar suas aplicações Web e estar prontos para lidar eventualmente com grandes quantidades de tráfego quando tiverem sucesso.

O principal desafio da …

[Leia mais]
O método mais rápido para melhorar o desempenho de qualquer Servidor de Aplicações Web PHP usando MySQL ou PostgreSQL

No mundo do desenvolvimento Web, muitas vezes enfrentamos o problema da escolha do servidor certo para o ambiente de produção de um aplicativo Web.

Talvez precisemos comprar um novo servidor para suportar a carga esperada, ou talvez o cliente queira implantar em um servidor existente.

Em ambos os casos, se depois da implantação e execução, o aplicativo apresentar um desempenho ruim, então teremos que perguntar à equipe o que podemos fazer para tornar a aplicação mais rápida, ou usar um servidor melhor.

Portanto, precisamos determinar se o aplicativo tem uma boa performance. Leia este artigo para aprender a determinar rapidamente o desempenho de um aplicativo no servidor atual.

Introdução

Todos os desenvolvedores querem lançar suas aplicações Web e estar prontos para lidar eventualmente com grandes quantidades de tráfego quando tiverem sucesso.

O principal desafio da …

[Leia mais]
Uso eficiente do mysqli_result::$num_rows

Eu frequentemente vejo esse padrão em aplicativos herdados usando mysqli:

$result = $mysqli->query("
    SELECT *
    FROM table_name
    WHERE conditions = 'whatever'
");
if ($result && $result->num_rows > 0) {
    return;
}

A intenção do desenvolvedor aqui é ver se existem quaisquer linhas no banco de dados que correspondam a uma determinada condição. Ele faz isso emitindo uma consulta. Em seguida, perguntando ao objeto do resultado quantas linhas ele tem. O desenvolvedor não quer realmente nenhum dado do resultado e não se preocupa com a contagem de linha em si; esta é apenas uma verificação para ver se ao menos uma linha existe no banco de dados.

Esta é uma má conservação de recursos. O banco de dados faz o trabalho necessário para selecionar todas as colunas para todas as linhas que correspondem às condições, aloca memória para elas e as retorna. Mas o desenvolvedor descarta tudo isso …

[Leia mais]