SlideShare uma empresa Scribd logo
Replicação MySQL
<Insert Picture Here>
                                 com PHP




                                    Airton Lastori
                              airton.lastori@oracle.com



                                               dez-2011
agenda

    Replicação MySQL
     Como configurar
PHP com Replicação MySQL
agenda

   Replicação MySQL
     Como configurar
PHP com Replicação MySQL
Alguns usuários
Top websites




        fonte: alexa.com/topsites 17-ago-2011
Quem usa MySQL – Top 10 Websites
                1.Google
                2.Facebook
                3.Youtube
                4.Yahoo!
                5.Blogger.com
                6.Baidu.com
                7.Wikipedia
                8.Windows Live
                9.Twitter
                10.QQ.com
         fonte: alexa.com/topsites 17-ago-2011
Por que MySQL é muito utilizado?
      1. MySQL: projetado para a Web
      2. baixo TCO
      3. performance & escalabilidade
      4. confiabilidade & disponibilidade
      5. LAMP stack
      6. facilidade de uso & administração
      7. a melhor escolha para SaaS & cloud
      8. MySQL Cluster para serviços Web de escala
      9. MySQL Enterprise Edition da Oracle
      10. MySQL & NoSQL


http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php
Por que MySQL é muito utilizado?
      1. MySQL: projetado para a Web
      2. baixo TCO
      3. performance & escalabilidade
      4. confiabilidade & disponibilidade
      5. LAMP stack
      6. facilidade de uso & administração
      7. a melhor escolha para SaaS & cloud
      8. MySQL Cluster para serviços Web de escala
      9. MySQL Enterprise Edition da Oracle
      10. MySQL & NoSQL


http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php
Replicação do MySQL Server
          cenário usual
Clients




Master


                                       Slaves



             WRITES



                            READS
Requisitos de Performance

Throughput e Latência... para determinado volume de
leituras e escritas.

Read-intensive ou Write-intensive? Ambos?

Mantém os mesmos níveis quando for necessário
escalar?
Necessidade de escalar MySQL + PHP

408 Request Time out

503 Service Unavailable

1040 SQLSTATE: 08004 (ER_CON_COUNT_ERROR)
  – Too many connections
Caso de sucesso
     Wikipedia          Benefício-chave
                        • O MySQL permite economias
                         significativas com custos de
                         hardware, adicionando novos
                         servidores commodity de
                         acordo com o necessário e de
                         maneira incremental



                        Por que MySQL?
                        • Capacidade de escalar
                         conforme necessidade e de
                         maneira incremental
                        • Baixos custos e flexibilidade


           mysql.com/customers
Relays: aplicações de leitura intensiva
Master




               Clients
 Slave
Reads
Writes


                                  Master




                                                    Relay




                                           Slaves
Caso de sucesso
                        Benefícios-chave
                        • Flexibilidade para escolher o
                          hardware
                        • Implementação incremental
                        • Simplicidade e facilidade de uso



                        •   Por que MySQL?
                        • Capacidade de escalar para 5
                            bilhões de page views por mês,
                            gerando 1 escrita para cada 1,4
                            leituras
                        • Flexibilidade para crescer de
                            maneira incremental e com baixos
                            custos

           mysql.com/customers
Sharding: aplicações de escrita intensiva
Master




               Clients
 Slave
Reads
Writes


                                 Partitioning Logic

                         1   2           3            4            5


                                                                       Shards




                                                          Slaves
Requisitos de disponibilidade

Quantos “9s” de disponibilidade?

Failover automático ou manual?

Dados distribuídos e replicados:
  Replicação assíncrona , semi-síncrona ou síncrona?
  Resincronização automática?
  Redundância geográfica?
Alta disponibilidade

  Custo & Complexidade




                                   Replicação
                                                    Replication


                                                     ISPs &        On-Line    eCommerce
                                                     Corporativo   Services   Telecoms
                                                                              Militar

                           9            9
                                               ..        9            9          9
                         35 dias      4 days
                                      4 dias           8 horas       50 min     5 min
                                                                                          %
Alta disponibilidade
                                                                   Clustering &
                                                                   Redundância
                                                                     Geográfica
  Custo & Complexidade




                                                         Clustering &
                                                         Virtualização



                                            Replicação




                                                 ISPs &        On-Line    eCommerce
                                                 Corporativo   Services   Telecoms
                                                                          Militar

                           9        9
                                            ..       9            9          9
                         35 dias   4 days
                                   4 dias          8 horas       50 min     5 min
                                                                                      %
Outros usos da replicação

• Backup
    • diminuir carga servidor
    • atraso programado
• Análise
      • Datamarts
      • DW
• Integração
    • dataset completo
    • dataset parcial
Boa prática: monitoramento
MySQL Enterprise Monitor

• Auto-detecta topologia
• Agrupa e mantém Master/Slave
• Verificações do status e
  sincronização em tempo real
• Dados consolidados de todos
  servidores
• Notificação de problemas com
  sincronização
• Postura pró-ativa ao invés de
  reativa
• Aumenta disponibilidade

                                  edelivery.oracle.com
                                       trial 30 dias
Replicação MySQL: como funciona
                                      Aplicação




             1. Operação de Escrita




                     Master                            Slave

                                3. I/O Thread copia
                                mudanças do binlog
      2. Mudanças                      para relaylog
escritas no binlog                                      4. SQL Thread
                                                        aplica mudanças
                                                        do relaylog para o
                                                        MySQL


                 • Recurso nativo do MySQL
                 • Modelo assíncrono (padrão) ou semi-síncrono (5.5)
                 • Slave adiciona carga mínima ao Master
Replicação MySQL: como escalar
                     Aplicação   Load Balancer




    Writes & Reads               Reads             Reads




      Master                      Slave             Slave




                       Replicação MySQL

    • Escreva para 1 Master
    • Leia de vários Slaves, adicione mais quando necessário
    • Perfeito para aplicações de leitura intensiva
Formatos de replicação 1/2

Statement-based                        Row-based
›   comando SQL do Master é             ›   o dado do Master é aplicado no
    executado no Slave                      Slave, sem necessidade de ser
›   formato padrão                          interpretado
›   única opção MySQL 5.0 e anterior    ›   MySQL 5.1 e posterior oferece
                                            essa opção
›   [+] binlog é usualmente menor,
    principalmente quando statement     ›   [+] formato mais seguro, pois
    afeta mais de uma linha                 todos dados serão replicados
›   [-] alguns statements não podem     ›   [+] gera menos locks tanto no
    ser replicados, principalmente          Master quanto no Slave
    dependentes de functions não-       ›   [-] maior tempo de propagação,
    determinísticas                         mais dados precisam trafegar
                                        ›   [-] não permite concurrent insert
                                            no MyISAM no Slave


         dev.mysql.com/doc/refman/5.5/en/replication-formats.html
Formatos de replicação 2/2

Mixed-based – melhor dos dois mundos!

• Servidor muda dinamicamente o formato de acordo com a
  melhor situação
• Quando configurada, o formato statement-based é utilizado
  como padrão mas vai mudar para row-based baseado no
  melhor caso




     dev.mysql.com/doc/refman/5.5/en/replication-formats.html
Links
MySQL Replication Whitepaper
mysql.com/why-mysql/white-papers/mysql-wp-replication.php


MySQL Newsletter – Ed. Especial: Scaling with MySQL
mysql.com/news-and-events/newsletter/2010/2010-09sp.html


Casos de sucesso Scale-out
mysql.com/why-mysql/scaleout


MySQL 5.5 Replication Docs
dev.mysql.com/doc/refman/5.5/en/replication.html


MySQL Enterprise Edition Whitepaper
mysql.com/why-mysql/white-papers/mysql_wp_enterprise_ready.php
agenda

    Replicação MySQL
    Como configurar
PHP com Replicação MySQL
Configurar Replicação: visão geral

Cenário básico: 1 Master e 1 Slave
1. configure usuários
2. configure como Master e como Slave
3. instrua o Slave a se conectar ao Master e replicar
   o binlog

                  Master                    Slave




         binlog                               relaylog
                           replicação



     dev.mysql.com/doc/refman/5.5/en/replication-howto.html
Passo 1/3: configure usuários

Master                               Slave
1. Crie uma conta no Master para      Nenhuma ação necessária
   que a I/O Thread do Slave possa
   se conectar via TCP/IP:

   mysql> CREATE USER 'repl'@'%'
   IDENTIFIED BY 'slavepass';


2. Dê as permissões necessárias
   para conexão e gerenciamento da
   replicação:

   mysql> GRANT REPLICATION SLAVE,
   REPLICATION CLIENT ON *.* TO
   'repl'@'%';




         dev.mysql.com/doc/refman/5.5/en/replication-howto.html
Passo 2/3: configure Master e Slave

Master                                 Slave
1. Pare o mysqld e edite o arquivo      1. Pare o mysqld e edite o arquivo
   de configuração                         de configuração
2. Habilite o binlog                    2. Habilite o binlog (Opcional)
3. Especifique um server_id único       3. Especifique um server_id único
4. Reinicie o mysqld                    4. Reinicie o mysqld
                                        5. Clone os dados com MySQL
[mysqld]                                   Enterprise Backup ou mysqldump
                                            $mysqldump --single-transaction --all-databases --
log_bin=mysql-bin                           master-data=1 --host=servername1 | mysql –
                                            host=servername2
server_id=10

                                        [mysqld]
                                        server_id=15




           dev.mysql.com/doc/refman/5.5/en/replication-howto.html
Passo 3/3: instrua o Slave a replicar

Master                                 Slave
Determine a posição atual do log        Inicie a replicação:
binário:
                                        mysql> CHANGE MASTER TO
                                        MASTER_HOST='localhost',
sessão 1                                MASTER_port=3306,
mysql> FLUSH TABLES WITH READLOCK;
                                        MASTER_USER='repl',
                                        MASTER_PASSWORD='slavepass',
sessão 2                                MASTER_LOG_FILE='mysql-bin.000003',
mysql> SHOW MASTER STATUS G            MASTER_LOG_POS=n;
File: mysql-bin.000003
Position: 78                            mysql> START SLAVE;
                                        mysql> SHOW SLAVE STATUS G

                                        Prefira executar este comando ao
                                        invés de adicionar ao arquivo de
                                        configuração para permitir trocar de
                                        Master sem parar o Slave.

           dev.mysql.com/doc/refman/5.5/en/replication-howto.html
agenda

    Replicação MySQL
     Como configurar
PHP com Replicação MySQL
Ambiente de testes Windows 1/3
1.   Web server Apache HTTPd ou Glassfish ou MS-IIS ou nginx etc
2.   PHP runtime versão 5.3.6 ou superior
3.   MySQL Server 1 Master e 1 Slave, versão 5.5, BD Sakila
4.   Ferramentas MySQL Workbench, Netbeans, Notepad++ etc

Para facilitar usaremos bundles:

• XAMPP for Windows v1.7.7
       •   Apache 2.2.21
       •   MySQL 5.5.16
       •   PHP 5.3.8
       •   ...
• MySQL Installer for Windows
       • MySQL Server 5.5.18
       • MySQL Workbench 5.2.35
       • BD Sakila, Documentação, Connectors
Ambiente de testes Windows 2/3
1. XAMPP for Windows apachefriends.org/pt_br/xampp.html
    a. Baixar ZIP e descompactar na pasta C:XAMPP
    b. Modificar a porta do MySQL para rodar 2 instâncias na mesma
    máquina:
        C:xamppmysqlbinmy.ini
        mysqld]
        port= 3307
    c. (Opcional) Modificar a porta do Apache:
        C:xamppapacheconfhttpd.conf
        Listen 81
    d. C:xamppxampp_start.exe

2. MySQL Installer dev.mysql.com/downloads/installer
    a. Instalar todas opções padrão, já será inicializado como serviço
    -defaults-file="C:ProgramDataMySQLMySQL Server 5.5my.ini"


3. (Opcional) Netbeans netbeans.org
Ambiente de testes Windows 3/3
1. Verificar instalação
   a. Criar arquivo info.php em C:xamphtdocs
    <?php phpinfo(); ?>
   b. Acessar: http://localhost:81/info.php
Exemplo: conectando ao MySQL
<?php
echo "<h1>Master</h1>";
$connection_m = mysqli_connect('localhost', 'root', 'root', 'sakila', '3310');
if (!$connection_m) {
     echo 'Error: ' + mysqli_connect_error();
} else {
    $result_m = mysqli_query($connection_m, 'SELECT film_id, title, release_year FROM film ORDER
BY film_id DESC LIMIT 5');
     if (!$result_m) {
     echo 'Error: ' + mysqli_error();
     } else {
     echo "<table>n";
           while ($row = mysqli_fetch_assoc($result_m)) {
                printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>n",
                   htmlentities($row['film_id']),
                   htmlentities($row['title']),
                        htmlentities($row['release_year']));
        } //end while
        echo "</table>n";
        mysqli_free_result($result_m);
     } //end if
     mysqli_close($connection_m);
} //end if
// REPETIR PARA SLAVE
?>
Teste: quando o Master cai
1. Teste se Update propaga
   para Slave
   mysql> UPDATE `sakila`.`film` SET
   `release_year`=2008 WHERE
   `film_id`='1000';


2. Parar o servidor Master
    "C:Program FilesMySQLMySQL Server
   5.5binmysqladmin" --defaults-
   file="C:ProgramDataMySQLMySQL
   Server 5.5my.ini" shutdown -uroot –p


3. Slave contém os dados
   replicados e pode ser usado
   para failover
Drivers PHP para MySQL (extensões)

ext/mysql
• depricated: uma das primeiras PHP extensions, mantido
  para PHP 4, sem novas funcionalidades no PHP 5
• novas funcionalidades do MySQL não são suportadas
mysqli
• suporte completo às funcionalidades MySQL
• Ativamente mantido e suportado pela Oracle
PDO_mysql
• o PHP Data Objects define uma inferface leve e consistente
  para acessar vários BDs
• boa opção para aplicações simples e portáveis
PHP 5.3 e mysqlnd – Native Driver


      Infrastructure                        PHP Module (Extension) API

                                     ext/mysql         mysqli       PDO_mysql
                   PHP Streams
      PHP Memory
PHP




                                 …




                                                       mysqlnd
                                     PECL/mysqlnd_ms            …        …



                                       MySQL Server
mysqlnd Statistics




• Por volta de 150 estatisticas coletadas
• mysqli_get_client_stats(), mysqli_get_connection_stats()
PECL/mysqlnd_ms                                                               Stable
                                                                               NOV-11
PHP mysqlnd replication plugin


Automatic read/write splitting
 • can be controlled with SQL hints
 • can be replaced providing callback
 • can be disabled for MySQL Cluster use
Load Balancing
 • random (pick for every statement or once per request, latter is default)
 • round robin (iterate per statement)
 • can be replaced providing callback
 • can be controlled with SQL hint
Fail over
 • optional, automatic connect fail over

Connection pooling
 • Lazy connections (don’t open before use, default)
Transparência para aplicação
Exemplo: split e load balancing
Limitações do PECL/mysqlnd_ms
1. nem todos cenários de consistência são
   suportados (non-ACID): por exemplo, consistência
   forte onde os clientes tem sempre a mesma visão
   após um update
   http://blog.ulf-wendel.de/2011/consistency-cloud-and-the-php-mysqlnd-replication-
   plugin/


2. não suporta topologias com mais de 1 master

3. para spliting são considerados SELECT e não é
   suportado multiplos statements inline

4. native prepared statements não são suportados, a
   não ser client-side prepared statement emulation
   (como no caso do PDO_MySQL)
Links

MySQL com PHP
dev.mysql.com/usingmysql/php

Connector/PHP User Manual
dev.mysql.com/doc/refman/5.5/en/apis-php.html


Documentação PECL/mysqlnd_ms
php.net/mysqlnd_ms


Blog Ulf Wendel
blog.ulf-wendel.de/2011/112-stable-release-of-the-replication-and-load-
   balancing-plugin-for-php
Mais sobre MySQL
MySQL Treinamento e Certificação

       Treinamentos
  MySQL DBA           MySQLDeveloper               Certificações
MySQL Boot Camp        MySQL Boot Camp
  Accelerated            Accelerated

MySQL Performance     MySQL Performance
 Tuning Boot Camp      Tuning Boot Camp
    Accelerated           Accelerated

MySQL for Begginers   MySQL for Begginers

MySQL for Database     MySQL and PHP
  Administrators      Developing Dynamic
                       Web Applicationg
MySQL Performance
     Tuning           MySQL for Developers

   MySQL High          MySQL Advanced
    Availability       Stored Procedures

  MySQL Cluster
                                                                   Opcional
                                                                   Necessário
                         http://education.oracle.com
07-dez-2011


Registre-se:
 http://bit.ly/usLQoD
Sumário
O PHP é uma importante linguagem que ajudou a tornar o MySQL o
     Banco de Dados Open Source mais popular do mundo.


O recurso de replicação nativo do MySQL é fácil de configurar e pode
    ser usado para aumento de performance e disponibilidade de
                          aplicações PHP.


O driver nativo mysqlnd em conjunto com plug-in PECL/mysqlnd_ms
podem fazer load balancing e failover de maneira transparente para
                         aplicações PHP.
Obrigado!
                                       Time MySQL Brasil




marcos.trujillo@oracle.com   marcelo.t.souza@oracle.com     ana.guiselini@oracle.com   airton.lastori@oracle.com




                         @MySQLBR                         meetup.com/MySQL-BR

Mais conteúdo relacionado

Mais procurados

MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
MySQL Brasil
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
MySQL Brasil
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
MySQL Brasil
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
MySQL Brasil
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016
MySQL Brasil
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
MySQL Brasil
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
MySQL Brasil
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
MySQL Brasil
 
MySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para Desenvolvedores
MySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
MySQL Brasil
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
MySQL Brasil
 
MySQL e Oracle para DBAs
MySQL e Oracle para DBAsMySQL e Oracle para DBAs
MySQL e Oracle para DBAs
Airton Lastori
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQL
MySQL Brasil
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
MySQL Brasil
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs community
MySQL Brasil
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
Juliano de Oliveira Falcao
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundo
MySQL Brasil
 
Oracle Real Application Clusters
Oracle Real Application ClustersOracle Real Application Clusters
Oracle Real Application Clusters
4Partner
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
MySQL Brasil
 
Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7
Mathias Brem
 

Mais procurados (20)

MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
 
MySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para Desenvolvedores
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
MySQL e Oracle para DBAs
MySQL e Oracle para DBAsMySQL e Oracle para DBAs
MySQL e Oracle para DBAs
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQL
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs community
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundo
 
Oracle Real Application Clusters
Oracle Real Application ClustersOracle Real Application Clusters
Oracle Real Application Clusters
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7
 

Semelhante a Replicação MySQL e PHP

MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
MySQL Brasil
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese Version
Artur Alves
 
Bancos de Dados na AWS
Bancos de Dados na AWSBancos de Dados na AWS
Bancos de Dados na AWS
Amazon Web Services LATAM
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
assertimarilia
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summit
infolive
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
MySQL Brasil
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
MySQL Brasil
 
MySQL e Oracle para Desenvolvedores
MySQL e Oracle para DesenvolvedoresMySQL e Oracle para Desenvolvedores
MySQL e Oracle para Desenvolvedores
MySQL Brasil
 
MySQL e Oracle para Desenvolvedores
MySQL e Oracle para DesenvolvedoresMySQL e Oracle para Desenvolvedores
MySQL e Oracle para Desenvolvedores
Airton Lastori
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
MySQL Brasil
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
Airton Lastori
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Ricardo Ferreira
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
MySQL Brasil
 
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitWhat’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
Amazon Web Services
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
Fábio Rosato
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
Leandro Silva
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
Saveincloud
 
Arquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoArquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma Introdução
Jose Papo, MSc
 
Lean Startup e Computação em Nuvem
Lean Startup e Computação em NuvemLean Startup e Computação em Nuvem
Lean Startup e Computação em Nuvem
Jose Papo, MSc
 
Rails nas Nuvens
Rails nas NuvensRails nas Nuvens
Rails nas Nuvens
Saulo Arruda
 

Semelhante a Replicação MySQL e PHP (20)

MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese Version
 
Bancos de Dados na AWS
Bancos de Dados na AWSBancos de Dados na AWS
Bancos de Dados na AWS
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summit
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
 
MySQL e Oracle para Desenvolvedores
MySQL e Oracle para DesenvolvedoresMySQL e Oracle para Desenvolvedores
MySQL e Oracle para Desenvolvedores
 
MySQL e Oracle para Desenvolvedores
MySQL e Oracle para DesenvolvedoresMySQL e Oracle para Desenvolvedores
MySQL e Oracle para Desenvolvedores
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitWhat’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
Arquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoArquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma Introdução
 
Lean Startup e Computação em Nuvem
Lean Startup e Computação em NuvemLean Startup e Computação em Nuvem
Lean Startup e Computação em Nuvem
 
Rails nas Nuvens
Rails nas NuvensRails nas Nuvens
Rails nas Nuvens
 

Mais de MySQL Brasil

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
MySQL Brasil
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
MySQL Brasil
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
MySQL Brasil
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
MySQL Brasil
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
MySQL Brasil
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
MySQL Brasil
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQL
MySQL Brasil
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7
MySQL Brasil
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
MySQL Brasil
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
MySQL Brasil
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
MySQL Brasil
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
MySQL Brasil
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
MySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
MySQL Brasil
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition Portfolio
MySQL Brasil
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
MySQL Brasil
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
MySQL Brasil
 

Mais de MySQL Brasil (17)

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQL
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition Portfolio
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 

Último

DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (6)

DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Replicação MySQL e PHP

  • 1. Replicação MySQL <Insert Picture Here> com PHP Airton Lastori airton.lastori@oracle.com dez-2011
  • 2. agenda Replicação MySQL Como configurar PHP com Replicação MySQL
  • 3. agenda Replicação MySQL Como configurar PHP com Replicação MySQL
  • 5. Top websites fonte: alexa.com/topsites 17-ago-2011
  • 6. Quem usa MySQL – Top 10 Websites 1.Google 2.Facebook 3.Youtube 4.Yahoo! 5.Blogger.com 6.Baidu.com 7.Wikipedia 8.Windows Live 9.Twitter 10.QQ.com fonte: alexa.com/topsites 17-ago-2011
  • 7. Por que MySQL é muito utilizado? 1. MySQL: projetado para a Web 2. baixo TCO 3. performance & escalabilidade 4. confiabilidade & disponibilidade 5. LAMP stack 6. facilidade de uso & administração 7. a melhor escolha para SaaS & cloud 8. MySQL Cluster para serviços Web de escala 9. MySQL Enterprise Edition da Oracle 10. MySQL & NoSQL http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php
  • 8. Por que MySQL é muito utilizado? 1. MySQL: projetado para a Web 2. baixo TCO 3. performance & escalabilidade 4. confiabilidade & disponibilidade 5. LAMP stack 6. facilidade de uso & administração 7. a melhor escolha para SaaS & cloud 8. MySQL Cluster para serviços Web de escala 9. MySQL Enterprise Edition da Oracle 10. MySQL & NoSQL http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php
  • 9. Replicação do MySQL Server cenário usual Clients Master Slaves WRITES READS
  • 10. Requisitos de Performance Throughput e Latência... para determinado volume de leituras e escritas. Read-intensive ou Write-intensive? Ambos? Mantém os mesmos níveis quando for necessário escalar?
  • 11. Necessidade de escalar MySQL + PHP 408 Request Time out 503 Service Unavailable 1040 SQLSTATE: 08004 (ER_CON_COUNT_ERROR) – Too many connections
  • 12. Caso de sucesso Wikipedia Benefício-chave • O MySQL permite economias significativas com custos de hardware, adicionando novos servidores commodity de acordo com o necessário e de maneira incremental Por que MySQL? • Capacidade de escalar conforme necessidade e de maneira incremental • Baixos custos e flexibilidade mysql.com/customers
  • 13. Relays: aplicações de leitura intensiva Master Clients Slave Reads Writes Master Relay Slaves
  • 14. Caso de sucesso Benefícios-chave • Flexibilidade para escolher o hardware • Implementação incremental • Simplicidade e facilidade de uso • Por que MySQL? • Capacidade de escalar para 5 bilhões de page views por mês, gerando 1 escrita para cada 1,4 leituras • Flexibilidade para crescer de maneira incremental e com baixos custos mysql.com/customers
  • 15. Sharding: aplicações de escrita intensiva Master Clients Slave Reads Writes Partitioning Logic 1 2 3 4 5 Shards Slaves
  • 16. Requisitos de disponibilidade Quantos “9s” de disponibilidade? Failover automático ou manual? Dados distribuídos e replicados: Replicação assíncrona , semi-síncrona ou síncrona? Resincronização automática? Redundância geográfica?
  • 17. Alta disponibilidade Custo & Complexidade Replicação Replication ISPs & On-Line eCommerce Corporativo Services Telecoms Militar 9 9 .. 9 9 9 35 dias 4 days 4 dias 8 horas 50 min 5 min %
  • 18. Alta disponibilidade Clustering & Redundância Geográfica Custo & Complexidade Clustering & Virtualização Replicação ISPs & On-Line eCommerce Corporativo Services Telecoms Militar 9 9 .. 9 9 9 35 dias 4 days 4 dias 8 horas 50 min 5 min %
  • 19. Outros usos da replicação • Backup • diminuir carga servidor • atraso programado • Análise • Datamarts • DW • Integração • dataset completo • dataset parcial
  • 20. Boa prática: monitoramento MySQL Enterprise Monitor • Auto-detecta topologia • Agrupa e mantém Master/Slave • Verificações do status e sincronização em tempo real • Dados consolidados de todos servidores • Notificação de problemas com sincronização • Postura pró-ativa ao invés de reativa • Aumenta disponibilidade edelivery.oracle.com trial 30 dias
  • 21. Replicação MySQL: como funciona Aplicação 1. Operação de Escrita Master Slave 3. I/O Thread copia mudanças do binlog 2. Mudanças para relaylog escritas no binlog 4. SQL Thread aplica mudanças do relaylog para o MySQL • Recurso nativo do MySQL • Modelo assíncrono (padrão) ou semi-síncrono (5.5) • Slave adiciona carga mínima ao Master
  • 22. Replicação MySQL: como escalar Aplicação Load Balancer Writes & Reads Reads Reads Master Slave Slave Replicação MySQL • Escreva para 1 Master • Leia de vários Slaves, adicione mais quando necessário • Perfeito para aplicações de leitura intensiva
  • 23. Formatos de replicação 1/2 Statement-based Row-based › comando SQL do Master é › o dado do Master é aplicado no executado no Slave Slave, sem necessidade de ser › formato padrão interpretado › única opção MySQL 5.0 e anterior › MySQL 5.1 e posterior oferece essa opção › [+] binlog é usualmente menor, principalmente quando statement › [+] formato mais seguro, pois afeta mais de uma linha todos dados serão replicados › [-] alguns statements não podem › [+] gera menos locks tanto no ser replicados, principalmente Master quanto no Slave dependentes de functions não- › [-] maior tempo de propagação, determinísticas mais dados precisam trafegar › [-] não permite concurrent insert no MyISAM no Slave dev.mysql.com/doc/refman/5.5/en/replication-formats.html
  • 24. Formatos de replicação 2/2 Mixed-based – melhor dos dois mundos! • Servidor muda dinamicamente o formato de acordo com a melhor situação • Quando configurada, o formato statement-based é utilizado como padrão mas vai mudar para row-based baseado no melhor caso dev.mysql.com/doc/refman/5.5/en/replication-formats.html
  • 25. Links MySQL Replication Whitepaper mysql.com/why-mysql/white-papers/mysql-wp-replication.php MySQL Newsletter – Ed. Especial: Scaling with MySQL mysql.com/news-and-events/newsletter/2010/2010-09sp.html Casos de sucesso Scale-out mysql.com/why-mysql/scaleout MySQL 5.5 Replication Docs dev.mysql.com/doc/refman/5.5/en/replication.html MySQL Enterprise Edition Whitepaper mysql.com/why-mysql/white-papers/mysql_wp_enterprise_ready.php
  • 26. agenda Replicação MySQL Como configurar PHP com Replicação MySQL
  • 27. Configurar Replicação: visão geral Cenário básico: 1 Master e 1 Slave 1. configure usuários 2. configure como Master e como Slave 3. instrua o Slave a se conectar ao Master e replicar o binlog Master Slave binlog relaylog replicação dev.mysql.com/doc/refman/5.5/en/replication-howto.html
  • 28. Passo 1/3: configure usuários Master Slave 1. Crie uma conta no Master para Nenhuma ação necessária que a I/O Thread do Slave possa se conectar via TCP/IP: mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass'; 2. Dê as permissões necessárias para conexão e gerenciamento da replicação: mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%'; dev.mysql.com/doc/refman/5.5/en/replication-howto.html
  • 29. Passo 2/3: configure Master e Slave Master Slave 1. Pare o mysqld e edite o arquivo 1. Pare o mysqld e edite o arquivo de configuração de configuração 2. Habilite o binlog 2. Habilite o binlog (Opcional) 3. Especifique um server_id único 3. Especifique um server_id único 4. Reinicie o mysqld 4. Reinicie o mysqld 5. Clone os dados com MySQL [mysqld] Enterprise Backup ou mysqldump $mysqldump --single-transaction --all-databases -- log_bin=mysql-bin master-data=1 --host=servername1 | mysql – host=servername2 server_id=10 [mysqld] server_id=15 dev.mysql.com/doc/refman/5.5/en/replication-howto.html
  • 30. Passo 3/3: instrua o Slave a replicar Master Slave Determine a posição atual do log Inicie a replicação: binário: mysql> CHANGE MASTER TO MASTER_HOST='localhost', sessão 1 MASTER_port=3306, mysql> FLUSH TABLES WITH READLOCK; MASTER_USER='repl', MASTER_PASSWORD='slavepass', sessão 2 MASTER_LOG_FILE='mysql-bin.000003', mysql> SHOW MASTER STATUS G MASTER_LOG_POS=n; File: mysql-bin.000003 Position: 78 mysql> START SLAVE; mysql> SHOW SLAVE STATUS G Prefira executar este comando ao invés de adicionar ao arquivo de configuração para permitir trocar de Master sem parar o Slave. dev.mysql.com/doc/refman/5.5/en/replication-howto.html
  • 31. agenda Replicação MySQL Como configurar PHP com Replicação MySQL
  • 32. Ambiente de testes Windows 1/3 1. Web server Apache HTTPd ou Glassfish ou MS-IIS ou nginx etc 2. PHP runtime versão 5.3.6 ou superior 3. MySQL Server 1 Master e 1 Slave, versão 5.5, BD Sakila 4. Ferramentas MySQL Workbench, Netbeans, Notepad++ etc Para facilitar usaremos bundles: • XAMPP for Windows v1.7.7 • Apache 2.2.21 • MySQL 5.5.16 • PHP 5.3.8 • ... • MySQL Installer for Windows • MySQL Server 5.5.18 • MySQL Workbench 5.2.35 • BD Sakila, Documentação, Connectors
  • 33. Ambiente de testes Windows 2/3 1. XAMPP for Windows apachefriends.org/pt_br/xampp.html a. Baixar ZIP e descompactar na pasta C:XAMPP b. Modificar a porta do MySQL para rodar 2 instâncias na mesma máquina: C:xamppmysqlbinmy.ini mysqld] port= 3307 c. (Opcional) Modificar a porta do Apache: C:xamppapacheconfhttpd.conf Listen 81 d. C:xamppxampp_start.exe 2. MySQL Installer dev.mysql.com/downloads/installer a. Instalar todas opções padrão, já será inicializado como serviço -defaults-file="C:ProgramDataMySQLMySQL Server 5.5my.ini" 3. (Opcional) Netbeans netbeans.org
  • 34. Ambiente de testes Windows 3/3 1. Verificar instalação a. Criar arquivo info.php em C:xamphtdocs <?php phpinfo(); ?> b. Acessar: http://localhost:81/info.php
  • 35. Exemplo: conectando ao MySQL <?php echo "<h1>Master</h1>"; $connection_m = mysqli_connect('localhost', 'root', 'root', 'sakila', '3310'); if (!$connection_m) { echo 'Error: ' + mysqli_connect_error(); } else { $result_m = mysqli_query($connection_m, 'SELECT film_id, title, release_year FROM film ORDER BY film_id DESC LIMIT 5'); if (!$result_m) { echo 'Error: ' + mysqli_error(); } else { echo "<table>n"; while ($row = mysqli_fetch_assoc($result_m)) { printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>n", htmlentities($row['film_id']), htmlentities($row['title']), htmlentities($row['release_year'])); } //end while echo "</table>n"; mysqli_free_result($result_m); } //end if mysqli_close($connection_m); } //end if // REPETIR PARA SLAVE ?>
  • 36. Teste: quando o Master cai 1. Teste se Update propaga para Slave mysql> UPDATE `sakila`.`film` SET `release_year`=2008 WHERE `film_id`='1000'; 2. Parar o servidor Master "C:Program FilesMySQLMySQL Server 5.5binmysqladmin" --defaults- file="C:ProgramDataMySQLMySQL Server 5.5my.ini" shutdown -uroot –p 3. Slave contém os dados replicados e pode ser usado para failover
  • 37. Drivers PHP para MySQL (extensões) ext/mysql • depricated: uma das primeiras PHP extensions, mantido para PHP 4, sem novas funcionalidades no PHP 5 • novas funcionalidades do MySQL não são suportadas mysqli • suporte completo às funcionalidades MySQL • Ativamente mantido e suportado pela Oracle PDO_mysql • o PHP Data Objects define uma inferface leve e consistente para acessar vários BDs • boa opção para aplicações simples e portáveis
  • 38. PHP 5.3 e mysqlnd – Native Driver Infrastructure PHP Module (Extension) API ext/mysql mysqli PDO_mysql PHP Streams PHP Memory PHP … mysqlnd PECL/mysqlnd_ms … … MySQL Server
  • 39. mysqlnd Statistics • Por volta de 150 estatisticas coletadas • mysqli_get_client_stats(), mysqli_get_connection_stats()
  • 40. PECL/mysqlnd_ms Stable NOV-11 PHP mysqlnd replication plugin Automatic read/write splitting • can be controlled with SQL hints • can be replaced providing callback • can be disabled for MySQL Cluster use Load Balancing • random (pick for every statement or once per request, latter is default) • round robin (iterate per statement) • can be replaced providing callback • can be controlled with SQL hint Fail over • optional, automatic connect fail over Connection pooling • Lazy connections (don’t open before use, default)
  • 42. Exemplo: split e load balancing
  • 43. Limitações do PECL/mysqlnd_ms 1. nem todos cenários de consistência são suportados (non-ACID): por exemplo, consistência forte onde os clientes tem sempre a mesma visão após um update http://blog.ulf-wendel.de/2011/consistency-cloud-and-the-php-mysqlnd-replication- plugin/ 2. não suporta topologias com mais de 1 master 3. para spliting são considerados SELECT e não é suportado multiplos statements inline 4. native prepared statements não são suportados, a não ser client-side prepared statement emulation (como no caso do PDO_MySQL)
  • 44. Links MySQL com PHP dev.mysql.com/usingmysql/php Connector/PHP User Manual dev.mysql.com/doc/refman/5.5/en/apis-php.html Documentação PECL/mysqlnd_ms php.net/mysqlnd_ms Blog Ulf Wendel blog.ulf-wendel.de/2011/112-stable-release-of-the-replication-and-load- balancing-plugin-for-php
  • 46. MySQL Treinamento e Certificação Treinamentos MySQL DBA MySQLDeveloper Certificações MySQL Boot Camp MySQL Boot Camp Accelerated Accelerated MySQL Performance MySQL Performance Tuning Boot Camp Tuning Boot Camp Accelerated Accelerated MySQL for Begginers MySQL for Begginers MySQL for Database MySQL and PHP Administrators Developing Dynamic Web Applicationg MySQL Performance Tuning MySQL for Developers MySQL High MySQL Advanced Availability Stored Procedures MySQL Cluster Opcional Necessário http://education.oracle.com
  • 48. Sumário O PHP é uma importante linguagem que ajudou a tornar o MySQL o Banco de Dados Open Source mais popular do mundo. O recurso de replicação nativo do MySQL é fácil de configurar e pode ser usado para aumento de performance e disponibilidade de aplicações PHP. O driver nativo mysqlnd em conjunto com plug-in PECL/mysqlnd_ms podem fazer load balancing e failover de maneira transparente para aplicações PHP.
  • 49. Obrigado! Time MySQL Brasil marcos.trujillo@oracle.com marcelo.t.souza@oracle.com ana.guiselini@oracle.com airton.lastori@oracle.com @MySQLBR meetup.com/MySQL-BR