MySQL配置SSL主从复制是为了确保数据在主从节点之间的传输是安全的,通过加密通信防止数据在传输过程中被窃取或篡改。SSL(Secure Sockets Layer)是一种广泛使用的网络安全协议,可以为网络通信提供加密处理,确保数据的私密性。
在MySQL 5.6和5.7版本中,配置SSL主从复制的基本步骤如下:
### MySQL 5.6 配置SSL文件方法
1. **创建证书目录**:
```
mkdir /home/mysql/mysqlcerts && cd /home/mysql/mysqlcerts
```
2. **生成CA证书**:
```
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem
```
3. **生成服务器证书**:
```
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
```
4. **生成客户端证书**:
```
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
```
5. **验证证书**:
```
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
```
### MySQL 5.7 配置SSL文件方法
1. **创建证书目录**:
```
mkdir -p /home/mysql/mysqlcerts
```
2. **使用MySQL提供的工具生成SSL RSA文件**:
```
/usr/local/mysql-5.7.21-linux-glibc2.12-x86_64/bin/mysql_ssl_rsa_setup --datadir=/home/mysql/mysqlcerts/
```
### 主库配置
1. **将生成的证书文件复制到从库**:
```
scp ca.pem client-cert.pem client-key.pem root@192.168.1.222:/home/mysql/mysqlcerts/
```
2. **授权从库连接**:
```
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.222' identified by '' REQUIRE SSL;
```
3. **修改my.cnf配置文件**:
```
# SSL配置
ssl-ca=/home/mysql/mysqlcerts/ca.pem
ssl-cert=/home/mysql/mysqlcerts/server-cert.pem
ssl-key=/home/mysql/mysqlcerts/server-key.pem
```
4. **重启MySQL服务**:
```
service mysql restart
```
### 从库配置
1. **设置证书权限**:
```
chown -R mysql.mysql /home/mysql/mysqlcerts/
```
2. **根据主库配置相应的my.cnf文件**。
完成上述步骤后,从库需要通过`CHANGE MASTER TO`命令设置主库信息,并启动复制。
配置SSL主从复制需要注意以下几点:
- 证书和密钥文件的安全管理,确保只有授权的用户和进程可以访问。
- 在生产环境中,不建议使用空密码,应为`REPL`用户设置安全密码。
- 保持证书和密钥文件的同步,尤其是当主库更换证书时,从库也需要更新对应的文件。
- 监控SSL复制的性能,因为加密和解密过程可能会影响网络带宽和CPU使用率。
通过SSL主从复制,可以在保障数据安全的同时实现高效的数据同步,适用于对数据安全性有较高要求的企业和组织。