use*_*684 41 mysql replication master slave
我正在尝试为MySQL进行Master Slave Replication.当我输入以下命令时:
CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;
Run Code Online (Sandbox Code Playgroud)
它会引发以下错误:
ERROR 1201(HY000):无法初始化主信息结构; 可以在MySQL错误日志中找到更多错误消息
任何帮助将不胜感激.
Neo*_*Neo 144
尝试重置它,它是魔术!从SLAVE MYSQL命令类型:
RESET SLAVE;
Run Code Online (Sandbox Code Playgroud)
然后再试一次:
CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;
Run Code Online (Sandbox Code Playgroud)
请检查几件事:
1)确保Master的/etc/my.cnf实际设置了server_id
原因如下:复制依赖于server_id.无论何时执行查询并将其记录在主服务器的二进制日志中,都会记录主服务器的server_id.默认情况下,如果/etc/my.cnf中未定义server_id,则server_id默认为1.但是,MySQL Replication要求在master的/etc/my.cnf中明确定义server_id.此外,对于任何给定的slave,mysqld会检查SQL语句的server_id,因为它从中继日志中读取它并确保它与slave的server_id不同.这就是MySQL Replication知道执行该SQL语句是安全的.在实现Circular(Master-Master,MultiMaster)复制的情况下,此规则是必需的.
使用 select @@server_id;
在SQL命令行真能遏制配置的服务器.
2)确保Slave的/etc/my.cnf实际设置了server_id
原因如下:与#1相同的原因
3)确保Master的/etc/my.cnf中的server_id与Slave的/etc/my.cnf中的server_id不同
原因如下:与#1相同的原因
作为旁注:如果您设置了多个从站,请确保每个从站与其主站及其同级从站具有不同的server_id.
原因如下:示例
具有2个从属的主服务器
MASTER具有server_id 1
SLAVE1具有server_id 2
SLAVE2具有server_id 2
复制将在SLAVE2上变得非常缓慢,因为兄弟从属具有相同的server_id.事实上,它将稳步落后,赶上休息,处理一些SQL语句.这是主服务器有一个或多个具有相同server_ids的从服务器的错误.这是一个在任何地方都没有真正记录的问题.我一生中见过这几十次.