MySQL主从复制指的是在多台MySQL服务器之间建立一种“主从”关系,即在一台服务器上将数据库记录更改同步到其他几台服务器上。这种机制可以实现数据备份、负载均衡、读写分离等功能,十分实用。下面我们将详细介绍MySQL如何实现主从复制。
首先,我们需要设置一台MySQL服务器作为“主服务器”,其他服务器作为“从服务器”。
# 主服务器配置
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = dbname
在主服务器的MySQL配置文件my.cnf中,需要设置server-id为1,表示这是主服务器。同时,我们需要开启二进制日志功能,将结果记录到mysql-bin.log中,以便从服务器通过读取该文件来完成数据同步。binlog_do_db选项表示只记录某个数据库中的操作。
# 从服务器配置
[mysqld]
server-id = 2
replicate-do-db = dbname
在从服务器的配置文件中,需要设置不同的server-id。replicate-do-db表示只从主服务器同步指定的数据库,防止同步不必要的数据。
接下来,我们需要在主服务器上创建一个用于同步的用户。
CREATE USER 'sync_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'%';
这段代码创建了一个IP地址为任意的同步用户,并授权其具有从服务器的权限。接下来,在从服务器上进行连接操作。
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_PORT=3306,
MASTER_USER='sync_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
此时,从服务器就已经连接上了主服务器。MASTER_LOG_FILE和MASTER_LOG_POS的值需要和主服务器的一致,以便从服务器能够恢复到和主服务器一致的状态。
现在,我们启动从服务器的复制功能。
START SLAVE;
从服务器现在将开始同步主服务器上的数据,可以使用SHOW SLAVE STATUS命令来查看同步状态。
SHOW SLAVE STATUS\G
这条命令可以查看当前从服务器的复制状态,包括主服务器的地址、同步位置等信息。如果出现问题,需要进行故障排除。
除此以外,还可以通过设置主从同步的复制模式来实现读写分离、负载均衡等功能。MySQL主从复制是一个非常实用的功能,在分布式数据库中具有十分广泛的应用。