Kif Twaqqaf ir-Replikazzjoni MariaDB (Master-Slave) f'CentOS/RHEL 7 u Debian 8/9


Anke meta xi nies tal-IT jisimgħu l-frażi Replikazzjoni tad-Database, ħafna drabi jassoċjawha mal-ħtieġa li jkollhom kopji multipli tal-istess informazzjoni biex jiġi evitat it-telf tad-dejta fil-każ ta 'falliment tal-hardware jew korruzzjoni tad-dejta. Filwaqt li dan huwa minnu sa ċertu punt, hemm ħafna aktar għar-replikazzjoni tad-database mill-kunċett komuni ta 'backup ta' database u d-disponibbiltà tad-data.

Fost benefiċċji oħra tar-replikazzjoni tad-database f'setup master-slave nistgħu nsemmu:

  1. Il-backups jistgħu jsiru fuq is-server slave mingħajr ma jiġu affettwati (u jiġu affettwati minn) l-operazzjonijiet tal-kitba fil-master.
  2. Operazzjonijiet li jużaw ħafna riżorsi (bħal analiżi tad-dejta) jistgħu jsiru fuq l-iskjav mingħajr ma jinfluwenzaw il-prestazzjoni tal-kaptan.

F'dan l-artikolu ser nispjegaw kif twaqqaf replikazzjoni master-slave f'MariaDB 10.1. Għall-kuntrarju tar-replikazzjoni klassika, MariaDB introduċiet il-kunċett ta 'Global Transaction IDs (GTIDs) f'v10.0, li jippermetti li tbiddel slave biex tikkonnettja u tirreplika minn kaptan differenti faċilment. Barra minn hekk, l-istat tal-iskjav huwa rreġistrat b'mod sikur għall-ħabta (l-aġġornamenti għall-istat isiru fl-istess tranżazzjoni bħall-aġġornamenti tad-dejta).

Jekk qed tfittex replikazzjoni MySQL taħt CentOS/RHEL 6, segwi din il-gwida Setup MySQL (Master-Slave) Replication on CentOS/RHEL 6

Installazzjoni ta' MariaDB 10.1 f'CentOS/RHEL 7 u Debian 8/9

L-ambjent tal-ittestjar tagħna jikkonsisti mill-magni li ġejjin (it-tnejn huma CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Biex tinstalla l-aħħar verżjoni ta 'MariaDB, ser ikollna nżidu r-repożitorji tagħhom mas-servers tagħna. Jekk qed tuża verżjoni eqdem ta' MariaDB ngħidu aħna 5.5, ikkunsidra li taġġorna għall-aħħar verżjoni 10.1 billi tuża l-artikolu hawn taħt.

  1. Aġġorna MariaDB 5.5 għal MariaDB 10.1

Oħloq fajl bl-isem MariaDB.repo ġewwa /etc/yum.repos.d bil-kontenut li ġej kemm fuq is-sistemi Master u Slav:

# MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Issejvja l-fajl u installa MariaDB fuq iż-żewġ servers billi tuża yum:

# yum update && yum install MariaDB-server MariaDB-client

Żid iċ-ċavetta biex tivverifika l-pakketti u r-repożitorju MariaDB:

# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

Nota: Ibdel l-isem tad-distribuzzjoni u l-isem tal-kodiċi fil-linja enfasizzata hawn fuq.

Installa bl-użu tal-kmand apt-get:

# apt-get update
# apt-get install mariadb-server

Ladarba tkun stallajt MariaDB, mexxi l-proċedura mysql_secure_installation kemm fuq il-kaptan kif ukoll fuq l-iskjav, ejja nwaqqfu database tat-test kampjun fil-magna prinċipali.

Twaqqif ta 'Database MySQL ta' Kampjun fuq Master

Issa se nwaqqfu fis-server prinċipali d-database Impjegati minn https://github.com/datacharmer/test_db (li tipprovdi sett ta’ data ta’ 4 miljun rekord mifrux fuq sitt tabelli) f’żewġ passi sempliċi:

Ikklonja r-repożitorju u użah biex timporta d-database tal-kampjun għall-installazzjoni MariaDB tiegħek:

# git clone https://github.com/datacharmer/test_db
# cd test_db
# mysql < employees.sql

Konfigurazzjoni ta 'MySQL Server fuq Master

Biex tikkonfigura l-kaptan, segwi dawn il-passi:

PASS 1: Editja l-fajl /etc/my.cnf. Taħt it-taqsima [mysqld], żid l-erba' linji li ġejjin:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

u erġa ibda MariaDB:

# systemctl restart mariadb

PASS 2: Idħol fis-server MariaDB bħala root, oħloq l-iskjav tal-utent u assenja l-għotjiet meħtieġa:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

L-aħħar kmand (SHOW MASTER STATUS) jirritorna l-pożizzjoni attwali fil-log binarju (il-koordinati eżatti li jindikaw eżattament f'liema punt l-iskjav għandu jibda jirreplika minn:

PASS 3: Oħroġ mill-pront ta 'MariaDB (b'ħruġ;) u uża l-kmand li ġej biex tieħu ritratt tad-database tal-impjegati. Meta tolqot Enter, tkun imħeġġeġ biex ittajpja l-password għall-għeruq li waqqaft qabel permezz ta' mysql_secure_installation:

# mysqldump -u root -p employees > employees-dump.sql

Wara li titlesta d-dump, erġa' qabbad mas-server tad-database biex tiftaħ it-tabelli u mbagħad toħroġ:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

PASS 4: Ikkopja d-dump lill-iskjav:

# scp employees-dump.sql [email :/root/ 

PASS 5: Mexxi l-proċedura mysql_upgrade biex taġġorna t-tabelli tas-sistema (inti se tintalab biex iddaħħal il-password tal-għerq ta' MariaDB):

# mysql_upgrade -u root -p

PASS 6: Ħalli s-servizz tad-database permezz tal-firewall:

# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
# firewall-cmd --reload

Issa ejja kkonfigurat l-iskjav.

Konfigurazzjoni ta' MySQL Server fuq Slav

Biex tikkonfigura l-iskjav, segwi dawn il-passi:

PASS 1: Oħloq il-kont biex twettaq il-kompiti ta 'replikazzjoni. Qabbad mas-server MariaDB lokali ma':

# mysql -u root –p

u daħħal il-password li waqqaft qabel.

PASS 2: Ladarba tkun imqabbda mas-server tad-database, oħloq l-utent u database vojta, u agħti l-permessi:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

PASS 3: Oħroġ mill-pront MariaDB u tagħbija d-dump maħluqa fis-server prinċipali:

# mysql -u root -p employees < employees-dump.sql

PASS 4: Editja l-fajl /etc/my.cnf biex tassenja ID tas-server lill-iskjav taħt it-taqsima [mysqld]. Innota li jeħtieġ li jkun numru sħiħ differenti minn 1, peress li użajna 1 fil-kaptan:

server_id=2
replicate-do-db=employees

Ibda mill-ġdid is-server tad-database:

# systemctl restart mariadb

PASS 5: Mexxi l-proċedura mysql_upgrade biex taġġorna t-tabelli tas-sistema (inti tkun imħeġġeġ biex iddaħħal il-password tal-għerq ta' MariaDB):

# mysql_upgrade -u root -p

PASS 6: Ladarba l-miżbla tkun ġiet importata lill-iskjav, aħna biss ftit passi biex tibda replika. Idħol fid-database u mexxi l-kmandi li ġejjin fil-pront MariaDB. Oqgħod attent ħafna għall-varjabbli MASTER_LOG_FILE u MASTER_LOG_POS, li għandhom jaqblu mal-valuri rritornati minn SHOW MASTER STATUS fi PASS 2 ta' “Konfigurazzjoni tal-kaptan” hawn fuq.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

PASS 7: Ibda l-iskjav u iċċekkja l-istatus tiegħu mingħajr ma toħroġ mill-pront ta' MariaDB:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

Mhux li għandek bżonn dan issa, imma innota li tista 'twaqqaf l-iskjav bi:

MariaDB [(none)]> STOP SLAVE;

jekk il-kmand SHOW SLAVE STATUS\G; jirritorna xi żbalji. Uża dawk l-iżbalji biex issolvi l-problemi u mbagħad ħaddem START SLAVE; biex terġa’ tittestja.

Test MySQL/MariaDB Database Replikazzjoni

Ejja nżidu rekord mat-tabella tal-impjegati fis-server prinċipali:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Imbagħad ivverifika li din il-bidla ġiet replikata fl-iskjav:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

Kif tistgħu taraw, ir-replikazzjoni qed taħdem b'mod korrett minn kaptan għal slave.

Sommarju

F'dan l-artikolu spjegajna kif tinstalla l-aħħar verżjoni ta 'MariaDB f'CentOS/RHEL 7 u Debian 8/9, u ddiskutejna kif twaqqaf replikazzjoni master-slave b'GTIDs. Għal aktar informazzjoni, tista 'tkun trid tirreferi għall-Gwida ta' Replikazzjoni MariaDB, u toqgħodx lura milli tikkuntattjana billi tuża l-formola hawn taħt jekk għandek mistoqsijiet jew kummenti.