Podvajanje MySQL je postopek, ki omogoča samodejno kopiranje podatkov iz enega strežnika baz podatkov MySQL (glavnega) na enega ali več strežnikov baz podatkov MySQL (podrejeni). Običajno se uporablja za razširitev bralnega dostopa na več strežnikih zaradi razširljivosti, čeprav se lahko uporablja tudi za druge namene, na primer za preklop na drugo fazo ali analizo podatkov na pomožni enoti, da ne bi preobremenil glavne enote.
Ker je replikacija glavni-podrejeni enosmerna replikacija (od glavne do pomožne), se za operacije pisanja uporablja samo glavna baza podatkov, medtem ko se operacije branja lahko razširijo na več podrejenih baz podatkov. To pomeni, da če je za nadgradnjo uporabljena replikacija nadrejeni-podrejeni, morate imeti definirana vsaj dva vira podatkov, enega za operacije pisanja in drugega za operacije branja.
Razvijalci MySQL ponavadi delajo samo na enem računalniku in imajo običajno celotno razvojno okolje na njem, z logiko, da niso odvisni od omrežja ali internetne povezave. Če je potrebna replikacija glavni-podrejeni sistem, ker morajo na primer preskusiti replikacijo v razvojnem okolju, preden spremembe uvedejo drugam, jo morajo ustvariti na istem računalniku. Medtem ko je namestitev enega primerka MySQL dokaj enostavna, se moramo še dodatno potruditi, da nastavimo drugo in nato glavno-podrejeno replikacijo.
Za to podrobno vadnico sem za gostiteljski operacijski sistem izbral Ubuntu Linux in predvideni ukazi so za ta operacijski sistem. Če želite replikacijo MySQL master-slave namestiti v drug operacijski sistem, boste morali spremeniti njegove posebne ukaze. Vendar so splošna načela nastavitve podvajanja MySQL master-slave na isti napravi enaka za vse operacijske sisteme.
Če že imate en primerek Baza podatkov MySQL nameščen na vašem računalniku, lahko ta korak preskočite.
Najlažji način namestitve MySQL na Ubuntu je, če iz ukaza terminala zaženete naslednji ukaz:
sudo apt-get install mysql-server
Med namestitvijo boste pozvani, da nastavite geslo za MySQL root
uporabnik.
primeri geštalt načel v resničnem življenju
mysqld_multi
Za učinkovito upravljanje dveh primerkov MySQL na istem računalniku moramo uporabiti mysqld_multi
.
Prvi korak pri nastavitvi mysqld_multi
je ustvarjanje dveh ločenih [mysqld]
skupin v obstoječih my.cnf
mapa. Privzeta lokacija my.cnf
datoteka v Ubuntu je /etc/mysql/
. Torej, odprite my.cnf
datoteko z vašim najljubšim urejevalnikom besedil in preimenujte obstoječo [mysqld]
skupina v [mysqld1]
. Ta preimenovana skupina bo uporabljena za konfiguracijo prvega primerka MySQL in bo konfigurirana tudi kot glavni primerek. Tako kot v MySQL replikaciji master-slave mora imeti vsak primerek svoj unikat server-id
, dodajte naslednjo vrstico v [mysqld1]
skupina:
server-id = 1
Ker potrebujemo ločeno [mysqld]
skupino za drugi primerek MySQL, kopirajte [mysqld1]
skupina z vsemi trenutnimi konfiguracijami in jo prilepite spodaj v isto my.cnf
mapa. Zdaj preimenujte kopirano skupino v [mysqld2]
in naredite naslednje spremembe v konfiguraciji podrejenega:
server-id = 2 port = 3307 socket = /var/run/mysqld/mysqld_slave.sock pid-file = /var/run/mysqld/mysqld_slave.pid datadir = /var/lib/mysql_slave log_error = /var/log/mysql_slave/error_slave.log relay-log = /var/log/mysql_slave/relay-bin relay-log-index = /var/log/mysql_slave/relay-bin.index master-info-file = /var/log/mysql_slave/master.info relay-log-info-file = /var/log/mysql_slave/relay-log.info read_only = 1
Če želite drugi primerek MySQL nastaviti kot suženj, nastavite server-id
na 2, saj se mora razlikovati od strežniškega id-ja glavnega strežnika.
Ker se bosta oba primera izvajala na istem računalniku, nastavite port
za drugo stopnjo na 3307
, ker se mora razlikovati od vrat, uporabljenih za prvo stopnjo, ki je 3306
privzeto.
Da bi lahko ta drugi primerek uporabljal iste binarne datoteke MySQL, moramo nastavite različne vrednosti za socket
, pid-file
, datadir
in log_error
.
Omogočiti moramo tudi relay-log
da bi drugo stopnjo uporabil kot suženj ( parametrov relay-log
, relay-log-index
in relay-log-info-file
), kot tudi za nastavitev master-info-file
.
Končno, da bi podrejeni primerek omogočil samo branje, parameter read_only
je nastavljeno na 1
. S to možnostjo bodite previdni, saj ne preprečuje v celoti sprememb na pomožni enoti. Tudi ko je read_only
je nastavljeno na 1
, posodobitve bodo dovoljene samo od uporabnikov, ki imajo SUPER
privilegij. MySQL je pred kratkim predstavil nov parameter super_read_only
za preprečevanje SUPER
uporabniki, ki spreminjajo. Ta možnost je na voljo z različico 5.7.8.
Poleg [mysqld1]
in [mysqld2]
skupin, moramo dodati tudi novo skupino [mysqld_multi]
do my.cnf
mapa:
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin password = multipass
Ko namestimo drugi primerek MySQL in zaženemo oba, bomo multi_admin
podelili ustrezne privilegije. uporabnika, da bi lahko zaprl primerke MySQL.
V prejšnjem koraku smo pripravili konfiguracijsko datoteko za drugi primerek MySQL. V tej konfiguracijski datoteki sta uporabljeni dve novi mapi. Za ustvarjanje teh map z ustreznimi privilegiji je treba uporabiti naslednje ukaze za Linux:
mkdir -p /var/lib/mysql_slave chmod --reference /var/lib/mysql /var/lib/mysql_slave chown --reference /var/lib/mysql /var/lib/mysql_slave mkdir -p /var/log/mysql_slave chmod --reference /var/log/mysql /var/log/mysql_slave chown --reference /var/log/mysql /var/log/mysql_slave
V nekaterih okoljih Linux AppArmor varnostne nastavitve so potrebne za zagon drugega primerka MySQL. Vsaj potrebni so za Ubuntu.
Če želite pravilno nastaviti AppArmor, uredite /etc/apparmor.d/usr.sbin.mysqld
datoteko z vašim najljubšim urejevalnikom besedil, dodajte naslednje vrstice:
/var/lib/mysql_slave/ r, /var/lib/mysql_slave/** rwk, /var/log/mysql_slave/ r, /var/log/mysql_slave/* rw, /var/run/mysqld/mysqld_slave.pid rw, /var/run/mysqld/mysqld_slave.sock w, /run/mysqld/mysqld_slave.pid rw, /run/mysqld/mysqld_slave.sock w,
Ko datoteko shranite, znova zaženite računalnik, da bodo te spremembe začele veljati.
Za namestitev drugega primerka MySQL je mogoče uporabiti več različnih pristopov. Pristop, predstavljen v tej vadnici, uporablja enake binarne datoteke MySQL kot prvi, z ločenimi podatkovnimi datotekami, potrebnimi za drugo namestitev.
Ker smo v prejšnjih korakih že pripravili konfiguracijsko datoteko in potrebne mape ter varnostne spremembe, je zadnji korak namestitve drugega primerka MySQL inicializacija podatkovnega imenika MySQL.
Za inicializiranje novega podatkovnega imenika MySQL izvedite naslednji ukaz:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_slave
Ko je podatkovni imenik MySQL inicializiran, lahko zaženete oba primerka MySQL s pomočjo mysqld_multi
storitev:
mysqld_multi start
Nastavite root
geslo za drugi primerek MySQL z uporabo mysqladmin
z ustreznim gostiteljem in vrati. Upoštevajte, če gostitelj in vrata nista navedena, mysqladmin
se bo privzeto povezal s prvim primerkom MySQL:
mysqladmin --host=127.0.0.1 --port=3307 -u root password rootpwd
V zgornjem primeru sem geslo nastavil na 'rootpwd', vendar je priporočljiva uporaba varnejšega gesla.
kako oblikovati predstavitev
mysqld_multi
Na koncu razdelka »Nastavitev mysqld_multi« sem napisal, da bomo multi_admin
dali ustrezne privilegije | uporabnik pozneje, zato je zdaj čas za to. Temu uporabniku moramo dati ustrezne privilegije v obeh primerih, zato se najprej povežemo s prvim primerkom:
mysql --host=127.0.0.1 --port=3306 -uroot -p
Ko ste prijavljeni, izvedite naslednja dva ukaza:
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql> FLUSH PRIVILEGES;
Izstopite iz odjemalca MySQL in se povežite z drugim primerkom:
mysql --host=127.0.0.1 --port=3307 -uroot -p
Ko ste prijavljeni, izvedite ista dva ukaza kot zgoraj:
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql> FLUSH PRIVILEGES;
Izhod iz odjemalca MySQL.
Zadnji korak nastavitve mysqld_multi
je namestitev samodejnega zagonskega skripta v init.d
.
Če želite to narediti, ustvarite novo datoteko z imenom mysqld_multi
v /etc/init.d
in mu dajte ustrezne privilegije:
cd /etc/init.d touch mysqld_multi chmod +x /etc/init.d/mysqld_multi
Odprite to novo datoteko s svojim najljubšim urejevalnikom besedil in kopirajte naslednji skript:
#!/bin/sh ### BEGIN INIT INFO # Provides: scriptname # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO bindir=/usr/bin if test -x $bindir/mysqld_multi then mysqld_multi='$bindir/mysqld_multi'; else echo 'Can't execute $bindir/mysqld_multi'; exit; fi case '' in 'start' ) '$mysqld_multi' start ;; 'stop' ) '$mysqld_multi' stop ;; 'report' ) '$mysqld_multi' report ;; 'restart' ) '$mysqld_multi' stop '$mysqld_multi' start ;; *) echo 'Usage: Replikacija MySQL Master-Slave na isti napravi
Podvajanje MySQL je postopek, ki omogoča samodejno kopiranje podatkov iz enega strežnika baz podatkov MySQL (glavnega) na enega ali več strežnikov baz podatkov MySQL (podrejeni). Običajno se uporablja za razširitev bralnega dostopa na več strežnikih zaradi razširljivosti, čeprav se lahko uporablja tudi za druge namene, na primer za preklop na drugo fazo ali analizo podatkov na pomožni enoti, da ne bi preobremenil glavne enote.
Ker je replikacija glavni-podrejeni enosmerna replikacija (od glavne do pomožne), se za operacije pisanja uporablja samo glavna baza podatkov, medtem ko se operacije branja lahko razširijo na več podrejenih baz podatkov. To pomeni, da če je za nadgradnjo uporabljena replikacija nadrejeni-podrejeni, morate imeti definirana vsaj dva vira podatkov, enega za operacije pisanja in drugega za operacije branja.
Razvijalci MySQL ponavadi delajo samo na enem računalniku in imajo običajno celotno razvojno okolje na njem, z logiko, da niso odvisni od omrežja ali internetne povezave. Če je potrebna replikacija glavni-podrejeni sistem, ker morajo na primer preskusiti replikacijo v razvojnem okolju, preden spremembe uvedejo drugam, jo morajo ustvariti na istem računalniku. Medtem ko je namestitev enega primerka MySQL dokaj enostavna, se moramo še dodatno potruditi, da nastavimo drugo in nato glavno-podrejeno replikacijo.
Za to podrobno vadnico sem za gostiteljski operacijski sistem izbral Ubuntu Linux in predvideni ukazi so za ta operacijski sistem. Če želite replikacijo MySQL master-slave namestiti v drug operacijski sistem, boste morali spremeniti njegove posebne ukaze. Vendar so splošna načela nastavitve podvajanja MySQL master-slave na isti napravi enaka za vse operacijske sisteme.
Če že imate en primerek Baza podatkov MySQL nameščen na vašem računalniku, lahko ta korak preskočite.
Najlažji način namestitve MySQL na Ubuntu je, če iz ukaza terminala zaženete naslednji ukaz:
sudo apt-get install mysql-server
Med namestitvijo boste pozvani, da nastavite geslo za MySQL root
uporabnik.
mysqld_multi
Za učinkovito upravljanje dveh primerkov MySQL na istem računalniku moramo uporabiti mysqld_multi
.
Prvi korak pri nastavitvi mysqld_multi
je ustvarjanje dveh ločenih [mysqld]
skupin v obstoječih my.cnf
mapa. Privzeta lokacija my.cnf
datoteka v Ubuntu je /etc/mysql/
. Torej, odprite my.cnf
datoteko z vašim najljubšim urejevalnikom besedil in preimenujte obstoječo [mysqld]
skupina v [mysqld1]
. Ta preimenovana skupina bo uporabljena za konfiguracijo prvega primerka MySQL in bo konfigurirana tudi kot glavni primerek. Tako kot v MySQL replikaciji master-slave mora imeti vsak primerek svoj unikat server-id
, dodajte naslednjo vrstico v [mysqld1]
skupina:
server-id = 1
Ker potrebujemo ločeno [mysqld]
skupino za drugi primerek MySQL, kopirajte [mysqld1]
skupina z vsemi trenutnimi konfiguracijami in jo prilepite spodaj v isto my.cnf
mapa. Zdaj preimenujte kopirano skupino v [mysqld2]
in naredite naslednje spremembe v konfiguraciji podrejenega:
server-id = 2 port = 3307 socket = /var/run/mysqld/mysqld_slave.sock pid-file = /var/run/mysqld/mysqld_slave.pid datadir = /var/lib/mysql_slave log_error = /var/log/mysql_slave/error_slave.log relay-log = /var/log/mysql_slave/relay-bin relay-log-index = /var/log/mysql_slave/relay-bin.index master-info-file = /var/log/mysql_slave/master.info relay-log-info-file = /var/log/mysql_slave/relay-log.info read_only = 1
Če želite drugi primerek MySQL nastaviti kot suženj, nastavite server-id
na 2, saj se mora razlikovati od strežniškega id-ja glavnega strežnika.
Ker se bosta oba primera izvajala na istem računalniku, nastavite port
za drugo stopnjo na 3307
, ker se mora razlikovati od vrat, uporabljenih za prvo stopnjo, ki je 3306
privzeto.
Da bi lahko ta drugi primerek uporabljal iste binarne datoteke MySQL, moramo nastavite različne vrednosti za socket
, pid-file
, datadir
in log_error
.
Omogočiti moramo tudi relay-log
da bi drugo stopnjo uporabil kot suženj ( parametrov relay-log
, relay-log-index
in relay-log-info-file
), kot tudi za nastavitev master-info-file
.
Končno, da bi podrejeni primerek omogočil samo branje, parameter read_only
je nastavljeno na 1
. S to možnostjo bodite previdni, saj ne preprečuje v celoti sprememb na pomožni enoti. Tudi ko je read_only
je nastavljeno na 1
, posodobitve bodo dovoljene samo od uporabnikov, ki imajo SUPER
privilegij. MySQL je pred kratkim predstavil nov parameter super_read_only
za preprečevanje SUPER
uporabniki, ki spreminjajo. Ta možnost je na voljo z različico 5.7.8.
Poleg [mysqld1]
in [mysqld2]
skupin, moramo dodati tudi novo skupino [mysqld_multi]
do my.cnf
mapa:
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin password = multipass
Ko namestimo drugi primerek MySQL in zaženemo oba, bomo multi_admin
podelili ustrezne privilegije. uporabnika, da bi lahko zaprl primerke MySQL.
V prejšnjem koraku smo pripravili konfiguracijsko datoteko za drugi primerek MySQL. V tej konfiguracijski datoteki sta uporabljeni dve novi mapi. Za ustvarjanje teh map z ustreznimi privilegiji je treba uporabiti naslednje ukaze za Linux:
mkdir -p /var/lib/mysql_slave chmod --reference /var/lib/mysql /var/lib/mysql_slave chown --reference /var/lib/mysql /var/lib/mysql_slave mkdir -p /var/log/mysql_slave chmod --reference /var/log/mysql /var/log/mysql_slave chown --reference /var/log/mysql /var/log/mysql_slave
V nekaterih okoljih Linux AppArmor varnostne nastavitve so potrebne za zagon drugega primerka MySQL. Vsaj potrebni so za Ubuntu.
Če želite pravilno nastaviti AppArmor, uredite /etc/apparmor.d/usr.sbin.mysqld
datoteko z vašim najljubšim urejevalnikom besedil, dodajte naslednje vrstice:
/var/lib/mysql_slave/ r, /var/lib/mysql_slave/** rwk, /var/log/mysql_slave/ r, /var/log/mysql_slave/* rw, /var/run/mysqld/mysqld_slave.pid rw, /var/run/mysqld/mysqld_slave.sock w, /run/mysqld/mysqld_slave.pid rw, /run/mysqld/mysqld_slave.sock w,
Ko datoteko shranite, znova zaženite računalnik, da bodo te spremembe začele veljati.
Za namestitev drugega primerka MySQL je mogoče uporabiti več različnih pristopov. Pristop, predstavljen v tej vadnici, uporablja enake binarne datoteke MySQL kot prvi, z ločenimi podatkovnimi datotekami, potrebnimi za drugo namestitev.
Ker smo v prejšnjih korakih že pripravili konfiguracijsko datoteko in potrebne mape ter varnostne spremembe, je zadnji korak namestitve drugega primerka MySQL inicializacija podatkovnega imenika MySQL.
Za inicializiranje novega podatkovnega imenika MySQL izvedite naslednji ukaz:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_slave
Ko je podatkovni imenik MySQL inicializiran, lahko zaženete oba primerka MySQL s pomočjo mysqld_multi
storitev:
mysqld_multi start
Nastavite root
geslo za drugi primerek MySQL z uporabo mysqladmin
z ustreznim gostiteljem in vrati. Upoštevajte, če gostitelj in vrata nista navedena, mysqladmin
se bo privzeto povezal s prvim primerkom MySQL:
mysqladmin --host=127.0.0.1 --port=3307 -u root password rootpwd
V zgornjem primeru sem geslo nastavil na 'rootpwd', vendar je priporočljiva uporaba varnejšega gesla.
mysqld_multi
Na koncu razdelka »Nastavitev mysqld_multi« sem napisal, da bomo multi_admin
dali ustrezne privilegije | uporabnik pozneje, zato je zdaj čas za to. Temu uporabniku moramo dati ustrezne privilegije v obeh primerih, zato se najprej povežemo s prvim primerkom:
mysql --host=127.0.0.1 --port=3306 -uroot -p
Ko ste prijavljeni, izvedite naslednja dva ukaza:
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql> FLUSH PRIVILEGES;
Izstopite iz odjemalca MySQL in se povežite z drugim primerkom:
mysql --host=127.0.0.1 --port=3307 -uroot -p
Ko ste prijavljeni, izvedite ista dva ukaza kot zgoraj:
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql> FLUSH PRIVILEGES;
Izhod iz odjemalca MySQL.
Zadnji korak nastavitve mysqld_multi
je namestitev samodejnega zagonskega skripta v init.d
.
Če želite to narediti, ustvarite novo datoteko z imenom mysqld_multi
v /etc/init.d
in mu dajte ustrezne privilegije:
cd /etc/init.d touch mysqld_multi chmod +x /etc/init.d/mysqld_multi
Odprite to novo datoteko s svojim najljubšim urejevalnikom besedil in kopirajte naslednji skript:
#!/bin/sh ### BEGIN INIT INFO # Provides: scriptname # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO bindir=/usr/bin if test -x $bindir/mysqld_multi then mysqld_multi='$bindir/mysqld_multi'; else echo 'Can't execute $bindir/mysqld_multi'; exit; fi case '$1' in 'start' ) '$mysqld_multi' start $2 ;; 'stop' ) '$mysqld_multi' stop $2 ;; 'report' ) '$mysqld_multi' report $2 ;; 'restart' ) '$mysqld_multi' stop $2 '$mysqld_multi' start $2 ;; *) echo 'Usage: $0 start' >&2 ;; esac
Dodaj mysqld_multi
storitev na privzeto runlevels
z naslednjim ukazom:
update-rc.d mysqld_multi defaults
Znova zaženite računalnik in z naslednjim ukazom preverite, ali se izvajata oba primerka MySQL:
mysqld_multi report
Zdaj, ko imamo dva primerka MySQL na istem računalniku, bomo prvi primerek nastavili kot glavni, drugega pa kot podrejenega.
Del konfiguracije je bil izveden že v poglavju “Nastavitev mysqld_multi”. Edina preostala sprememba my.cnf
datoteka naj nastavi binarno beleženje na glavni enoti. Če želite to narediti, uredite my.cnf
datoteka z naslednjimi spremembami in dopolnitvami v [mysqld1]
skupina:
log_bin = /var/log/mysql/mysql-bin.log innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 binlog-format = ROW
Znova zaženite glavni primerek MySQL, da bodo te spremembe začele veljati:
mysqld_multi stop 1 mysqld_multi start 1
Da se podrejeni lahko poveže z glavno enoto s pravilnimi privilegiji podvajanja, je treba na glavni enoti ustvariti novega uporabnika. Povežite se z glavnim primerkom z uporabo odjemalca MySQL z ustreznim gostiteljem in vrati:
mysql -uroot -p --host=127.0.0.1 --port=3306
Ustvari novega uporabnika za kopiranje:
mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'replication'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
Izhod iz odjemalca MySQL.
Za izdelavo izpisa glavnih podatkov izvedite naslednji ukaz:
mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases --master-data=2 > replicationdump.sql
Tu uporabimo možnost --master-data=2
da bi imeli komentar, ki vsebuje CHANGE MASTER
izjavo v datoteki varnostne kopije. Ta komentar označuje koordinate replikacije v času varnostnega kopiranja in te koordinate bomo potrebovali pozneje za posodobitev glavnih informacij v podrejenem primerku. Tu je primer tega komentarja:
-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=349;
Dump, ki ste ga ustvarili v prejšnjem koraku, uvozite v podrejeni primerek:
mysql -uroot -p --host=127.0.0.1 --port=3307 Nazadnje, da se podrejeni primerek lahko poveže z glavnim primerkom, je treba glavne podatke o podrejenem posodabljati z ustreznimi parametri povezave.
Povežite se s podrejenim primerkom z odjemalcem MySQL z ustreznim gostiteljem in vrati:
mysql -uroot -p --host=127.0.0.1 --port=3307
Izvedite naslednji ukaz, da posodobite glavne podatke (vzemite koordinate replikacije iz datoteke izpisa replicationdump.sql
, kot je razloženo zgoraj):
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;
Izvedite naslednji ukaz, da zaženete pomožni sistem:
mysql> START SLAVE;
Izvedite naslednji ukaz, da preverite, ali replikacija deluje in deluje:
mysql> SHOW SLAVE STATUS G
Vse čestitke. Vaša replikacija MySQL master-slave na istem računalniku je zdaj uspešno nastavljena.

Zaviti
Kopiranje glavne in podrejene vsebine, konfigurirano v vašem razvojnem okolju, je koristno, če jo potrebujete za rešitev za razširitev v proizvodnem okolju. Tako boste imeli tudi ločene vire podatkov, konfigurirane za operacije pisanja in branja, tako da boste lahko lokalno preizkusili, da vse deluje po pričakovanjih pred nadaljnjo uvedbo.
Poleg tega boste morda želeli na isti napravi konfigurirati več primerkov podrejenega, da preizkusite izravnalnik obremenitve, ki bralne operacije porazdeli na več podrejenih. V tem primeru lahko z istim priročnikom nastavite druge podrejene primerke, tako da ponovite vse iste korake.
Dodaj mysqld_multi
storitev na privzeto runlevels
z naslednjim ukazom:
update-rc.d mysqld_multi defaults
Znova zaženite računalnik in z naslednjim ukazom preverite, ali se izvajata oba primerka MySQL:
mysqld_multi report
Zdaj, ko imamo dva primerka MySQL na istem računalniku, bomo prvi primerek nastavili kot glavni, drugega pa kot podrejenega.
Del konfiguracije je bil izveden že v poglavju “Nastavitev mysqld_multi”. Edina preostala sprememba my.cnf
datoteka naj nastavi binarno beleženje na glavni enoti. Če želite to narediti, uredite my.cnf
datoteka z naslednjimi spremembami in dopolnitvami v [mysqld1]
skupina:
log_bin = /var/log/mysql/mysql-bin.log innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 binlog-format = ROW
Znova zaženite glavni primerek MySQL, da bodo te spremembe začele veljati:
primer ocene stroškov programskega projekta
mysqld_multi stop 1 mysqld_multi start 1
Da se podrejeni lahko poveže z glavno enoto s pravilnimi privilegiji podvajanja, je treba na glavni enoti ustvariti novega uporabnika. Povežite se z glavnim primerkom z uporabo odjemalca MySQL z ustreznim gostiteljem in vrati:
mysql -uroot -p --host=127.0.0.1 --port=3306
Ustvari novega uporabnika za kopiranje:
mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'replication'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
Izhod iz odjemalca MySQL.
Za izdelavo izpisa glavnih podatkov izvedite naslednji ukaz:
mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases --master-data=2 > replicationdump.sql
Tu uporabimo možnost --master-data=2
da bi imeli komentar, ki vsebuje CHANGE MASTER
izjavo v datoteki varnostne kopije. Ta komentar označuje koordinate replikacije v času varnostnega kopiranja in te koordinate bomo potrebovali pozneje za posodobitev glavnih informacij v podrejenem primerku. Tu je primer tega komentarja:
-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=349;
Dump, ki ste ga ustvarili v prejšnjem koraku, uvozite v podrejeni primerek:
mysql -uroot -p --host=127.0.0.1 --port=3307 Nazadnje, da se podrejeni primerek lahko poveže z glavnim primerkom, je treba glavne podatke o podrejenem posodabljati z ustreznimi parametri povezave.
Povežite se s podrejenim primerkom z odjemalcem MySQL z ustreznim gostiteljem in vrati:
mysql -uroot -p --host=127.0.0.1 --port=3307
Izvedite naslednji ukaz, da posodobite glavne podatke (vzemite koordinate replikacije iz datoteke izpisa replicationdump.sql
, kot je razloženo zgoraj):
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;
Izvedite naslednji ukaz, da zaženete pomožni sistem:
mysql> START SLAVE;
Izvedite naslednji ukaz, da preverite, ali replikacija deluje in deluje:
mysql> SHOW SLAVE STATUS G
Vse čestitke. Vaša replikacija MySQL master-slave na istem računalniku je zdaj uspešno nastavljena.

Zaviti
Kopiranje glavne in podrejene vsebine, konfigurirano v vašem razvojnem okolju, je koristno, če jo potrebujete za rešitev za razširitev v proizvodnem okolju. Tako boste imeli tudi ločene vire podatkov, konfigurirane za operacije pisanja in branja, tako da boste lahko lokalno preizkusili, da vse deluje po pričakovanjih pred nadaljnjo uvedbo.
Poleg tega boste morda želeli na isti napravi konfigurirati več primerkov podrejenega, da preizkusite izravnalnik obremenitve, ki bralne operacije porazdeli na več podrejenih. V tem primeru lahko z istim priročnikom nastavite druge podrejene primerke, tako da ponovite vse iste korake.