start' >&2 ;; esac

Legg til mysqld_multi tjenesten til standard runlevels med følgende kommando:

update-rc.d mysqld_multi defaults

Start maskinen på nytt, og kontroller at begge MySQL-forekomster kjører ved å bruke følgende kommando:

mysqld_multi report

Oppsett Master-slave Replication

Nå, når vi har to MySQL-forekomster som kjører på samme maskin, vil vi sette opp den første forekomsten som en master, og den andre som en slave.

En del av konfigurasjonen ble allerede utført i kapittelet “Sette opp mysqld_multi”. Den eneste gjenværende endringen i my.cnf filen er å sette binær logging på masteren. For å gjøre dette, rediger my.cnf filen med følgende endringer og tillegg i [mysqld1] gruppe:

log_bin = /var/log/mysql/mysql-bin.log innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 binlog-format = ROW

Start master MySQL-forekomsten på nytt for at disse endringene skal tre i kraft:

mysqld_multi stop 1 mysqld_multi start 1

For at slaven skal koble seg til masteren med de riktige replikasjonsrettighetene, bør det opprettes en ny bruker på masteren. Koble til hovedforekomsten ved hjelp av MySQL-klienten med riktig vert og port:

mysql -uroot -p --host=127.0.0.1 --port=3306

Opprett en ny bruker for replikering:

mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'replication'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

Avslutt fra MySQL-klienten.

Utfør følgende kommando for å lage en dump av stamdata:

mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases --master-data=2 > replicationdump.sql

Her bruker vi alternativet --master-data=2 for å ha en kommentar som inneholder en CHANGE MASTER uttalelse inne i sikkerhetskopifilen. Den kommentaren indikerer replikeringskoordinatene på tidspunktet for sikkerhetskopien, og vi trenger disse koordinatene senere for oppdatering av hovedinformasjon i slaveforekomsten. Her er eksemplet på den kommentaren:

-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=349;

Importer dumpen du opprettet i forrige trinn til slaveinstansen:

mysql -uroot -p --host=127.0.0.1 --port=3307

Til slutt, for at slaveforekomsten skal koble til masterforekomsten, må masterinformasjonen om slaven oppdateres med de riktige tilkoblingsparametrene.

Koble til slaveforekomsten ved hjelp av MySQL-klienten med riktig vert og port:

mysql -uroot -p --host=127.0.0.1 --port=3307

Utfør følgende kommando for å oppdatere masterinformasjonen (ta replikeringskoordinatene fra dumpfilen replicationdump.sql, som forklart ovenfor):

mysql> CHANGE MASTER TO -> MASTER_HOST='127.0.0.1', -> MASTER_USER='replication', -> MASTER_PASSWORD='replication', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=349;

Utfør følgende kommando for å starte slaven:

mysql> START SLAVE;

Utfør følgende kommando for å bekrefte at replikasjonen er i gang:

mysql> SHOW SLAVE STATUS G

Gratulerer. MySQL-master-slave-replikering på samme maskin er nå konfigurert.

MySQL master-slave replikering

Pakk opp

Å ha en master-slave-replikering konfigurert i utviklingsmiljøet ditt er nyttig hvis du trenger det for en skaleringsløsning i produksjonsmiljøet. På denne måten vil du også ha separate datakilder konfigurert for skrive- og leseoperasjoner, slik at du kan teste lokalt at alt fungerer som forventet før videre distribusjon.

I tillegg kan det være lurt å ha flere slaveforekomster konfigurert på samme maskin for å teste lastbalansen som distribuerer leseoperasjonene til flere slaver. I så fall kan du bruke den samme håndboken for å sette opp andre slaveforekomster ved å gjenta alle de samme trinnene.