Недавно мы обновили настройку мастер-мастер MySQL 5.0 до Percona 5.6. Подчиненное устройство перестало работать из-за некоторых сбоев с нашей стороны, но мы подумали, что можем просто исправить это, используя xtrabackup для создания резервной копии с работающего сервера и импорта ее на ведомый. Я пытался сделать это все выходные (отчасти потому, что это огромная база данных с безумным количеством баз данных и таблиц), но безуспешно. Может ли кто-нибудь пролить свет на то, что я здесь делаю неправильно?
Сначала я запускаю следующее на текущем производственном мастере:
ulimit -n 409600
innobackupex --defaults-file=/etc/mysql/debian.cnf /mnt
Когда это будет сделано, я копирую полученный каталог на другой сервер и запускаю:
innobackupex --use-memory=4G --apply-log /srv/restore
В конце концов, он завершится с сообщением ОК. Теперь я восстанавливаю его в базе данных с помощью:
innobackupex --move-back /srv/restore
Все идет хорошо, и я могу снова запустить MySQL (после того, как открою каталог / srv / mysql, который является нашим каталогом данных). Там есть данные, и база данных работает нормально. Теперь я начинаю работать с этой базой данных:
/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e "CHANGE MASTER TO MASTER_HOST='10.x.x.x', MASTER_USER='replication', MASTER_PASSWORD='verysecret', MASTER_AUTO_POSITION=1; START SLAVE"
Ведомый запускается, но сразу останавливается из-за ошибки 1062. После расследования я обнаружил, что запись, которую он пытается применить, была добавлена в главную базу данных сразу после того, как я начал резервное копирование. Я могу это исправить, но сразу получаю новую ошибку.
Мне кажется, что резервная копия не содержала всех последних GTID, а только тех, которые были доступны в начале резервного копирования? Я думал, это именно то, что XtraBackup должен был исправить? Сейчас я не вижу альтернативы тому, чтобы во время резервного копирования в базу данных не производились записи. Я что-то здесь делаю не так? Это должно случиться?
Работает на Debian Wheezy со всеми последними патчами.
Server version: 5.6.25-73.1-log Percona Server (GPL), Release 73.1, Revision 07b797f
$ innobackupex --version
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
$ xtrabackup --version
xtrabackup version 2.2.11 based on MySQL server 5.6.24 Linux (x86_64) (revision id: )
Вы должны сообщить ведомому устройству, что последний GTID был выполнен на ведущем устройстве при выполнении резервного копирования.
NewSlave > SET GLOBAL gtid_purged="XXXX";
NewSlave > CHANGE MASTER TO
MASTER_HOST="10.x.x.x",
MASTER_USER="replication",
MASTER_PASSWORD="verysecret",
MASTER_AUTO_POSITION = 1;
NewSlave > START SLAVE;
NewSlave > SHOW SLAVE STATUS \G;
Источник: https://www.percona.com/doc/percona-xtrabackup/2.1/howtos/recipes_ibkx_gtid.html