我之前也遇到过楼下奶茶加盟小程序老板哭丧脸来找我的事,上周他那边的云服务器MySQL主库突然因为硬盘坏道彻底挂掉了,早上存的前一天刚整理的季度加盟商充值数据和备份只同步到周一,周二周三的订单和充值全丢了不说,下午三点到六点全国几百个门店点不了单、登不了后台,损失少说也有几万块。其实呢,这种问题只要提前搭个简单的MySQL主从架构就能避开,主库负责读写,从库默默同步所有操作,一旦主库出问题,咱们动动手指就能把从库顶上去。
咱们先说说什么是MySQL主从复制,通俗点讲就像两个记账员,主记账员坐在前台收钱发货、一笔一笔记在自己的大账本上,每写完一笔就把内容抄一份传到后台从记账员那里,从记账员也跟着同步更新。平时查数据的时候,咱们可以让客人或者查账的人直接找从记账员,减轻前台主记账员的压力,这还能顺便提升咱们的查询速度呢。万一主记账员临时有事请假,咱们直接把后台从记账员喊到前台就行,数据也不会断。
2026年最稳妥的一主一从服务器MySQL主从复制配置教程
先确认咱们有两台一样系统(比如最新的CentOS Stream 9或者Ubuntu 24.04 LTS)的云服务器或者物理服务器哦,两台的MySQL版本也得尽量一致,别一个8.0一个5.7,容易出兼容性问题。主库记得提前放好咱们正在用的业务数据,从库可以是刚装完的干净系统。
第一步咱们先动主库,先打开MySQL的配置文件my.cnf或者my.ini(Windows用这个,不过现在小站长小开发者大多用Linux,咱们就讲Linux的),一般在/etc/my.cnf这个位置,没有的话就自己建一个。打开之后在[mysqld]下面加三行东西,第一行是server-id=1,这个就像给主记账员挂个工牌,必须唯一,从库不能用;第二行是log-bin=mysql-bin,这个就是让主库把每笔操作都抄成小纸条(二进制日志)发给从库;第三行可以加个binlog-do-db=你的数据库名,只同步咱们需要的业务库,省得占带宽。加完之后保存退出,然后重启MySQL服务,用systemctl restart mysqld或者service mysql restart都行。
接下来咱们在主库给从库建一个专门用来同步的账号,就像给从记账员一把能看大账本抄小纸条的钥匙。登录主库的MySQL命令行,输入CREATE USER ‘slave_user’@’从库的公网IP’ IDENTIFIED BY ‘你自己设的强密码’; 然后再给这个账号授权,输入GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’从库的公网IP’; 最后刷新一下权限,输入FLUSH PRIVILEGES; 授权完成之后咱们要看看主库现在的小纸条写到第几页第几行了,输入SHOW MASTER STATUS; 记住File那栏的文件名和Position那栏的数字,别写错哦。
然后咱们动从库,同样先打开配置文件,在[mysqld]下面加两行东西,第一行server-id=2,工牌必须和主库不一样;第二行可以加个read-only=1,除了root用户和专门的同步账号,其他人只能查不能改,避免数据冲突。加完之后重启MySQL服务。登录从库的MySQL命令行,输入CHANGE MASTER TO MASTER_HOST=’主库的公网IP’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’刚才设的强密码’, MASTER_LOG_FILE=’刚才在主库记的文件名’, MASTER_LOG_POS=刚才记的数字; 输完之后咱们启动从库的同步,输入START SLAVE; 最后检查一下同步状态,输入SHOW SLAVE STATUSG; 看看Slave_IO_Running和Slave_SQL_Running这两个是不是都是Yes,如果是的话就说明配置成功啦。
搭完之后咱们可以测试一下,在主库的业务库里随便加一条数据,看看从库有没有同步过去。平时咱们可以把后台的查询请求都分到从库上,减轻主库的压力,主库挂了之后咱们也能快速把从库的read-only改成0,然后把业务IP指向从库,就这么简单。想要更稳的话还可以搭个双主或者一主多从,但一主一从对咱们小站长小开发者来说已经足够提升数据库可用性啦。

评论列表 (0条):
加载更多评论 Loading...