linux下mysql主从复制
### Linux 下 MySQL 主从复制详解 #### 一、概述 MySQL 的主从复制是一种非常重要的技术,它不仅可以提高系统的可用性和扩展性,还能为数据备份提供便利。在本篇文章中,我们将详细介绍如何在 Linux 操作系统环境下搭建 MySQL 的单向主从复制与双向主从复制。通过这些步骤,您可以确保数据的高可用性和容灾能力。 #### 二、单向主从复制配置 ##### 1. 配置 Master 节点 我们需要对 Master 节点进行配置。这一步主要是为了让 Master 节点能够记录其执行的所有更改,并且可以被 Slave 节点读取这些更改。以下是配置 Master 节点的主要步骤: - **编辑 my.cnf 文件**:在 Master 节点上编辑 `/etc/my.cnf` 文件,加入以下内容: ``` [mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = test binlog-ignore-db = mysql ``` - `server-id`:设置服务器 ID,每个服务器上的 ID 必须唯一。 - `log-bin`:启用二进制日志功能,并指定日志文件名前缀。 - `binlog-do-db`:指定需要复制的数据库名称。 - `binlog-ignore-db`:指定不需要复制的数据库名称。 - **重启 MySQL 服务**:执行 `service mysqld restart` 命令来重启 MySQL 服务,以便让上述配置生效。 - **授予 Slave 用户权限**:在 Master 节点上登录 MySQL 并执行以下命令,授予 Slave 用户从 Master 读取日志的权限: ```sql GRANT REPLICATION SLAVE ON *.* TO 'root'@'slaveIP' IDENTIFIED BY 'password'; ``` 其中,`slaveIP` 是 Slave 节点的 IP 地址。 - **刷新权限**:执行 `FLUSH PRIVILEGES;` 命令刷新权限。 ##### 2. 配置 Slave 节点 接下来,我们配置 Slave 节点以使其能够从 Master 节点同步数据: - **编辑 my.cnf 文件**:同样,在 Slave 节点上编辑 `/etc/my.cnf` 文件,加入以下内容: ``` [mysqld] server-id = 2 log-bin = mysql-bin replicate-do-db = test replicate-ignore-db = mysql ``` - `server-id`:设置服务器 ID,与 Master 节点不同。 - `replicate-do-db`:指定需要复制的数据库名称。 - `replicate-ignore-db`:指定不需要复制的数据库名称。 - **重启 MySQL 服务**:执行 `service mysqld restart` 命令来重启 MySQL 服务,以便让上述配置生效。 - **获取 Master 节点的状态**:在 Master 节点上执行 `SHOW MASTER STATUS;` 命令,获取二进制日志文件名和位置信息。 - **配置 Slave 节点连接 Master 节点**:在 Slave 节点上登录 MySQL 并执行以下命令,配置 Slave 节点连接到 Master 节点: ```sql STOP SLAVE; CHANGE MASTER TO MASTER_HOST = 'Master_IP', MASTER_USER = 'user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; START SLAVE; ``` 其中,`Master_IP`、`user` 和 `password` 分别是 Master 节点的 IP 地址、用户名和密码;`MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 是从 Master 节点获取的日志文件名和位置信息。 - **检查 Slave 节点状态**:执行 `SHOW SLAVE STATUS\G` 命令查看 Slave 节点的状态,确认 `Slave_IO_Running` 和 `Slave_SQL_Running` 的值都为 Yes,表示复制正常运行。 #### 三、双向主从复制配置 ##### 1. 配置第一个节点作为 Master - **编辑 my.cnf 文件**:在第一个节点上编辑 `/etc/my.cnf` 文件,加入以下内容: ``` [mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = test binlog-ignore-db = mysql ``` - **重启 MySQL 服务**:执行 `service mysqld restart` 命令来重启 MySQL 服务,以便让上述配置生效。 ##### 2. 配置第二个节点作为 Slave - **编辑 my.cnf 文件**:在第二个节点上编辑 `/etc/my.cnf` 文件,加入以下内容: ``` [mysqld] server-id = 2 log-bin = mysql-bin replicate-do-db = test replicate-ignore-db = mysql ``` - **重启 MySQL 服务**:执行 `service mysqld restart` 命令来重启 MySQL 服务,以便让上述配置生效。 ##### 3. 第一个节点配置连接第二个节点 - **授予 Slave 用户权限**:在第一个节点上登录 MySQL 并执行以下命令,授予 Slave 用户从另一个节点读取日志的权限: ```sql GRANT REPLICATION SLAVE ON *.* TO 'root'@'Second_Node_IP' IDENTIFIED BY 'password'; ``` - **获取第一个节点的状态**:在第一个节点上执行 `SHOW MASTER STATUS;` 命令,获取二进制日志文件名和位置信息。 - **配置第二个节点连接第一个节点**:在第二个节点上登录 MySQL 并执行以下命令,配置第二个节点连接到第一个节点: ```sql STOP SLAVE; CHANGE MASTER TO MASTER_HOST = 'First_Node_IP', MASTER_USER = 'user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; START SLAVE; ``` - **检查第二个节点状态**:执行 `SHOW SLAVE STATUS\G` 命令查看第二个节点的状态,确认 `Slave_IO_Running` 和 `Slave_SQL_Running` 的值都为 Yes,表示复制正常运行。 ##### 4. 第二个节点配置连接第一个节点 - **授予 Slave 用户权限**:在第二个节点上登录 MySQL 并执行以下命令,授予 Slave 用户从第一个节点读取日志的权限: ```sql GRANT REPLICATION SLAVE ON *.* TO 'root'@'First_Node_IP' IDENTIFIED BY 'password'; ``` - **获取第二个节点的状态**:在第二个节点上执行 `SHOW MASTER STATUS;` 命令,获取二进制日志文件名和位置信息。 - **配置第一个节点连接第二个节点**:在第一个节点上登录 MySQL 并执行以下命令,配置第一个节点连接到第二个节点: ```sql STOP SLAVE; CHANGE MASTER TO MASTER_HOST = 'Second_Node_IP', MASTER_USER = 'user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; START SLAVE; ``` - **检查第一个节点状态**:执行 `SHOW SLAVE STATUS\G` 命令查看第一个节点的状态,确认 `Slave_IO_Running` 和 `Slave_SQL_Running` 的值都为 Yes,表示复制正常运行。 #### 四、总结 通过以上的步骤,我们成功地完成了 MySQL 在 Linux 环境下的单向主从复制和双向主从复制的配置。这样的配置不仅提高了数据的安全性,也为数据的备份和恢复提供了极大的便利。同时,对于需要高可用性和负载均衡的应用场景来说,这种配置也是非常实用的。希望本文能帮助您更好地理解和掌握 MySQL 的主从复制技术。
- junsheng1002014-01-07正在找这方面的资料,正好用的上
- hbjylsq2015-02-07簡單實用,好看還便宜。MYSQL能在hadoop上用就好啦
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助