V变量—建站日记 - sync
type: channel
link: http://vvars.com/tag/sync/
items: Mysql数据多服务器同步——mysql主从服务器配置教程

Mysql数据多服务器同步——mysql主从服务器配置教程
type: item
date: 2025-02-18T22:42:00+08:00
description: 0 前言针对网站采取多服务器配置和负载均衡的情况，网站文件可以采用syncthing、verysync之类的同步软件实现同步更新，但针对mysql如果直接采用直接复制数据库文件则会存在权限和报错问题，这个时候就需要配置主从mysql服务器了，让从服务器复制主服务器的数据。首先我们针对该问题咨询了deepseek，deepseek给出如下提示： 嗯，用户想要配置MySQL的主从服务器，我得先理清楚步骤。主从复制通常用于数据备份、负载均衡或者高可用性，对吧？首先需要确认用户使用的是哪个MySQL版本，不过可能不同版本的步骤类似，但最好还是提一下版本兼容性。接下来，主服务器的配置。用户可能需要修改my.cnf或者my.ini文件，启用二进制日志，设置唯一的server-id。然后创建用于复制的账户，赋予REPLICATION SLAVE权限。之后需要锁定数据库，导出数据，记录当前的二进制日志位置。这部分可能会遇到问题，比如用户可能不知道如何找到正确的日志文件和位置，或者忘记锁定导致数据不一致。然后是配置从服务器。同样需要修改配置文件，设置不同的server-id，可能还要配置中继日志的位置。用户可能在这里出错，比如server-id和主服务器重复，或者路径配置不正确。之后需要导入主服务器的数据备份，这一步如果备份文件很大，可能需要较长时间，或者导入时出现权限问题。设置主从连接的时候，用户需要在从服务器上执行CHANGE MASTER TO命令，输入正确的主库IP、端口、用户名、密码以及日志文件和位置。这里常见的错误是输入信息错误，比如密码不对，或者主服务器的防火墙阻止了连接。启动从服务器复制后，需要检查Slave_IO_Running和Slave_SQL_Running的状态是否为Yes，如果有错误，可能需要查看错误日志来排查。可能的故障点包括网络问题导致主从无法通信，主库的二进制日志没有开启，server-id冲突，或者时间不同步。用户可能还会遇到复制延迟的问题，或者主库有写操作而没使用事务导致数据不一致。需要提醒用户定期检查复制状态，处理可能出现的错误。此外，用户可能需要配置更复杂的拓扑结构，比如链式复制或者多主复制，但基础的主从配置是这些的基础。安全方面也要注意，复制账户的权限应该仅限于复制，避免使用高权限账户。另外，备份和恢复策略也是必要的，以防配置过程中出现数据丢失。最后，应该总结一下步骤，确保用户能一步步跟随操作，并提醒常见问题和解决方法。可能还需要给出一些常用的SQL命令示例，比如SHOW MASTER STATUS和SHOW SLAVE STATUS，这样用户可以直接复制粘贴使用。如果用户的环境有特殊需求，比如云服务器或者不同操作系统，可能还需要调整部分步骤，比如配置文件的位置或者服务的重启命令。1 环境配置1）主服务器（Master）：IP 地址 192.168.1.100 2）从服务器（Slave）：IP 地址 192.168.1.200 3）MySQL 版本：建议主从服务器版本一致（如 MySQL 5.7/8.0） 4）确保主从网络互通，防火墙开放 3306 端口。2 主服务器（Master）配置1） 修改 MySQL 配置文件（1）编辑 my.cnf（路径一般为 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf）：[mysqld] server-id = 1 # 唯一ID，主从不能重复 log-bin = mysql-bin # 开启二进制日志 binlog_format = mixed # 推荐使用mixed格式 expire_logs_days = 10 # 日志保留天数 max_binlog_size = 100M # 单个日志文件大小 # 可选：指定同步的数据库（不配置则默认同步所有） # binlog_do_db = db_name（2）重启 MySQL 服务用lnmp一键包的可以用如下命令来启动：lnmp mysql restart不行的试下service mysql restart或systemctl restart mysqld2） 创建复制专用账号登录 MySQL，创建用于复制的用户：CREATE USER 'replica_user'@'%' IDENTIFIED BY 'Repl_Password123!'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;3）备份主库数据并记录日志位置（1）锁定数据库（防止写入变动）：FLUSH TABLES WITH READ LOCK;（2）查看二进制日志状态（记录 File 和 Position）SHOW …