GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare la replica Master-Slave MariaDB su CentOS 7

Il concetto di replica del database garantisce che i dati vengano copiati su più server da un server master. Ciò fornisce la ridondanza dei dati e garantisce che i dati non vengano persi in caso di guasto del nodo Master. In questo articolo, diamo un'occhiata alla replica Master-Slave di MariaDB su CentOS 7. Dimostreremo come i dati possono essere copiati da un database situato su un nodo Master a un altro database situato su un sistema Slave.

Scenario di replica master-slave MariaDB

Ecco la configurazione della replica:



Master node (CentOS 7 64 bit) : IP 173.82.2.236

Slave node: (CentOS 7 64 bit) : IP 173.82.94.57

Fase 1:installa MariaDB sia sul nodo Master che Slave

Per iniziare, accedi sia al nodo master che a quello slave ed esegui i seguenti comandi per installare il server MariaDB

yum install mariadb-server mariadb

Risultato campione

Avvia il servizio MariaDB e abilitalo all'avvio



# systemctl start mariadb
# systemctl enable mariadb

Risultato campione

Fase 2:imposta la password MariaDB sia su Master che su Slave

Per impostazione predefinita, la password per MariaDB/MySQL è generalmente vuota e gli utenti non autorizzati possono accedere al database. Dobbiamo renderlo sicuro configurando una password e rafforzandola con altre poche impostazioni. Per ottenere ciò, eseguire il comando seguente sia sul nodo master che su quello slave

mysql_secure_installation

Risultato campione

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter
New password:   ## Enter new password
Re-enter new password:  ## Enter password again
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  ## Enter Y and press Enter
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  ## Enter Y and press Enter
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Fase 3:configurazione del nodo master

Ora che abbiamo rinforzato le nostre istanze MariaDB su entrambi i nodi, configuriamo il nodo Master.

Innanzitutto, dobbiamo consentire la porta 3306 di MariaDB attraverso il firewall CentOS 7. Per fare ciò, esegui i comandi

# firewall-cmd --add-port=3306/tcp --zone=public --permanent

Risultato campione

Ricaricare il firewall per effettuare le modifiche

# firewall-cmd --relaod

Risultato campione

Quindi, apporta alcune modifiche a /etc/my.cnf file

vim /etc/my.cnf

aggiungi le seguenti righe in [mysqld] sezione



[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=replica_db
[...]

Qui, replica_db è il database che creeremo e lo replicheremo sullo slave.

Quindi, riavvia il servizio MariaDB usando il comando:

systemctl restart mariadb

Ora accediamo a MariaDB come utente root:

mysql -u root -p

Il passaggio successivo sarà creare il replica_db banca dati

MariaDB [(none)]> CREATE DATABASE replica_db;

Quindi, crea un utente e una password Slave. Ad esempio, utilizzeremo slave_user come nome utente Slave e P@ssword100 come password:


MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'P@ssword100';
Query OK, 0 rows affected (0.00 sec)

Quindi, svuota i privilegi come mostrato


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

Quindi, esegui il comando seguente per visualizzare lo stato principale

SHOW MASTER STATUS;

Fase 4:backup del database nel server Master e trasferimento allo Slave

Quindi, esegui il comando seguente per eseguire il backup di tutti i database principali

 # mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql

Questo crea un file chiamato masterdatabase.sql nella directory di lavoro corrente.

Accedi nuovamente a MySQL come utente root:

mysql -u root -p

E sblocca i tavoli:



MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

Ora copia il masterdatabase.sql file sul tuo server Slave.

Quindi il comando sarà:

scp masterdatabase.sql [email protected]:/home

Ricorda che 173.82.94.57 è il nostro server slave MariaDB.

Fase 4:configurazione dello slave MariaDB

Ora è il momento di configurare il nodo Slave MariaDB

Modifica il file /etc/my.cnf file

vim /etc/my.cnf

Aggiungi le seguenti voci sotto [mysqld] sezione come mostrato

 
[mysqld]
server-id = 2
replicate-do-db=replica_db
[...]

Qui replica_db è il database creato sul nodo Master Server. Inoltre, ricorda di utilizzare server-id diversi sia per i server master che per quelli slave. In questo caso, il server-id è 2

Salva ed esci dal file.

Successivamente, importeremo il database principale come mostrato

mysql -u root -p < /home/masterdatabase.sql 

Tieni presente che abbiamo già copiato il file masterdatabase.sql dal server master nella directory /home/ del server slave.

Riavvia il servizio MariaDB per effettuare le modifiche.

systemctl restart mariadb

Ora accedi a MariaDB come utente root

mysql -u root -p

Ferma lo schiavo. Indica allo Slave dove trovare il file di registro principale e avvia lo Slave.


MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='173.82.2.236', MASTER_USER='slave_user', MASTER_PASSWORD='P@ssword100', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=473;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)

Quindi, esegui il comando seguente per mostrare lo stato dello Slave

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

Test della replica di MariaDB

Lato maestro:

Vai al tuo server master MariaDB e accedi all'istanza MariaDB usando il comando come mostrato

mysql -u root -p

Crea il database replica_db

Quindi, crea una tabella Persons

Aggiungi un record come mostrato

Infine, Visualizza la tabella

Lato schiavo:

Ora accedi all'istanza del database MariaDB sul server Slave

mysql -u root -p

Successivamente, visualizza i database utilizzando il comando seguente

SHOW DATABASES;

Come puoi vedere, il replica_db il database è presente, il che significa che è stato replicato!

Andiamo avanti ed esaminiamo all'interno del database e controlliamo se sono presenti tabelle. Corri

use replica_db;

Allora

show tables;

Come puoi vedere, la tabella Persone creato in precedenza nel nodo Master è presente. Perfetto!

Riveliamo i suoi record per essere assolutamente sicuri che il nostro database sia stato completamente replicato

select *from replica_db;

Come osservato, tutti i contenuti sono stati replicati e sono accurati. Brava!

In questo articolo, hai imparato come impostare la replica Master-Slave MariaDB su CentOS 7. Provalo e sentiti libero di valutare.


Linux
  1. Come reimpostare la password di root di MySQL o MariaDB

  2. Mutt:come archiviare in modo sicuro la password?

  3. Come configurare VSFTPD su CentOS 8

  4. Come configurare WireGuard VPN su CentOS 8

  5. Come installare MySQL su CentOS 7.x?

Come configurare un server TeamSpeak su CentOS 7

Come configurare un server Minecraft su CentOS 7

Come configurare GitLab su CentOS 8

Come ripristinare la password di root di MySQL 8.0 su Centos 7.x?

Come gestire le cassette postali con RoundCube su CentOS 7

Come reimpostare la password di root in CentOS/RHEL 8