当前位置:首页 >  站长 >  数据库 >  正文

一台数据库扛不住了?MySQL 主从复制搭建实录,附跳坑指南

 2026-08-28 14:40  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

站点流量上来后,读写全压在一台 MySQL 上,页面越来越慢,更闹心的是没备份没冗余,机器一挂全站完蛋。主从复制是数据库水平扩展的第一步:主库写、从库读,顺便从库就是一台热备。原理不难,就是主库把变更写进 binlog,从库拉回来重放。

第一步,主库开 binlog 并建复制账号:

# 主库 my.cnf [mysqld] 段
server-id = 1
log-bin = mysql-bin
binlog_format = ROW

# 建账号
CREATE USER 'repl'@'从库IP' IDENTIFIED BY '强密码';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP';
FLUSH PRIVILEGES;

# 记下此刻的日志位点
SHOW MASTER STATUS; -- 记住 File 和 Position 两个值

第二步,从库配置并启动复制:

# 从库 my.cnf [mysqld] 段
server-id = 2
read_only = 1
relay-log = relay-bin

CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='强密码',
MASTER_LOG_FILE='mysql-bin.000123', -- 上面记的File
MASTER_LOG_POS=456789; -- 上面记的Position
START SLAVE;

验证看两个线程状态:

SHOW SLAVE STATUS\G
# 关键看三行,必须都是 Yes
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
# Seconds_Behind_Master: 0 -- 延迟秒数

最常见的翻车点是 Slave_IO_Running 一直 Connecting:先查从库能不能连上主库 3306(防火墙和安全组),再核对账号密码和授权的来源 IP。另一个高频问题是复制中断报 1062 主键冲突,通常是主从两边都被人写过数据,紧急恢复可以 SET GLOBAL sql_slave_skip_counter = 1 跳过一条,但跳完必须查清数据是否一致,治标不治本。

应用层接上从库后记得一件事:复制是异步的,刚写完马上读的场景(比如用户改完资料刷新页面)要从主库读,不然用户会疑惑刚保存的数据怎么不见了。读写分离的业务边界想清楚,比搭复制本身更重要。(数据来源:MySQL官方手册) 

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
mysql

相关文章

  • 表越删越慢?OPTIMIZE TABLE回收空间实录

    日志表每天删几十万行,文件却一点没变小,查询还越来越慢。这不是玄学,是InnoDB的机制:删除的数据只是打标记,空间留在文件里复用,但反复增删后数据页变得稀碎,扫描效率下降。碎到一定程度就得整理。先看碎片率再动手,information_schema里直接查。SELECTtable_name,ROU

    标签:
    mysql
  • 网站突然连不上数据库?SHOW PROCESSLIST排查实录

    页面集体报数据库连接失败,重启MySQL能救急,但过几小时又犯。这种病根基本是连接堆积:请求速度超过消化速度,连接数堆到max_connections上限,新连接全被拒。排查工具就是一条SQL。SHOWPROCESSLIST;--输出关键列:Id、User、Host、db、Command、Time、

    标签:
    mysql
  • MySQL索引为什么不生效:六个写法让EXPLAIN当场现形

    明明建了索引,查询还是全表扫描,几百万行的表一查十几秒。索引失效多数不是索引的问题,是SQL写法的问题。别猜,EXPLAIN一下,type列是不是ALL、key列是不是NULL,一目了然。EXPLAINSELECT*FROMordersWHEREDATE(create_time)='2026-08-

    标签:
    mysql
  • 网站数据自动备份:一个脚本+一个计划任务搞定

    网站备份是出事之后最后悔没做的东西。很多人服务器被黑后才发现数据库没备份,几年的内容一夜归零。其实一个shell脚本加一个定时任务就能解决。下面这个脚本同时备份MySQL数据库和网站源码,按日期命名,保留最近7天。Linux服务器直接放到/root/backup.sh,Windows可以改成Powe

    标签:
    数据备份
    mysql
  • MySQL慢查询定位三板斧:慢日志+EXPLAIN+索引

    网站卡顿不一定是代码慢,很可能是数据库在硬扛。MySQL慢查询日志是最直接的突破口,先把执行时间长的SQL抓出来,再一条条用EXPLAIN看执行计划,最后加索引或者改写法。开启慢日志很简单,在my.cnf里加三行,重启MySQL即可。注意long_query_time单位是秒,线上可以先设1秒,抓到

    标签:
    mysql
    网站优化

热门排行

信息推荐