首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,498 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,197 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,227 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
5,047 阅读
5
甲骨文oracle ARM 重装 Debian 10
4,694 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
typecho
linux
bench
mysql
cloudflare
nginx
lnmp
ssl
empirecms
openwrt
centos
google
n1
301
docker
qbittorrent
free
onedrive
telegram
V+变量
累计撰写
267
篇文章
累计收到
209
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
搜索到
1
篇与
的结果
2025-02-18
Mysql数据多服务器同步——mysql主从服务器配置教程
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 = ROW # 推荐使用ROW格式 expire_logs_days = 7 # 日志保留天数 max_binlog_size = 100M # 单个日志文件大小 # 可选:指定同步的数据库(不配置则默认同步所有) # binlog_do_db = db_name(2)重启 MySQL 服务service mysql restart或systemctl restart mysqld用lnmp的也可以用lnmp mysql restart来启动2) 创建复制专用账号登录 MySQL,创建用于复制的用户:CREATE USER 'repl'@'192.168.1.200' IDENTIFIED BY 'Repl_Password123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200'; FLUSH PRIVILEGES;3)备份主库数据并记录日志位置(1)锁定数据库(防止写入变动):FLUSH TABLES WITH READ LOCK;(2)查看二进制日志状态(记录 File 和 Position)SHOW MASTER STATUS;(3)输出示例+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | | | +------------------+----------+--------------+------------------+(4)保持当前窗口不关闭,新开终端备份数据mysqldump -u root -p --all-databases --master-data > master_db.sql(5)解锁数据库UNLOCK TABLES;3 从服务器(Slave)配置1)修改 MySQL 配置文件(1)编辑 my.cnf:[mysqld] server-id = 2 # 唯一ID,不能与主服务器相同 relay-log = mysql-relay-bin # 中继日志 read_only = 1 # 从库只读(确保数据安全)(2)重启 MySQL 服务systemctl restart mysqld2)导入主库备份数据将 master_db.sql 复制到从服务器,并导入mysql -u root -p < master_db.sql3)配置主从复制连接登录从服务器 MySQL,执行CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl', MASTER_PASSWORD='Repl_Password123!', MASTER_LOG_FILE='mysql-bin.000001', -- 主库记录的File MASTER_LOG_POS=107; -- 主库记录的Position启动复制:START SLAVE;4 验证主从同步1)检查从服务器状态SHOW SLAVE STATUS\G关注以下字段:Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0(表示无延迟)2)测试数据同步在主库创建表或插入数据,观察从库是否同步。5 常见问题解决1)主从连接失败检查网络:确保主从 3306 端口互通。验证账号权限:确认 repl 用户权限和密码正确。查看错误日志:tail -f /var/log/mysqld.log2)主从数据不一致重新初始化:从库停止复制,重新导入主库完整备份。跳过错误(谨慎使用):STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;3)二进制日志问题主库未开启 log-bin,或 server-id 重复。6 扩展配置GTID 复制:在 MySQL 5.6+ 启用 GTID 简化故障转移。半同步复制:确保主库事务至少传输到一个从库。多主复制:配置双主架构(需处理冲突)。完成上述操作后,主从服务器已配置成功。还需要定期监控 SHOW SLAVE STATUS 确保复制健康。
2025年02月18日
25 阅读
0 评论
0 点赞