mariadb replicat doc
This commit is contained in:
153
Databases/Mariadb/Replication.md
Normal file
153
Databases/Mariadb/Replication.md
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
|
||||||
|
# 📘 MariaDB Replication Setup Guide
|
||||||
|
|
||||||
|
This guide walks you through setting up **Master-Slave Replication** using MariaDB.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Step 1: Install MariaDB
|
||||||
|
|
||||||
|
Install MariaDB on both the **master** and **slave** servers.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install mariadb-server
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Step 2: Configure the Master Server
|
||||||
|
|
||||||
|
Edit the MariaDB configuration file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
|
||||||
|
```
|
||||||
|
|
||||||
|
Add or modify the following under the `[mariadb]` section:
|
||||||
|
|
||||||
|
```cnf
|
||||||
|
[mariadb]
|
||||||
|
log-bin
|
||||||
|
server_id=1
|
||||||
|
log-basename=master1
|
||||||
|
binlog-format=mixed
|
||||||
|
```
|
||||||
|
|
||||||
|
🔁 **Also**, change the `bind-address` to allow external connections:
|
||||||
|
|
||||||
|
```cnf
|
||||||
|
bind-address = 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔐 Step 3: Create Replication User
|
||||||
|
|
||||||
|
Access the MariaDB shell:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE USER 'radin'@'%' IDENTIFIED BY '123';
|
||||||
|
GRANT REPLICATION SLAVE ON *.* TO 'radin'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 Step 4: Check Master Status
|
||||||
|
|
||||||
|
Still inside the MariaDB shell, run:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
SHOW MASTER STATUS;
|
||||||
|
```
|
||||||
|
|
||||||
|
Take note of:
|
||||||
|
|
||||||
|
* `File`: The binary log file name (e.g., `db-master1-bin.000003`)
|
||||||
|
* `Position`: The log position (e.g., `347`)
|
||||||
|
|
||||||
|
Then, in a separate terminal, unlock tables:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
UNLOCK TABLES;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Step 5: Configure the Slave Server
|
||||||
|
|
||||||
|
Edit the config file on the slave:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the following:
|
||||||
|
|
||||||
|
```cnf
|
||||||
|
[mariadb]
|
||||||
|
log-bin
|
||||||
|
server_id=2
|
||||||
|
log-basename=slave1
|
||||||
|
binlog-format=mixed
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Step 6: Set Up Slave Replication
|
||||||
|
|
||||||
|
Access the MariaDB shell on the slave server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the following (replace values as needed):
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CHANGE MASTER TO
|
||||||
|
MASTER_HOST='192.168.6.160',
|
||||||
|
MASTER_USER='radin',
|
||||||
|
MASTER_PASSWORD='123',
|
||||||
|
MASTER_PORT=3306,
|
||||||
|
MASTER_LOG_FILE='db-master1-bin.000003',
|
||||||
|
MASTER_LOG_POS=347,
|
||||||
|
MASTER_CONNECT_RETRY=10;
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the slave:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
START SLAVE;
|
||||||
|
```
|
||||||
|
|
||||||
|
Check slave status:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SHOW SLAVE STATUS\G
|
||||||
|
```
|
||||||
|
|
||||||
|
Look for:
|
||||||
|
|
||||||
|
* `Slave_IO_Running: Yes`
|
||||||
|
* `Slave_SQL_Running: Yes`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔁 Resetting the Slave
|
||||||
|
|
||||||
|
To reset the slave configuration:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
STOP SLAVE;
|
||||||
|
RESET SLAVE ALL;
|
||||||
|
```
|
||||||
|
|
||||||
Reference in New Issue
Block a user