### MySQL 主从服务器
在 MySQL 主从复制架构中,主服务器(Master)负责处理所有的写操作(INSERT、UPDATE、DELETE 等),而从服务器(Slave)用于复制主服务器上的数据。从服务器通常用于处理读操作(SELECT 等),以分担主服务器的负载。
### 主从灾备
主从灾备是一种高可用性和数据恢复策略,其中主服务器作为主要的数据存储和处理单元,而一个或多个从服务器作为备份。如果主服务器出现故障或宕机,其中一个从服务器可以迅速提升为新的主服务器,以最小化服务中断时间。
### 同一时间有几个在进行工作?
在主从架构中,主服务器一直在进行工作,处理写操作和可能的读操作。从服务器也一直在工作,但主要处理读操作和复制主服务器的数据。
- **主服务器(Master)**: 通常只有一个,负责所有写操作。
- **从服务器(Slave)**: 可以有一个或多个,通常负责读操作和作为灾备。
从服务器可以用于负载均衡,将读操作的负担分散到多个从服务器上,从而提高系统的整体性能和可用性。
总体而言,主从服务器都是在同一时间进行工作的,但它们的职责和用途有所不同。
实时同步在 MySQL 主从复制中是通过 Binary Logging(二进制日志,简称 Binlog)来实现的。主服务器上的所有更改(如 INSERT、UPDATE、DELETE 等)都会被写入 Binlog。从服务器有一个 I/O 线程,它连接到主服务器并复制 Binlog 中的事件,然后再由 SQL 线程应用这些事件,以实现数据的实时同步。
### 配置步骤
#### 在主服务器上:
1. 打开 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`)。
2. 在 `[mysqld]` 部分下添加以下行:
```ini
log-bin=mysql-bin
server-id=1
```
3. 重启 MySQL 服务。
```bash
sudo systemctl restart mysql
```
4. 创建一个用于复制的 MySQL 用户并授权。
```sql
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
```
5. 查看主服务器状态以获取当前 Binlog 文件和位置。
```sql
SHOW MASTER STATUS;
```
#### 在从服务器上:
1. 打开 MySQL 配置文件。
2. 在 `[mysqld]` 部分下添加以下行:
```ini
server-id=2
```
3. 重启 MySQL 服务。
```bash
sudo systemctl restart mysql
```
4. 配置从服务器以连接到主服务器。
```sql
CHANGE MASTER TO
MASTER_HOST='master_ip_address',
MASTER_USER='replication_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='binlog_file',
MASTER_LOG_POS=binlog_position;
```
`binlog_file` 和 `binlog_position` 是从主服务器的 `SHOW MASTER STATUS;` 命令中获得的。
5. 启动从服务器上的复制。
```sql
START SLAVE;
```
6. 查看从服务器状态以确保复制正在运行。
```sql
SHOW SLAVE STATUS\G;
```
这样,主从复制就配置完成了,从服务器应该能实时同步主服务器上的数据更改。
注意:这只是一个基础的主从复制配置指南。在生产环境中,还需要考虑更多的因素,如数据加密、网络安全、错误处理等。