mysql8主从部署
时间: 2025-04-29 09:56:44 浏览: 11
### MySQL 8 主从复制部署教程
#### 修改配置文件
为了实现主从复制,需要编辑MySQL的配置文件`my.cnf`或者`mysqld.cnf`。对于主服务器和从服务器而言,最关键的是要确保每台服务器都有唯一的 `server-id` 设置[^1]。
```ini
[mysqld]
server-id=1
log-bin=mysql-bin
```
上述配置适用于主服务器;而从服务器则应具有不同的 `server-id` 值,例如:
```ini
[mysqld]
server-id=2
relay-log=mysql-relay-bin
```
这些更改完成后需重启MySQL服务使新设置生效[^2]。
#### 创建用于复制的账户并授权
登录至MySQL命令行工具,在主数据库上执行如下SQL语句来创建一个专门用来做同步工作的用户,并赋予其必要的权限以便能够读取二进制日志以及处理数据传输请求[^3]:
```sql
CREATE USER 'repl_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
```
这里需要注意替换掉 `'your_password'` 成实际想要设定给此用户的密码字符串。
#### 启动主从关系建立过程
当所有的前期准备工作都已完成之后,就可以着手准备启动主从之间的连接了。这一步骤涉及到获取当前主库的状态信息、锁定表防止写入操作发生改变、导出备份快照并将之恢复到备机上去等一系列动作。具体来说就是在Master端运行下面这条查询得到最新的Binlog位置:
```sql
SHOW MASTER STATUS;
```
接着把获得的信息传递给Slave使其知道应该从哪里开始拉取消息流。可以通过CHANGE MASTER TO指令完成这项工作,格式大致如下所示(假设前面提到过的那个状态显示File字段值为mysql-bin.000001, Position字段值为154):
```sql
STOP SLAVE; -- 如果之前有正在运行中的slave进程的话先停止它
RESET SLAVE ALL;
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
```
最后通过查看SLAVE I/O线程与SQL线程的工作状况确认整个流程是否正常运作:
```sql
SHOW SLAVE STATUS\G;
```
如果一切顺利,则可以看到两个重要的标志位均为Yes表示成功建立了链接并且正在进行实时的数据同步活动。
#### 复制模式的选择
在MySQL 8 中,默认采用基于行的日志记录方式(Row-based Replication),这种方式可以更精确地捕捉到每一行的变化情况从而减少潜在的风险因素。不过也可以手动切换回旧版风格即基于语句的方式(SBR),尽管后者存在一些局限性但是某些特定场景下可能更加适用[^4]。
阅读全文
相关推荐



















