MySQL主从复制配置指南:读写分离与高可用搭建
MySQL主从同步是利用二进制日志(binlog)将主机数据实时复制到从机,实现读写分离和热备份。本文将演示如何通过双实例配置(不同端口),创建复制账户并验证主从数据一致性。
为什么选择主从同步?
MySQL主从架构主要解决以下三个问题:
- 读写分离:将写操作集中在主机,读操作分散到多个从机。对于"读多写少"的互联网应用,可显著降低服务器并发压力。
- 数据热备份:主库运行期间,从库保持数据同步,无需停机即可备份。
- 高可用性:当主机宕机时,可快速切换至从库作为新主机,保证业务连续性。
主从同步工作原理
主机(Master)执行写入操作时,会将变更记录在二进制日志文件 (binlog)中。从机(Slave)通过IO线程向主机发起请求,拉取最新的binlog内容,并在本地重放SQL语句,从而保持数据一致。
配置准备:定义主从角色
为演示方便,我们在同一台机器上启动两个不同端口的MySQL实例:3301为主机(Master),3302为从机(Slave)。若在不同物理机上,仅需修改配置文件中的IP地址即可。
第1步:编写主机配置文件
在主机配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf)中添加以下内容:
[mysqld]
port=3308 # 实际运行的端口
server_id=111 # 唯一标识符,不可重复
log_bin=binlog # 开启二进制日志,必须项
read_only=off # 主机需支持写入
super_read_only=off
第2步:编写从机配置文件
从机用于接收同步数据,建议开启只读模式:
[mysqld]
port=3309 # 从机端口
server_id=2 # 必须与主机不同
log_bin=binlog # 从机也建议开启binlog,用于级联或中继
read_only=on # 普通用户只读
super_read_only=on # 超级用户也只读(防止误操)
主机端操作:建立连接通道
第3步:初始化并进入主机数据库
确保主机服务正常启动后,登录数据库:
第4步:创建专用的复制账号并授权
出于安全考虑,不建议使用root账号进行同步。创建一个专门的用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
第5步:获取主库状态信息
执行命令查看当前二进制日志的文件名和位置点,这是从机同步的起点:
SHOW MASTER STATUS;
注意:请务必记录输出的 File 名称(如 binlog.00000x)和 Position 数值,后续步骤需要用到。
从机端操作:建立同步关系
第6步:配置从库连接主机
进入从库终端,使用 CHANGE REPLICATION SOURCE TO 命令指定同步源。请替换下方代码中的密码、端口及在第5步记录的日志文件和位置:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='127.0.0.1',
SOURCE_USER='repl',
SOURCE_PASSWORD='repl',
SOURCE_PORT=3308,
SOURCE_LOG_FILE='binlog.000006',
SOURCE_LOG_POS=336;
第7步:启动同步并验证
启动复制线程:
START REPLICA;
检查IO线程和SQL线程的状态,若均为 Yes 则表示成功:
SHOW REPLICA STATUS \G
测试主从同步效果
观察主机已有的数据库列表:
此时从机的数据库列表应与主机一致:
执行插入操作:在主机中新建一个数据库进行测试:
刷新检查:回到从机查看,新的数据库 xxx 应该已经同步出现:
以上就是MySQL主从同步配置的详细内容,更多关于MySQL数据库读写分离与高可用性的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













