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主從復制可以有效地實現數據的實時備份和負載均衡。