MySQL 8.0 实现主从复制

MySQL 8 严格来说这个是复制,所以官方的英文文档是Replica,而非Master Slave。
该方法均适用于Linux和Windows的MySQL。
MySQL Setting Up Replicas
Digital Ocean - How to Setup Replication
设置主节点
主要以参考Digital Ocean文档为主来修改配置
Linux是查看/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf
Windows是查看C:\ProgramData\MySQL\my.ini;
如果有bind-address则要么删除,允许全部ip访问,要么改为进来请求的IP。
1 | bind-address = source_server_ip |
其次server-id = 1,而在从节点,是2/3/4/5… (主节点的id数字是最小的)
1 | [mysqld] |
然后需要增加想要同步的数据库名:
例如:
1 | [mysqld] |
然后我们可以重启mysql了。
1 | # Windows使用net stop mysql80和net start mysql80 |
这时候通过mysql命令查看:
1 | mysql > SHOW MASTER STATUS; |
随着mysql重启,mysql-bin.尾数也会增加。
创建复制用户
1 | CREATE USER 'replica_user'@'replica_server_ip' IDENTIFIED WITH mysql_native_password BY 'password'; |
这里需要注意,我们默认新增用户其实是用caching_sha2_password的模式连接,这需要SSL。所以我们改为用mysql_native_password的模式。你可以通过以下方式查询到用户连接模式:
1 | select host, user, plugin from mysql.user |
然后再
1 | GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'replica_server_ip'; |
当然我们也先从mysqldump备份好SQL, 如果本身服务没在使用,就不用锁数据了。
设置从节点
1 | [mysqld] |
配置完以上,即可重启服务。
然后在mysql内填写我们从SHOW MASTER STATUS得到的数值:
1 | CHANGE REPLICATION SOURCE TO |
之后,在从节点启用复制
1 | START REPLICA; |
这时候可以在主节点测试是否成功。插入新数据,再去从节点查看是否有这个数据即可。
- 标题: MySQL 8.0 实现主从复制
- 作者: 暗香疏影
- 创建于 : 2025-02-28 00:00:00
- 更新于 : 2025-02-28 00:00:00
- 链接: https://blog.23ikr.com/2025/02/28/2025-02-28-MySQL80-Replica-master-slave/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论