MySQL主备同步复制是一种数据库复制技术,用于实现数据的高可用性和负载均衡。在这种架构中,主库(Master)负责处理所有的写操作,而从库(Slave)则负责读操作。通过这种方式,可以显著提升系统的读取性能和数据冗余度。

MySQL复制是基于复制源服务器在其二进制日志(binlog)中跟踪对其数据库的所有更改(增、删、改等)。binlog作为从服务器启动那一刻起修改数据库结构或内容的所有事件的书面记录。通常,SELECT不记录语句是因为它们既不修改数据库结构也不修改数据本身。
主备复制流程如下:
确保主备两台机器上都已安装MySQL,且版本一致。以下是主备库的配置示例:
机器名字 | 机器IP |
|---|---|
主库Master | 192.168.0.1 |
从库Slave | 192.168.0.2 |
在主库的MySQL配置文件中(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),需要启用二进制日志并为主库设置一个唯一的 server-id。在 [mysqld] 部分添加如下配置:
[mysqld]
server-id=1 # 主库的唯一 ID
log-bin=mysql-bin # 启用二进制日志,主从复制依赖于此
binlog-do-db=your_database # 需要同步的数据库名称,多个数据库可添加多行修改配置文件后,需要重启 MySQL 以使配置生效:
# Linux 系统
sudo systemctl restart mysqld在主库中创建一个用于复制的用户,并授予 REPLICATION SLAVE 权限。这个用户用于从库连接主库并进行数据同步:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;为了让从库知道从何处开始复制数据,主库需要提供当前的二进制日志位置。可以通过以下命令查看:
SHOW MASTER STATUS;在从库的MySQL配置文件中(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),需要设置从库的 server-id 并指定中继日志的位置。在 [mysqld] 部分添加如下配置:
[mysqld]
server-id=2
relay-log=mysql-relay-bin修改配置文件后,需要重启 MySQL 以使配置生效:
# Linux 系统
sudo systemctl restart mysqld在从库上执行以下命令,设置主从关系:
CHANGE MASTER TO
MASTER_HOST='192.168.0.1',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;启动从库的复制进程:
START SLAVE;使用以下命令检查复制状态:
SHOW SLAVE STATUS\G在主库发生故障时,可以快速切换到从库继续提供服务,提高了系统的高可用性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。