Debian MySQL主从复制原理主要基于MySQL的二进制日志(Binary Log)和SQL线程。以下是详细的步骤和原理:
启用二进制日志:
在主服务器的my.cnf
或my.ini
文件中添加以下配置:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
server-id
必须是唯一的,用于区分主服务器和从服务器。
创建复制用户: 在主服务器上创建一个专门用于复制的用户,并授予相应的权限:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
在主服务器上执行以下命令,获取当前的二进制日志文件名和位置:
SHOW MASTER STATUS;
记录下File
和Position
的值。
启用二进制日志(可选): 如果从服务器也需要进行写操作,可以启用二进制日志:
[mysqld]
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
配置复制: 在从服务器上执行以下命令,配置复制:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', # 替换为实际文件名
MASTER_LOG_POS=123; # 替换为实际位置
START SLAVE;
I/O线程: 从服务器启动一个I/O线程,连接到主服务器,并请求二进制日志的更新。主服务器将二进制日志的内容发送给从服务器,并记录当前的日志文件名和位置。
SQL线程: 从服务器启动一个SQL线程,读取主服务器发送的二进制日志,并在本地执行这些日志中的SQL语句,从而实现数据的同步。
检查复制状态: 在从服务器上执行以下命令,检查复制状态:
SHOW SLAVE STATUS\G
关键字段包括:
Slave_IO_Running
: I/O线程是否运行。Slave_SQL_Running
: SQL线程是否运行。Last_IO_Error
: I/O线程的最后错误信息。Last_SQL_Error
: SQL线程的最后错误信息。处理延迟: 如果发现复制延迟,可以通过优化查询、增加硬件资源等方式来减少延迟。
故障恢复: 如果主服务器宕机,可以从从服务器提升为新的主服务器,并重新配置其他从服务器。
通过以上步骤,Debian MySQL的主从复制原理得以实现,确保了数据的高可用性和一致性。