Possibile creare server mysql sia master che slave?

Sto preparando a spostare un database da un server a un altro. Al fine di ridurre i tempi di inattività per il cliente, mi chiedo se sarebbe ansible accendere la replica e dare tempo a replicare completamente, quindi puntare il cliente sul nuovo server.

Il problema che ho è che il server che sto trasferendo ha esistenti database attivi per altri clienti. E, il server che sto trasferendo ha altri clienti attivi che non si muoveranno in questo momento.

  • Import un file csv da 260 GB in MySQL
  • MySQL: come eseguire il backup e il ripristino utilizzando un nome di schema diverso utilizzando xtrabackup
  • Come creare artificialmente una query lenta in mysql?
  • Migliori pratiche per il backup di database
  • HAProxy, timeout dei client quando si collega dal pool JDBC
  • Motore di memorizzazione sconosciuto / non supportto: InnoDB | MySQL Ubuntu
  • È anche ansible? In caso affermativo, come posso configurare il server da cui sto trasferendo e quello in cui sto trasferendo?

  • Come impostare ulimit per un servizio a partire dall'avvio?
  • Che cosa è l'utente MySQL di debian-sys-maint (e altro ancora)?
  • MySQL slave in sincronia con il master
  • Come spostare il database RDS in diversi VPC
  • Posso specificare where i miei file di database sono memorizzati * per database * in MySQL?
  • Modo più semplice per convertire tutte le tabelle da InnoDB a MyISAM
  • 2 Solutions collect form web for “Possibile creare server mysql sia master che slave?”

    sì – è ansible che il server mysql sia master e uno slave allo stesso tempo.

    se utilizzi innodb come il tuo motore di archiviazione per questi dati e sposti database interi dovrebbe essere ansible:

    • abilita il binlogging sul vecchio server
    • prendere un dump completo completo dal vecchio server senza bloccare alcun traffico in corso
    • trasferire quel dump al nuovo server, ripristinare lì
    • triggersre la replica per i database selezionati e consentire al nuovo server di "recuperare" la macchina di produzione
    • una volta che i server hanno bisogno di database in sincronia – commutare il traffico

    questo potrebbe essere utile:

    • pt-table-checksum per controllare se le tabelle / database sono in sync
    • pt-table-sync per risolvere i problemi potenziali una volta che hai la maggior parte dei dati sul nuovo server
    • mysql di filtraggio della replica – sul master [vecchio server] – binlog-do-db o slave [nuovo server] lato – replicate-do-db
    • i dati master del mysqldump e le opzioni di singola transazione per prendere il dump di dati iniziale

    ps. suppongo che non ci sia sovrapposizione di nome per le banche dati tra il vecchio e il nuovo server.

    Sì, naturalmente.

    L'idea da implementare è conosciuta come MySQL Circular Replication.

    Ad esempio, diciamo di avere le seguenti:

    • DBServer1 aveva database db1, db2, db3, db4
    • Si desidera spostare db3 e db4 in DBServer2
    • Si desidera limitare le letture e scrivere a db1 e db2 su DBServer1
    • Si desidera limitare le letture e le scritture a db3 e db4 su DBServer2

    Ecco qualcosa che puoi provare

    STEP01) Esegui la replica di GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO replicator@'%' IDENTIFIED BY 'replpass'; su DBServer1

    STEP02) Installare la stessa versione di MySQL su DBServer2 (avrai i dati predefiniti in / var / lib / mysql)

    STEP03) rsync DBServer1: / var / lib / mysql DBServer2: / var / lib / mysql

    STEP04) Ripetere STEP02 fino a quando due rsyncs consecutivi sono la stessa ora, preferibilmente <2 min.

    STEP05) Distriggers la tua applicazione da scrivere qualsiasi cosa nei database

    STEP06) service mysql stop su DBServer1

    STEP07) Configurare la logging binaria su DBServer1

    Aggiungi questo a /etc/my.cnf su DBServer1

     [mysqld] server-id=1 log-bin=mysql-bin 

    Aggiungi questo a /etc/my.cnf su DBServer2

     [mysqld] server-id=2 log-bin=mysql-bin 

    STEP08) rsync DBServer1: / var / lib / mysql DBServer2: / var / lib / mysql (FINAL RSYNC)

    STEP09) service mysql start su DBServer1 (i registri binari inizieranno ad essere popolati)

    STEP10) service mysql start su DBServer2 (i registri binari inizieranno ad essere popolati)

    STEP11) Indica le tue applicazioni per db1 e db2 in DBServer1

    STEP12) Punta le applicazioni per db3 e db4 a DBServer2

    STEP13) Esegui questo su DBServer1

     CHANGE MASTER TO MASTER_HOST='xxx.xx.xx.xxx', MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=PPPP; 

    STEP14) Esegui questo su DBServer2

     CHANGE MASTER TO MASTER_HOST='yyy.yy.yy.yyy', MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=PPPP; 

    Per i passaggi 13 e 14

    • xxx.xx.xx.xxx è l'indirizzo IP privato di DBServer2
    • yyy.yy.yy.yyy è il Private IP Address di DBServer1
    • PPPP è la posizione iniziale di qualsiasi registro binario
      • Per MySQL 5.5, PPPP è 107
      • Per MySQL 5.1, PPPP è 106
      • Prima di MySQL 5.1, PPPP è 98

    STEP15) Esegui START SLAVE; su DBServer1

    STEP16) Esegui START SLAVE; su DBServer2

    STEP17) Esegui SHOW SLAVE STATUS\G su DBServer1 fino a Seconds_Behind_Master è 0

    STEP18) Esegui SHOW SLAVE STATUS\G su DBServer2 fino a Seconds_Behind_Master è 0

    Questa implementazione non consente la suddivisione di database, ma consente anche ai server standby per il database.

    DBServer1 sarà il luogo da fare per leggere e scrivere per db1 e db2. Fornisce anche un backup di db3 e db4.

    DBServer2 sarà il luogo da leggere e scrivere per db3 e db4. Fornisce anche un backup di db1 e db2.

    Provaci !!!

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.