### MySQL 5.6 主从复制详解
#### 一、MySQL 5.6 主从复制概念
MySQL 的主从复制是一种常见的数据冗余方案,它能够实现数据的高可用性和故障转移,同时还能够用于负载均衡和读写分离。在主从复制架构中,一个或多个“从服务器”会自动复制来自“主服务器”的所有数据更改。
#### 二、环境准备
本文档介绍了一种基于 CentOS 6.4 (64位) 操作系统的 MySQL 5.6 主从复制配置方法。具体环境如下:
- **操作系统**:CentOS 6.4 64位
- **MySQL 版本**:MySQL 5.6
- **主服务器 IP**:192.168.10.11
- **从服务器 IP**:192.168.10.10
#### 三、配置主服务器
##### 3.1 配置 Master
在主服务器上进行如下配置:
1. **修改 my.cnf 文件**:在主服务器上编辑 `/etc/my.cnf` 文件,添加以下内容来配置二进制日志和服务器 ID。
```ini
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = baba1
binlog-do-db = baba2
binlog-ignore-db = mysql
log-bin = /var/log/mysqlbin/bin_log
expire_logs_days = 365
```
- `server-id`: 设置唯一标识符,确保每个服务器都有不同的 ID。
- `log-bin`: 启用二进制日志。
- `binlog-do-db`: 规定哪些数据库的数据变更需要记录到二进制日志中。
- `binlog-ignore-db`: 忽略不需要记录的数据变更。
- `expire_logs_days`: 日志文件的保存时间,0 表示不自动删除。
2. **重启 MySQL 服务**:使用以下命令重启 MySQL 服务使配置生效。
```bash
service mysql restart
```
3. **创建复制用户**:在 MySQL 命令行中创建一个专门用于复制的用户。
```sql
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
```
4. **测试连接**:在从服务器上使用复制用户登录主服务器,验证用户权限配置是否正确。
```bash
mysql -ubackup -h192.168.10.11 -p123456
```
5. **检查主服务器状态**:使用以下命令检查主服务器的状态,获取必要的信息以配置从服务器。
```sql
SHOW MASTER STATUS;
```
输出结果示例:
```
+-----------------+----------+-------------+------------------+------------------+
| File | Position | Binlog_Do_DB| Binlog_Ignore_DB | Executed_Gtid_Set|
+-----------------+----------+-------------+------------------+------------------+
| bin_log.000030 | 120 | baba1,baba2 | mysql | |
+-----------------+----------+-------------+------------------+------------------+
```
#### 四、配置从服务器
##### 4.1 配置 Slave
接下来,在从服务器上进行如下配置:
1. **修改 my.cnf 文件**:同样地,编辑 `/etc/my.cnf` 文件并添加以下内容。
```ini
[mysqld]
server-id = 3
replicate-do-db = baba1
replicate-do-db = baba2
replicate-ignore-db = mysql
```
2. **重启 MySQL 服务**:重启 MySQL 服务以应用新配置。
```bash
service mysql restart
```
3. **设置从服务器同步**:使用以下命令配置从服务器同步主服务器的数据。
```sql
CHANGE MASTER TO
MASTER_HOST = '192.168.10.11',
MASTER_PORT = 3306,
MASTER_USER = 'backup',
MASTER_PASSWORD = '123456',
MASTER_LOG_FILE = 'bin_log.000030',
MASTER_LOG_POS = 120,
MASTER_CONNECT_RETRY = 10;
```
- `MASTER_HOST`: 主服务器的 IP 地址。
- `MASTER_PORT`: 主服务器的 MySQL 端口。
- `MASTER_USER` 和 `MASTER_PASSWORD`: 在主服务器上创建的复制用户的用户名和密码。
- `MASTER_LOG_FILE` 和 `MASTER_LOG_POS`: 从主服务器状态查询中获取的二进制日志文件名和位置。
- `MASTER_CONNECT_RETRY`: 如果连接失败,则每隔多少秒尝试重新连接。
4. **启动从服务器的复制进程**:执行以下命令启动从服务器的复制进程。
```sql
START SLAVE;
```
5. **验证复制状态**:使用以下命令验证从服务器的复制状态。
```sql
SHOW SLAVE STATUS\G
```
输出结果应显示 `Slave_IO_Running` 和 `Slave_SQL_Running` 均为 `Yes`,表示复制正在正常运行。
#### 五、测试主从复制
为了确保主从复制配置成功,可以在主服务器上进行简单的测试操作。例如,在主服务器上创建一个新的表,并插入几条记录,然后检查从服务器上的相应数据库是否同步了这些更改。如果一切正常,则说明主从复制配置成功。
#### 六、总结
通过以上步骤,我们已经完成了 MySQL 5.6 的主从复制配置。这种配置不仅能够提高数据的可靠性和安全性,还能够提供数据的读写分离功能,从而提高系统的整体性能。需要注意的是,实际部署时还需要根据具体的业务需求和网络环境进行相应的调整。