ubuntu mysql5.7主从配置
时间: 2025-03-06 17:45:17 浏览: 47
### Ubuntu 上 MySQL 5.7 主从复制配置
#### 准备工作
确保主服务器和从服务器都已安装并正常运行 MySQL 5.7 版本。确认网络连接畅通无阻,允许两台机器之间通过 IP 地址互相访问。
#### 修改 my.cnf 文件
编辑 `/etc/mysql/my.cnf` 或者 `/etc/mysql/mysql.conf.d/mysqld.cnf` 文件,在 `[mysqld]` 节点下添加或修改如下参数:
```ini
server-id = 1 # 设置唯一的ID给Master节点
log_bin = /var/log/mysql/mysql-bin.log # 开启bin-log功能,并指定路径
expire_logs_days = 10 # 清理过期的日志文件天数
max_binlog_size = 100M # 单个日志最大尺寸
```
对于Slave节点,则应设置不同的 `server-id` 值,例如设为2或其他任意不冲突的正整数值[^5]。
#### 创建用于同步的数据账户
在 Master 数据库中执行 SQL 指令来创建一个新的用户专门用来做数据同步操作:
```sql
CREATE USER 'repl'@'<slave_ip>' IDENTIFIED BY '<password>';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'<slave_ip>';
FLUSH PRIVILEGES;
SHOW MASTER STATUS\G;
```
这里 `<slave_ip>` 是指 Slave 的IP地址;而 `<password>` 则是你想要设定的一个密码字符串。上述命令会显示当前二进制日志的位置信息,记录下来稍后会在 Slave 中用到这些值[^1]。
#### 备份现有数据库结构与数据
为了初始化 Slave ,可以采用 mysqldump 工具导出整个数据库的内容至一个SQL脚本文档里保存起来备用:
```bash
mysqldump -u root -p --all-databases --master-data > dbdump.sql
```
此过程结束后记得解锁表单以便继续正常使用数据库服务[^3]。
#### 启动 Slave 并配置指向 Master
将之前备份好的 `.sql` 文件导入到 Slave 实例当中去之后,再利用 CHANGE MASTER TO 语句告知它要跟踪哪个 Master 及其位置详情:
```sql
CHANGE MASTER TO
MASTER_HOST='<master_ip>',
MASTER_USER='repl',
MASTER_PASSWORD='<password>',
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS=154;
START SLAVE;
```
这里的 `MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 参数应该对应于前面 SHOW MASTER STATUS 所返回的结果中的具体值。
#### 验证主从关系建立情况
可以通过查询两个变量的状态来进行验证:
```sql
SHOW SLAVE STATUS\G;
```
当看到 `Slave_IO_Running: Yes` 和 `Slave_SQL_Running: Yes` 这样的输出时就说明一切正常了。如果有任何异常提示,请参照相关文档排查可能存在的问题[^4]。
#### 解决常见问题
如果遇到 `Slave_IO_Running: Connecting` 错误,这通常是因为主服务器上的防火墙阻止了来自从服务器的连接请求。解决办法是关闭主服务器的防火墙或者是开放必要的端口号让 MySQL 流量得以通行。另外一种可能性就是由于 UUID 冲突引起的问题——即两台主机拥有相同的 auto.cnf 文件内容。此时只需移除从机内的该文件后再重新启动 MySQL 就能解决问题。
阅读全文
相关推荐
















