CentOS MySQL主从复制原理主要基于MySQL的二进制日志(Binary Log)和I/O线程、SQL线程。以下是主从复制的详细步骤和原理:
my.cnf
或my.ini
文件中,确保以下配置项已设置:[mysqld]
server-id = 1 # 主服务器的唯一ID
log_bin = /var/log/mysql/mysql-bin.log # 二进制日志文件路径
binlog_do_db = your_database # 需要复制的数据库(可选)
systemctl restart mysqld
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录File
和Position
的值。my.cnf
或my.ini
文件中添加以下配置:[mysqld]
server-id = 2 # 从服务器的唯一ID,必须与主服务器不同
relay_log = /var/log/mysql/mysql-relay-bin.log # 中继日志文件路径
log_bin = /var/log/mysql/mysql-bin.log # 可选,如果需要从服务器也记录二进制日志
replicate_do_db = your_database # 需要复制的数据库(可选)
systemctl restart mysqld
CHANGE MASTER TO
MASTER_HOST='master_ip', # 主服务器的IP地址
MASTER_USER='replicator', # 复制用户的用户名
MASTER_PASSWORD='password', # 复制用户的密码
MASTER_LOG_FILE='mysql-bin.000001', # 主服务器的二进制日志文件名
MASTER_LOG_POS=123; # 主服务器的二进制日志位置
将MASTER_LOG_FILE
和MASTER_LOG_POS
替换为你之前记录的值。START SLAVE;
SHOW SLAVE STATUS\G
关键字段解释:
Slave_IO_Running
: I/O线程状态,应为Yes
。Slave_SQL_Running
: SQL线程状态,应为Yes
。Seconds_Behind_Master
: 从服务器落后主服务器的时间(秒)。通过以上步骤和原理,CentOS MySQL主从复制可以有效地实现数据的实时备份和负载均衡。