Я пытаюсь настроить репликацию mysql, сделав снимок lvm главного datadir и скопировав его на подчиненное устройство.
Процедура довольно проста, на главном сервере я выполняю «FLUSH TABLES WITH READ LOCK», а на втором терминале делаю снимок lvm с lvcreate -l40%FREE -s -n mysql-backup /dev/MySQL/mysql
После этого разблокировать столы.
Затем я монтирую моментальный снимок и копирую datadir на подчиненное устройство, но mysql не запускается с ошибками:
150105 12:50:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150105 12:50:53 [Warning] Changed limits: max_open_files: 1024 max_connections: 100 table_cache: 457 150105 12:50:54 InnoDB: The InnoDB memory heap is disabled 150105 12:50:54 InnoDB: Mutexes and rw_locks use GCC atomic builtins 150105 12:50:54 InnoDB: Compressed tables use zlib 1.2.7 150105 12:50:54 InnoDB: Using Linux native AIO 150105 12:50:54 InnoDB: Initializing buffer pool, size = 3.9G 150105 12:50:54 InnoDB: Completed initialization of buffer pool 150105 12:50:54 InnoDB: highest supported file format is Barracuda. InnoDB: Log scan progressed past the checkpoint lsn 29552065932592 150105 12:50:54 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Error: trying to add tablespace 210146 of name './somedatabase/CRM_printers.ibd' InnoDB: to the tablespace memory cache, but tablespace InnoDB: 210146 of name './somedatabase/status.ibd' already exists in the tablespace InnoDB: memory cache! 150105 12:50:55 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Я проверил, существуют ли файлы этих таблиц. Итак, затем я запустил базу данных с innodb_force_recovery = 1 и mysql после этого запустил множество ошибок, подобных этой:
InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Error: trying to add tablespace 210146 of name './db/k.ibd' InnoDB: to the tablespace memory cache, but tablespace InnoDB: 210146 of name './db/y.ibd' already exists in the tablespace InnoDB: memory cache! InnoDB: innodb_force_recovery was set to 1. Continuing crash recovery InnoDB: even though the tablespace creation of this table failed. InnoDB: Error: trying to add tablespace 210235 of name './db/a.ibd' InnoDB: to the tablespace memory cache, but tablespace InnoDB: 210235 of name './db/ty.ibd' already exists in the tablespace InnoDB: memory cache! InnoDB: innodb_force_recovery was set to 1. Continuing crash recovery InnoDB: even though the tablespace creation of this table failed. InnoDB: Error: trying to add tablespace 210285 of name './db/PC.ibd' InnoDB: to the tablespace memory cache, but tablespace InnoDB: 210285 of name './portal/HR.ibd' already exists in the tablespace InnoDB: memory cache!
Теперь я запускаю mysqlcheck -A в этой базе данных, и в результате появляется сообщение о том, что некоторые таблицы не существуют, но существуют файлы frm и idb.
В чем проблема, что-то не так с моим снимком?