有主mysql运行5.6.30。发动机InnoDB。使用innodb_file_per_table。从服务器正在运行5.5.55,执行接下来的步骤:
- (on master) innobackupex --no-timestamp /path/to/backup
- (on master) innobackupex --apply-log
- (on slave) /etc/init.d/mysql stop; clearing /var/lib/mysql
- (on master) rsync -avpP /path/to/backup slave:/var/lib/mysql
- (on slave) chown -R mysql:mysql /var/lib/mysql
- (on slave) /etc/init.d/mysql start
- doing other steps to enable Master-Slave replication...在没有使用innodb_file_per_table的其他服务器上执行此步骤,工作正常:数据库成功复制,复制建立并工作。
但是,当“多个.ibd”启动mysql时,从表中出现错误会导致失败。所以我做错了什么。但是什么呢?错误的出口-进口?奴隶不一定比主人老吗?还有别的吗?
错误日志:
170430 21:51:05 InnoDB: 5.5.55 started; log sequence number 3110007332942 170430 21:51:05 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 170430 21:51:05 [Note] - '0.0.0.0' resolves to '0.0.0.0'; 170430 21:51:05 [Note] Server socket created on IP: '0.0.0.0'. 170430 21:51:05 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
发布于 2017-05-01 12:41:36
可以肯定的是,有些表(包括系统特权表)的结构是MySQL 5.5无法识别的。MySQL 5.5和5.6是一个主要的版本差异(不管它看起来很小),而且它们并不是向后兼容的。
尝试将skip-grant-tables添加到my.cnf中,以查看问题是否仅与系统表有关(当您添加skip-grant-tables时,将根本不使用特权表,任何人都可以使用任何密码从任何地方连接)。如果MySQL启动,这意味着您有一个破碎的特权表,而mysql_install_db应该帮助您加载空白的特权表。
如果这没有帮助,您可能会有InnoDB结构更改,而MySQL 5.5无法识别。在这种情况下,您将不得不使用逻辑备份(mysqldump或mydumper)来降低评级。顺便说一句,你可以用任何一个工作的奴隶。
顺便说一句,如果您在主程序上使用innodb_file_per_table,就不必在从机上使用它。事实上,这并没有多大意义。
https://dba.stackexchange.com/questions/172376
复制相似问题