CentOS下MySQL复制功能基于主从架构,通过二进制日志(Binlog)实现数据同步,支持异步、半同步等多种复制方式,以下是核心要点:
二进制日志(Binlog)
log-bin(启用Binlog)、binlog_format(格式,推荐ROW格式,记录完整行数据)。复制线程
Binlog Dump Thread,负责推送Binlog给从服务器。I/O Thread:接收Binlog并写入本地中继日志(Relay Log)。SQL Thread:解析中继日志并执行SQL语句,完成数据同步。异步复制(默认)
半同步复制
GTID复制
gtid_mode=ON。主服务器配置
/etc/my.cnf:[mysqld]
server-id=1 # 主服务器唯一ID
log-bin=mysql-bin # 启用Binlog
binlog_format=ROW # 推荐行格式
systemctl restart mysqld。CREATE USER 'repl'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;,记录File和Position(后续从服务器配置需使用)。从服务器配置
/etc/my.cnf:[mysqld]
server-id=2 # 从服务器唯一ID(需与主服务器不同)
relay-log=mysql-relay-bin # 启用中继日志
read_only=1 # 可选:设置为只读(生产环境建议)
systemctl restart mysqld。CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.000001', # 主服务器Binlog文件名
MASTER_LOG_POS=4; # 主服务器Binlog位置
START SLAVE; # 启动复制
SHOW SLAVE STATUS\G,确认Slave_IO_Running和Slave_SQL_Running均为Yes。innodb_flush_log_at_trx_commit=2提升写入性能(牺牲部分持久性)。slave_parallel_workers)提升同步速度。STOP SLAVE; RESET MASTER;等命令将从服务器提升为主服务器。参考来源: