Sådan opsættes MySQL (Master-Slave) replikering i RHEL, CentOS, Fedora
Den følgende vejledning har til formål at give dig en simpel trin-for-trin guide til opsætning af MySQL (Master-Slave) replikering i RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 og Fedora 17 , 16,15,14,13,12 ved hjælp af den nyeste MySQL-version. Denne vejledning er specielt skrevet til CentOS 6.3-operativsystemet, men fungerer også med ældre version af Linux-distributioner med MySQL 5.x.
MySQL-replikering er meget nyttig med hensyn til datasikkerhed, failover-løsning, databasebackup fra slave, analyse osv. Vi bruger følgende ting til at gennemføre replikationsprocessen. I dit scenario ville det være anderledes.
- Arbejder Linux OS som CentOS 6.3, RedHat 6.3 eller Fedora 17
- Master og Slave er CentOS 6.3 Linux-servere.
- Master-IP-adresse er: 192.168.1.1.
- Slave-IP-adresse er: 192.168.1.2.
- Master og Slave er på det samme LAN-netværk.
- Master og Slave har MySQL-version installeret.
- Master tillader eksterne MySQL-forbindelser på port 3306.
Vi har to servere, den ene er Master med IP (192.168.1.1) og den anden er Slave som (192.168.1.2). Vi har opdelt installationsprocessen i to faser for at gøre tingene lettere for dig. I fase I konfigurerer vi masterserveren og i fase II med slave-serveren. Lad os starte replikeringsopsætningsprocessen.
Fase I: Konfigurer masterserver (192.168.1.1) til replikering
I fase I vil vi se installationen af MySQL, opsætte replikering og derefter kontrollere replikering.
Fortsæt først med MySQL-installation ved hjælp af YUM-kommandoen. Hvis du allerede har MySQL-installation, kan du springe dette trin over.
# yum install mysql-server mysql
Åbn my.cnf konfigurationsfil med VI editor.
# vi /etc/my.cnf
Tilføj følgende poster under [mysqld] sektionen, og glem ikke at erstatte tecmint med databasenavn, som du gerne vil replikere på 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
Genstart MySQL-tjenesten.
# /etc/init.d/mysqld restart
Log ind på MySQL som rootbruger, og opret slavebrugeren, og tildel privilegier til replikering. Udskift slave_user med bruger og din_adgangskode med adgangskode.
# 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;
Skriv venligst filnumrene (mysql-bin.000003) og position (11128001), vi krævede disse numre senere på Slave-serveren. Anvend derefter LÆS LÅS til databaser for at eksportere al database og masterdatabaseinformation med mysqldump-kommandoen.
# mysqldump -u root -p --all-databases --master-data > /root/dbdump.db
Når du først har dumpet alle databaser, skal du nu oprette forbindelse til mysql som root-bruger og unlcok-tabeller.
mysql> UNLOCK TABLES; mysql> quit;
Upload database dump-filen på Slave Server (192.168.1.2) ved hjælp af SCP-kommandoen.
scp /root/dbdump.db [email :/root/
Det er det, vi med succes har konfigureret Master-serveren, lad os gå videre til fase II-sektionen.
Fase II: Konfigurer slave-server (192.168.1.2) til replikering
I fase II udfører vi installationen af MySQL, opsætter replikering og derefter verificerer replikering.
Hvis du ikke har MySQL installeret, skal du installere det ved hjælp af YUM-kommandoen.
# yum install mysql-server mysql
Åbn my.cnf konfigurationsfil med VI editor.
# vi /etc/my.cnf
Tilføj følgende poster under [mysqld] sektionen, og glem ikke at erstatte IP-adressen på Master-serveren, tecmint med databasenavn osv., Som du gerne vil replikere med Master.
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
Importer nu dumpfilen, som vi eksporterede i tidligere kommando, og genstart MySQL-tjenesten.
# mysql -u root -p < /root/dbdump.db # /etc/init.d/mysqld restart
Log ind på MySQL som rootbruger og stop slaven. Fortæl derefter slaven, hvor den skal lede efter Master-logfil, at vi har skrevet ned på master med SHOW MASTER STATUS; kommando som File (mysql-bin.000003) og Position (11128001) numre. Du skal ændre 192.168.1.1 til IP-adressen på Master Server og ændre brugeren og adgangskoden i overensstemmelse hermed.
# 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)
Bekræftelse af MySQL-replikering på Master og Slave Server
Det er virkelig meget vigtigt at vide, at replikeringen fungerer perfekt. Opret tabel på Master-server og indsæt nogle værdier i den.
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)
Bekræftelse af SLAVE ved at køre den samme kommando vil den også returnere de samme værdier i slaven.
mysql> use tecmint; mysql> SELECT * FROM employee;
+------+ | c | +------+ | 1 | +------+ 1 row in set (0.00 sec)
Det er det, endelig har du konfigureret MySQL Replication i et par enkle trin. Flere oplysninger findes i MySQL Replication Guide.