AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

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

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 12713
Accepted
com
com
Asked: 2012-02-13 02:38:46 +0800 CST2012-02-13 02:38:46 +0800 CST 2012-02-13 02:38:46 +0800 CST

Script de Automação de Replicação Mysql

  • 772

Estou procurando algo que nos ajude a criar muitos escravos mysql conectados ao mestre especificado, digamos uma espécie de replicação em massa .

Se existir alguma solução para o efeito. No caso simples, pode ser apenas um script bash, que bloqueia o banco de dados mestre, copia os arquivos da tabela para o novo escravo, restaura a posição e inicia a replicação.

Do seu conhecimento se algo descrito acima existe?

mysql replication
  • 3 3 respostas
  • 6128 Views

3 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-04-14T11:11:46+08:002012-04-14T11:11:46+08:00

    Gostaria de sugerir algo radical. Eu tive essa ideia de StarTrek: Deep Space 9 (Call to Arms)

    Um campo minado foi criado em torno de um buraco de minhoca para evitar que as Forças do Domínio e os Jemhadar passassem. Cada mina explosiva estava armada com um replicador que permitia que uma mina recriasse outra mina depois que ela explodisse. Portanto, o campo minado permanece ativo indefinidamente.

    Com essa analogia do DS9, trago uma ideia interessante.

    Você configurou 2 escravos de leitura inicial com MySQL Slave com innodb desabilitado

    [mysqld]
    skip-innodb
    

    Isso é opcional. Minha preferência é um escravo totalmente MyISAM para fazer leituras porque é mais rápido para leituras do que o InnoDB para pequenos conjuntos de dados. Se você optar por usar o InnoDB, certifique-se de relaxar a conformidade do ACID com este

    [mysqld]
    innodb_flush_log_at_trx_commit = 0
    

    No caso de um acidente, apenas destrua o Escravo e crie um novo

    Chamaremos os Escravos de S0 e S1

    Aqui está outra coisa: tenha isso em /etc/my.cnf em S0

    [mysqld]
    innodb_max_dirty_pages_pct = 0;
    innodb_fast_shutdown = 0
    

    Isso ajudará o desligamento rápido do S0 com dados completamente liberados.

    O seguinte é o que você deve escrever no processo do replicador

    Quando você precisar gerar um novo escravo (vamos chamá-lo de S2), eis o que você deve fazer

    PASSO 01) Em S0, executeservice mysql stop

    PASSO 02) Instale a mesma versão do MySQL que o S0 possui no S2

    PASSO 03) Em S0,scp /etc/my.cnf S2:/etc/.

    PASSO 04) No S2, você precisa alterar o server-id/etc/my.cnf no S2 para um Valor Único (sugestão: use o 2º, 3º e 4º octeto [sem os pontos] do IP privado do S2)

    PASSO 05) No S2, remova ou comente o innodb_max_dirty_pages_pct = 0arquivo /etc/my.cnf

    PASSO 06) No S0, execute rsync -av /var/lib/mysql S2:/var/lib/mysql( Nota: Se você tiver que girar 5 escravos, execute os 5 rsyncs neste ponto )

    PASSO 07) No S2, service mysql start(a replicação do MySQL começa imediatamente de onde o S0 parou)

    PASSO 08) Em S0, rodeservice mysql start

    Depois de criar o script do replicador, você pode usá-lo para ativar o MySQL em novos escravos.

    Enquanto isso, S1 está disponível para consultas SELECT e continua replicando.

    S0 é usado para recriar um novo Slave.

    Se você estiver fazendo isso em conjunto com a ativação do Amazon EC2 ou de alguns outros servidores de banco de dados em nuvem, verifique com os administradores do sistema qualquer comando/API do Linux que permita a ativação de um servidor de banco de dados. Em seguida, você aplica o replicador ao servidor de banco de dados recém-gerado. Melhor ainda, você pode incorporar a API de criação do Db Server em seu Replicator Script.

    EMBARGO

    Se você tiver que rodar dezenas ou centenas de Slaves, tudo que você precisa fazer é ter 10 Replicator Slave Servers (S0 - S9) e ter 10 cópias do replicator script operator em diferentes Replicator Slaves.

    • 1
  2. Nicomak
    2016-06-16T06:48:01+08:002016-06-16T06:48:01+08:00

    Escrevi esta postagem no blog que explica como criar o script bash para automatizar a replicação Master-Slave no MySQL:

    http://blog.ditullio.fr/2016/04/30/initialize-mysql-master-slave-replication-script/

    Dá um shell script (veja o final do post) onde você simplesmente insere as variáveis:

    • O nome do host mestre ou IP
    • Uma matriz de nomes de host ou IPs escravos
    • O nome do banco de dados

    Em seguida, ele inicia automaticamente a replicação do mestre nesses escravos.

    Ele é otimizado para um grande número de escravos porque bloqueia e exporta o despejo mestre e a posição do log apenas uma vez. Em seguida, ele distribui o arquivo dump para todos os escravos e inicializa a replicação em cada escravo.

    • 1
  3. Brian Papantonio
    2012-02-13T21:52:38+08:002012-02-13T21:52:38+08:00

    Sim, é chamado mysqldump:

    http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

    Você pode usá-lo para copiar dados para um escravo e iniciar a replicação em um comando. Está tudo lá.

    Veja também:

    http://dev.mysql.com/doc/refman/5.1/en/replication-howto-existingdata.html

    • 0

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

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

    • 4 respostas
  • Marko Smith

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

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

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

    • 10 respostas
  • Marko Smith

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

    • 4 respostas
  • Marko Smith

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

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

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

Explore

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

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve