Fork me on GitHub
Você esta em:Home » Destaque » Você já conhece o Percona Server?

Você já conhece o Percona Server?

O mais novo concorrente do MySQL Enterprise da Oracle o Percona Server! Tutorial passo a passo utilizando o Ec2.

É veio as coisas tão mudando, já estamos na era que LAMP é coisa do passado! Só falta surgir o concorrente do Linux, mas acho que esse ainda vai demorar umas décadas para aparecer! rs
Agora enquanto o AMP…  Já não podemos dizer o mesmo! rs
Assim como o Nginx, varnish, APC, FPM e AWS(Amazon Web Services), o Percona também foi amplamente aderido rapidamente por grandes empresas tais como:

Myisam, Innodb e agora o mais novo Xtradb. Ele foi criado pela empresa Percona e que criou o Percona Server que usa o Xtradb e outros serviços bem interessantes como Percona xtrabackup

Nesse artigo coloquei algumas informações sobre o mais novo server de mysql, além de também mostrar passo a passo de como configurar um server EC2 no Amazon para utilizar o Percona Server.

Procurei estudar o Percona Server por conta de buscar uma solução melhor para substituir o RDS da AWS, pois quem já usou viu que o RDS com o multi AZ além de ser para clientes que realmente necessitam de escalabilidade no server de banco de dados com muitos processos, viu também que seu preço é um tanto salgado rs

O Percona

XtraDB oferece ótimas melhorias sobre mecanismos de armazenamento MySQL integrados, mas não é um produto independente, e não é algo que se possa colocar em uma instalação MySQL existente. Portanto, se você quiser usar esse novo mecanismo de armazenamento, é preciso usar um produto que o ofereça.

Percona Server é esse produto, lançado pela Percona, empresa líder em consultoria de MySQL. É um produto de banco de dados independente que oferece aos usuários a capacidade de retirar sua instalação do MySQL e colocar o produto Percona Server, e assim obter a vantagem do mecanismo de armazenamento XtraDB. Afirma ser totalmente compatível com MySQL, portanto em teoria nenhum código precisaria ser alterado no software. Isso é, certamente, uma enorme vantagem. É ótimo para controle de qualidade quando você está procurando por uma melhoria de desempenho rápida. Portanto, um bom motivo para considerar Percona Server é aproveitar o mecanismo XtraDB com o menor número de alterações possível no código principal.

Além disso, eles são os autores originais do mecanismo de armazenamento XtraDB. A Percona lançou o código como software livre, de modo que ele pode ser encontrado em outros produtos, mas os criadores originais do mecanismo são as mesmas pessoas que criaram este produto. Usem essas informações como quiser.

Aqui estão as afirmações feitas para o Percona Server, retiradas do website deles:

  • Escalabilidade: lida com mais transações; faz ajuste de escala em servidores eficientes
  • Desempenho: Percona Server com XtraDB é extremamente rápido
  • Confiabilidade: resiliência a corrupção, replicação com segurança contra quebra
  • Gerenciamento: backup on-line, importação/exportação de tabela on-line
  • Diagnóstico: perfil e instrumentação avançados
  • Flexibilidade: tamanho de página variável, gerenciamento de buffer pool melhorado

A afirmação final da equipe do Percona é que o produto é o “mais próximo dos releases oficiais MySQL Enterprise da Oracle”, assim se diferenciando de outras ramificações que alteraram o código MySQL principal subjacente. Um ponto negativo do Percona Server é que eles gerenciam o código por si mesmos e não aceitam contribuições de desenvolvedores externos sem revisá-la antes, o que garante que eles controlem os recursos colocados no produto.

O XtraDB

XtraDB não é um produto independente, mas ainda é considerado uma ramificação de MySQL. XtraDB é, na verdade, um mecanismo de armazenamento para bancos de dados baseados em MySQL. Seria considerado um mecanismo de armazenamento adicional além do padrão MyISAM e InnoDB que já são parte do MySQL. MySQL 4 e 5 é instalado com cada tabela usando o mecanismo de armazenamento padrão MyISAM. InnoDB também é uma opção relativamente nova para mecanismo de armazenamento, e administradores e desenvolvedores de banco de dados podem escolher os tipos de mecanismo por tabela quando configuram o banco de dados. A principal diferença entre esses dois mecanismos de armazenamento é que MyISAM não oferece suporte transacional, mas InnoDB oferece. Outras diferenças são pequenas diferenças de desempenho, com InnoDB oferecendo pequenas melhorias de desempenho em relação a MyISAM, e mais confiabilidade e segurança ao lidar com perda de dados em potencial. Como InnoDB parece ser o mecanismo de armazenamento mais adequado para melhorias futuras, MySQL alterou o mecanismo padrão para InnoDB em vez de MyISAM a partir do release 5.5.

Construindo sobre essas vantagens, o mecanismo de armazenamento InnoDB foi ramificado em um novo mecanismo chamado XtraDB. Qual é a idade desse mecanismo de armazenamento? Ele foi lançado pela primeira vez há menos de 3 anos pela Percona. Portanto, é relativamente nova. Foi projetado especificamente para lidar com websites de alta disponibilidade modernos executando em servidores modernos. Foi projetado para executar em servidores com uma dúzia ou mais de núcleos e muita RAM (32 GB e mais). Esses são o tipo de servidores que qualquer empresa pode comprar de uma empresa de gerenciamento de servidores, e, portanto, um banco de dados deve ser projetado para aproveitá-los ao máximo.

A ramificação XtraDB tinha outro objetivo — ser uma substituição simples de entrada para o mecanismo de armazenamento InnoDB, de modo que usuários poderiam simplesmente alternar seu mecanismo de armazenamento sem ter que alterar o código do aplicativo subjacente. XtraDB tinha que ter compatibilidade retroativa com o InnoDB, além de fornecer todos os novos recursos e melhorias que eles queriam incluir. Eles atingiram esse objetivo.

Qual é a velocidade do XtraDB? Um teste de desempenho que eu encontrei diz que ele oferece 2.7x mais transações por minuto que o mecanismo InnoDB integrado no MySQL 5.1 (consulte Recursos). Certamente não é algo que pode ser ignorado, especialmente considerando que pode ser usado imediatamente.

Existem no mercado outros concorrentes direto do Mysql Server como o MariaDB ou Drizzle mas inúmeros posts mostram claramente que o desempenho do Percona é bem superior, chegando ser comparado ao Mysql Enterprise, vejam esses testes de desempenho: http://www.mysqlperformanceblog.com/2012/02/23/percona-server-vs-mysql-on-intel-320-ssd/ e http://www.percona.com/files/case-studies/ideeli-percona-server-xtradb.pdf

Resumindo: Percona Server é um substituto para o MySQL. Ele oferece mais desempenho e escalabilidade do servidor padrão do MySQL que vem com sua distribuição de Linux, enquanto ela usa os mesmos scripts de inicialização e ferramentas de linha de comando, o que torna fácil de usar.

Vamos por a mão na massa???

Instalando o Percona Server no EC2

Abaixo vou colocar o passo a passo de como instalei o Percona Server no server EC2 do Amazon. Procurei estudar o Percona principalmente por conta da utilização do RDS com Multi AZ ser um pouquinho oneroso rsrs, deixando assim a solução da utilização do RDS para clientes que necessitem de uma boa escalabilidade no banco de dados.

De posse do seu SSH logado no EC2, execute os seguintes passos:

Primeiramente vamos pular para o root executando o comando $sudo su

Entre na lista de repositórios do Linux com o comando $ cd /etc/yum.repos.d/ e crie o novo repositório do Percona com o comando $ touch Percona.repo

Edite o arquivo recém criado com o comando $ vim Percona.repo  Ao entrar add o seguinte código:

[percona]
name = CentOS $releasever – Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1

Pronto saída salvando!

Agora vamos entrar em $cd /etc/pki/rpm-gpg e vamos baixar o certificado para conexão a base do Percona. Acredito que essa chave libere o acesso para baixar os pacotes do Percona. Dentro dessa pasta execute $wget http://www.percona.com/downloads/RPM-GPG-KEY-percona

Pronto agora vamos executar o comando $yum update para atualizar nossa base do yum e assim instale os pacotes do Percona. A saída será +/- assim:

$yum update
...
 Installing : Percona-Server-shared-compat-5.5.16-...   1/3
 Installing : Percona-Server-shared-51-5.1.59-...       2/3
 Erasing    : mysql-libs-5.1.52-1.el6_0.1.x86_64        3/3

Para verificar se os pacotes foram adicionados corretamente a base do yum execute o comando: $yum list | grep percona Onde será mostrado uma lista com todos os pacotes disponíveis do Percona.

$rpm -qa |grep Percona
Percona-Server-shared-51-5.1.59-rel13.0.325.rhel6.x86_64
Percona-Server-shared-compat-5.5.16-rel22.0.189.rhel6.x86_64
$rpm -e Percona-Server-shared-51-5.1.67-rel14.3.506.rhel6.x86_64

Execute o comando $rpm -e Percona-Server-shared-51-5.1.67-rel14.3.506.rhel6.x86_64 e em seguida o comando $yum install Percona-Server-server-55.x86_64 e o resultado será:

$yum install Percona-Server-server-55.x86_64
...
 Installing : Percona-Server-shared-55-5.5.16-...       1/2
 Installing : Percona-Server-server-55-5.5.16-...       2/2
...
Complete!

OBS: Caso apareça algum conflito na instalação do Percona-Server execute a desinstalação dos módulos  que estejam dando conflito com o comando $yum remove nome-do-pacote

Aproveitando instale também o Client do Percona assim: $yum install Percona-Server-client-55.x86_64

$yum install Percona-Server-client-55.x86_64
...
 Installing : Percona-Server-client-55-5.5.16-...       1/1
...
Complete!

Bem agora já temos o Percona instalado, vamos então as configurações! Entre em $cd /etc/ verifique se existe o arquivo chamado my.conf, e se não existir crie o arquivo my.conf com o $touch my.conf

E add esse conteúdo nele:

[mysqld]
server-id=15
tmpdir=/dev/shm
datadir=/srv/mysql
user=mysql
innodb_file_per_table   = 1
max_connections         = 300
innodb_flush_method     = O_DIRECT

Obs: Essa conf é a básica, depois vamos verificar outras configurações mais detalhadas para o Magento!

Agora vamos criar a estrutura básica para começar o funcionamento do Percona em nosso server EC2 com os seguintes comandos abaixo:

$mkdir /srv/mysql  
$chown mysql:mysql /srv/mysql/ 
$mysql_install_db --datadir=/srv/mysql
Installing MySQL system tables...
111024 11:30:40 [Note] Flashcache bypass: disabled
111024 11:30:40 [Note] Flashcache setup error is : ioctl failed

OK
...
/usr/bin/mysqladmin -u root password 'new-password'
...

Pronto agora já temos o básico instalado e configurado, vamos iniciar o Persona!!

Obs: Você lembra do método antigo de se ligar o Mysql Server, o $service mysqld start? Agora você pode aposentar ele!

Para iniciar o Percona podemos executar o comando $service mysql start ou $/etc/init.d/mysql start

Agora vamos adicionar um usuário root e uma senha para acesso ao banco com o comando: $mysqladmin -u root password ‘Sua_Senha’

Para testar nossa base de dados vamos entrar no Mysql com o comando: $mysql -u root -p e ele irá pedir a senha setado no usuário root acima, onde será exibido +/- dessa forma abaixo, obs: Para exibir nossas tabelas do banco após logado execute o comando show databases;

$mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.16-55-log Percona Server (GPL).

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
Agora vamos brincar de verdade!!! rs
Vamos criar um usuário, depois criar uma tabela e enfim dar permissão do usuário a tabela! Não sabe como fazer?? Segue um tutorial com passo a passo de se realizar essas tarefas: http://thobias.org/doc/shell_bd.html Segue abaixo trecho do código para criar tabela e user
prompt> mysql -u root mysql -p
  Enter password:
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A

  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 4 to server version: 3.23.49-log

  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  mysql>
  mysql> create database magento;
  Query OK, 1 row affected (0.00 sec)

  mysql> GRANT usage ON *.* TO deivison@localhost IDENTIFIED BY 'senha';
  Query OK, 0 rows affected (0.00 sec)

  mysql> GRANT usage ON *.* TO deivison@'%' IDENTIFIED BY 'senha';
  Query OK, 0 rows affected (0.00 sec)

  mysql> GRANT CREATE, ALTER, DROP, SELECT, INSERT, UPDATE, DELETE ON magento.* TO deivison@localhost;
  Query OK, 0 rows affected (0.00 sec)

  mysql> GRANT CREATE, ALTER, DROP, SELECT, INSERT, UPDATE, DELETE ON mysql_bash.* TO deivison@'%';
  Query OK, 0 rows affected (0.00 sec)

  mysql>

O primeiro comando (create database magento;), cria uma base de dados com o nome magento, ou seja, um diretório onde ficarão as nossas tabelas.

O segundo comando cria um usuário chamado deivison com a senha senha, e dá permissão para ele se conectar ao banco de dados. O terceiro comando difere do segundo pelo fato de dar permissão para o usuário deivison se conectar ao banco à partir de qualquer máquina. Poderíamos especificar a máquina, exemplo:

 

mysql> GRANT ALL PRIVILEGES ON magento.* TO ‘deivison’@’%’ WITH GRANT OPTION;

  mysql> GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON mysql_bash.* TO user@localhost;
  mysql> GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON *.* TO user@'%';
  mysql> GRANT usage ON *.* TO deivison@maquina1.com IDENTIFIED BY 'senha';

% é um curinga que especifica qualquer máquina. Caso você não execute o terceiro comando, você poderá acessar o banco somente na mesma máquina que está rodando o banco, em outras palavras, o localhost.

Os dois últimos comandos servem para dar permissão ao usuário deivison fazer o que quiser na base da dados magento.

Note: o usuário só pode mexer na base de dados magento. Nas demais ele não tem permissão

Feito isto, execute:

  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)

  mysql> quit
  Bye
  prompt>

Beleza, já estamos com o nosso banco de dados pronto para começar a brincadeira.

Pronto! Enfim tudo instalado e configurado, agora você pode pelo Mysql Query Browser adicionar o seu domínio configurado no EC2 ou o seu ip, juntamente com seu usuário, senha e o nome de sua tabela.
OBS: Não recomendo a utilização do phpmyadmin, pois com ele vc poderá abrir ainda mais as tentativas de exploração de Brute Force em seu phpmyadmin. Utilizando o Mysql Query Browser você poderá fazer tudo que fazia com o phpmyadmin e para recuperar banco da dados você poderia usar o Mysql Administrator, mas recomendo que utilize o mysql pelo console do SSH conforme o meu post abaixo, pois assim tenha certeza que ganha muito tempo em sua recuperação do banco!

Bem espero ter ajudado, qualquer dúvida postem nos comentários! Nos próximo post sobre Percona irei falar sobre o XtraBackup, de como configurar bkps automatizados utilizando XtraBackup. vlw pessoal!

Melhor porque deixar para amanha, oque posso fazer agora???

O Percona Xtrabackup

Xtrabackup é uma poderosa ferramenta de criação e restore de backups, abaixo explicarei de forma simples como criar e recuperar um full backup pelo percona xtrabackup.

Primeiro vamos instalar o dito cujo com o comando:

$yum install xtrabackup

E depois instale o Tool kit do Percona assim:

$yum install percona-toolkit

Pronto! ele já esta instalado e pronto para trabalhar! rs fácil né!
Para se criar um full backup com o xtrabackup execute os comando abaixo substituindo pelos seus dados:
$innobackupex-1.5.1  –user=Seu-User  –password=Sua-Senha  –apply-log   SuaPastaBKP/
Fala sério heim!
Segue alguns links úteis:
Agradecimentos:
Agradeço ao grande amigo Isaac Sampaio que me ajudou bastante em entender o Percona Server e suas configurações! vlw Isaac!!!!
Outras fontes:

Sobre o Autor

Designer, Web Developer & Linux Administrator

Meu nome é Deivison Arthur, tenho 29 anos, sou Administrador Linux, Analista de Sistema, Webdesigner e Pesquisador. há mais de dez anos. Nasci no Rio de Janeiro, atualmente trabalho como Gerente de Tecnologia e E-commerce at Grupo FFernandes e Freelancer nas horas vagas. Desenvolvimento em Joomla, Wordpress, Drupal, Magento e outros GPLs...

Quantidade de Artigos : 114

Comentários (13)

  • Isaac Sampaio

    Estamos aqui pra somar…e olha que soma você produziu…..muito bom artigo…parabéns!!

    Responder
  • EUCLIDES

    Ao efetuar a linha

    mysql_install_db –datadir=/srv/mysql
    surge o seguinte erro:

    bash: mysql_install_db: command not found

    Será que vc pode me ajudar?

    Responder
    • Deivison Arthur L. Serpa

      Opa brother, execute o comando abaixo primeiro

      Para iniciar o Percona podemos executar o comando $service mysql start ou $/etc/init.d/mysql start

      Responder
      • EUCLIDES

        Olá amigo,

        Obrigado pela reposta.

        Consegui avançar um pouquinho.
        Só consegui reiniciar com service mysqld start.
        Devo estar comendo muita bola.
        O bom é que quanto mais leio mais curioso fico e com certeza mais aprendo.

        Reiniciei com service mysqld start e quando fui configurar a senha surge o seguinte

        mysqladmin -u root password ‘minhasenha’
        mysqladmin: connect to server at ‘localhost’ failed
        error: ‘Access denied for user ‘root’@’localhost’ (using password: NO)’

        Só falta a parte do banco de dados para iniciar a instalação do magento.

        Desculpa o desespero. rs

        Responder
  • Péricles

    Parabéns novamente Deivison! Tudo que ha de mais atualizado e moderno sobre magento encontro aqui no seu blog.

    Eu consegui fazer quase tudo. Estou enrolado no último comando $innobackupex-1.5.1 –user=Seu-User –password=Sua-Senha –apply-log SuaPastaBKP/

    Eu substituo “Seu-User” pelo meu nome de usuário, “Sua-Senha” pela minha senha e “SuaPastaBKP/” pelo caminho da minha pasta de backup (Ex.: /etc/backup/). Estou recebendo a seguinte mensagem após esse comando.

    innobackupex-1.5.1: Too many command line arguments

    Responder
  • Péricles

    Deivison,

    Como você informou a configuração básica para o arquivo my.conf, andei dando uma pesquisada sobre esse arquivo e só encontrei resultados para o arquivo my.cnf (sem a vogal “o” no .conf) e fiquei em dúvida qual das duas formas estão corretas.

    Encontrei uma configuração desse arquivo para magento no site https://github.com/magenx/magento-mysql você poderia dar sua opinião?

    Responder
  • Vitor Ugo Roda da Rosa Junior

    Boa tarde Deivison, tudo bem?
    Estou estudando um pouco de MySQL Cluster e vi também que a Percona tem uma solução de cluster que seria o Percona XtraDB Cluster.
    Conhece ambos os produtos? Numa comparação direta quais seria as vantagens e desvantagens de cada um na tua opinião?

    att
    Vitor Jr

    Responder
    • Deivison Arthur L. Serpa

      Boa tarde Vitor! Bem brother ainda não mexi com cluster com o percona nem com o mysql. Mas o RDS acredito que já faça isso de forma bem simplificada e apesar de muitas pessoas não saberem o RDS permite customizações do servidor, assim como um server local. O RDS esta cada vez mais abaixando seus valores e isso é bom rs! Porém no projeto http://www.lojamelissa.com.br que prestei uma consultoria, ao inves de usar o RDS usei 2 EC2 um para os files e outro como banco de dados usando Percona Server. Eles possuíam uma base muito grande de custommers chegando a 1.2 milhões. O Percona é melhor que o Mysql por conta de sua configuração inicial ser melhor, pois ao contrário do Mysql o Percona mesmo básico ja vem com algumas otimizações de velocidade e desempenho. Segue comparações abaixo desse projeto que prestei consultoria. vlw

      Antes com RDS e sem Varnish: http://www.webpagetest.org/result/130607_T6_T8C/
      Veja que o First Byte deles era altíssimo com 4.849s e 5.197s (rs o segundo era para diminuir e aumentou rs)

      Depois com 2 EC2 + um com Percona + Varnish: http://www.webpagetest.org/result/130512_F1_1X3/
      Já com minha otimização o First Byte foi para 0.111s e 0.063s

      Responder
      • Vitor Ugo Roda da Rosa Junior

        Pois é, vou ter que dar uma estudada no MySQL Cluster e também na solução da Percona. O que me deixou bem surpreso foi que no MySQL Cluster muda a engine das tabelas. Hoje praticamente se utiliza apenas InnoDB, e no MySQL Cluster a engine é NDB. Essa engine, pra começar não permite a criação de constraints entre FK’s, assim como no MyISAM. Também não permite a criação de tabelas temporárias. Enquanto o cluster da Percona utiliza o InnoDB e eles pregam que é um cluster com replicação síncrona…
        Vou ter que fazer laboratório entre ambos! :)
        Obrigado pelas tuas observações.

        att
        Vitor Jr

        Responder
  • eduardo

    Para quem usa AMI o que mudaria?? ja que vc fez o tutorial explicando a instalaçao no CentOS

    Responder
  • Felipe Marques

    Excelente tutorial!! Parabéns!

    Responder

Enviar Comentário

© 2012 Powered By Wordpress, Deivison Arthur

Ir para cima