Kaip nustatyti „MySQL“ (pagrindinio vergo) replikavimą RHEL, CentOS, Fedora


Šios pamokos tikslas - pateikti jums paprastą išsamų „MySQL“ (pagrindinio-vergo) replikacijos nustatymo RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 ir „Fedora 17“ vadovą. , 16,15,14,13,12 naudojant naujausią „MySQL“ versiją. Šis vadovas yra specialiai parašytas „CentOS 6.3“ operacinei sistemai, bet taip pat veikia su senesnėmis „Linux“ paskirstymų versijomis su „MySQL 5.x“.

„MySQL“ replikacija yra labai naudinga kalbant apie duomenų saugumą, pertrūkių sprendimą, „Slave“ duomenų bazių atsarginę kopiją, „Analytics“ ir kt. Mes naudojame šiuos dalykus, kad atliktume replikacijos procesą. Jūsų scenarijuje būtų kitaip.

  1. Veikianti „Linux“ OS kaip „Fedora 17“
  2. „Master“ ir „Slave“ yra „CentOS 6.3 Linux“ serveriai.
  3. Pagrindinis IP adresas yra: 192.168.1.1.
  4. Vergo IP adresas yra: 192.168.1.2.
  5. „Master“ ir „Slave“ yra tame pačiame LAN tinkle.
  6. „Master and Slave“ yra įdiegta „MySQL“ versija.
  7. Pagrindinis leidimas nuotolinius „MySQL“ ryšius 3306. prievade.

Mes turime du serverius, vienas yra „Master“ su IP (192.168.1.1), kitas - „Slave as“ (192.168.1.2). Sąrankos procesą padalijome į du etapus, kad jums būtų lengviau. Pirmame etape sukonfigūruosime pagrindinį serverį, o II - su „Slave“ serveriu. Pradėkime replikacijos sąrankos procesą.

I etapas: konfigūruokite pagrindinį serverį (192.168.1.1) replikavimui

Pirmame etape pamatysime „MySQL“ diegimą, „Replikacijos“ nustatymą ir tada replikacijos patikrinimą.

Pirmiausia tęskite „MySQL“ diegimą naudodami komandą YUM. Jei jau turite „MySQL“ diegimą, galite praleisti šį veiksmą.

# yum install mysql-server mysql

Atidarykite „my.cnf“ konfigūracijos failą naudodami VI redaktorių.

# vi /etc/my.cnf

Skyriuje [mysqld] pridėkite šiuos įrašus ir nepamirškite pakeisti „tecmint“ duomenų bazės pavadinimu, kurį norite pakartoti „Slave“.

server-id = 1
binlog-do-db=tecmint
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

Iš naujo paleiskite „MySQL“ paslaugą.

# /etc/init.d/mysqld restart

Prisijunkite prie „MySQL“ kaip root vartotojas ir sukurkite vergo vartotoją bei suteikite teises replikacijai. Pakeiskite slave_user vartotoju, o slaptažodis slaptažodžiu.

# mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'your_password';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 11128001 | tecmint		 |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> quit;

Prašome užsirašyti „File“ (mysql-bin.000003) ir „Position“ (11128001) numerius, šių skaičių vėliau prireikė „Slave“ serveryje. Tada pritaikykite „READ LOCK“ duomenų bazėms, kad eksportuotumėte visą duomenų bazės ir pagrindinės duomenų bazės informaciją naudodami „mysqldump“ komandą.

#  mysqldump -u root -p --all-databases --master-data > /root/dbdump.db

Kai išmesite visas duomenų bazes, dabar vėl prisijunkite prie „mysql“ kaip root vartotojo ir „unlcok“ lentelės.

mysql> UNLOCK TABLES;
mysql> quit;

Įkelkite duomenų bazės iškelties failą į „Slave Server“ (192.168.1.2) naudodami komandą SCP.

scp /root/dbdump.db [email :/root/

Štai ir sėkmingai sukonfigūravome pagrindinį serverį, pereikime prie II etapo.

II etapas: konfigūruokite „Slave Server“ (192.168.1.2) replikavimui

II etape mes įdiegiame „MySQL“, nustatome replikaciją ir tada patikriname replikaciją.

Jei neturite įdiegę „MySQL“, įdiekite jį naudodami komandą YUM.

# yum install mysql-server mysql

Atidarykite „my.cnf“ konfigūracijos failą naudodami VI redaktorių.

# vi /etc/my.cnf

Pridėkite šiuos įrašus skyriuje [mysqld] ir nepamirškite pakeisti pagrindinio serverio IP adreso, tecmint duomenų bazės pavadinimu ir pan., Kuriuos norite pakartoti pagrindiniu serveriu.

server-id = 2
master-host=192.168.1.1
master-connect-retry=60
master-user=slave_user
master-password=yourpassword
replicate-do-db=tecmint
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

Dabar importuokite iškelties failą, kurį eksportavome naudodami ankstesnę komandą, ir iš naujo paleiskite „MySQL“ paslaugą.

# mysql -u root -p < /root/dbdump.db
# /etc/init.d/mysqld restart

Prisijunkite prie „MySQL“ kaip root vartotojas ir sustabdykite vergą. Tada pasakykite vergui, kur ieškoti magistro žurnalo failo, kurį mes užrašėme ant pagrindinio su SHOW MASTER STATUS komandą kaip Failo (mysql-bin.000003) ir Pozicijos (11128001) numerius. Turite pakeisti 192.168.1.1 į pagrindinio serverio IP adresą ir atitinkamai pakeisti vartotoją ir slaptažodį.

# mysql -u root -p
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='slave_user', MASTER_PASSWORD='yourpassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=11128001;
mysql> slave start;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.1
                  Master_User: slave_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 12345100
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 11381900
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: tecmint
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 12345100
              Relay_Log_Space: 11382055
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

„MySQL“ replikacijos tikrinimas pagrindiniame ir „Slave“ serveryje

Tikrai labai svarbu žinoti, kad replikacija veikia puikiai. Pagrindiniame serveryje sukurkite lentelę ir į ją įterpkite keletą reikšmių.

mysql> create database tecmint;
mysql> use tecmint;
mysql> CREATE TABLE employee (c int);
mysql> INSERT INTO employee (c) VALUES (1);
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)

Patvirtindamas SLAVE, vykdydamas tą pačią komandą, jis grąžins tas pačias reikšmes ir vergui.

mysql> use tecmint;
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)

Viskas, pagaliau sukonfigūravote „MySQL Replication“ atlikdami kelis paprastus veiksmus. Daugiau informacijos galite rasti „MySQL Replication Guide“.