ть ли способ создать раб Mysql / Percona без использования дам
-
30-09-2020 - |
Вопрос
03Cp> Я не смог ничего найти, чтобы я уверен, что ответ u003Cem>нет, что ты, нуб?u003C/em> Но я чувствую необходимость спрашивать все равно :)u003C/
03Cp> Есть ли простая утилита, которая позволила бы получить новый ведомый сервер в существующем мастере u003Cstrong>безu003C/strong> необходимости выполнять дамп на мастере?u003C/
03Cp> Я настроил рабов традиционным образом несколько раз, поэтому я не без знания о процессе, но мне интересно, если кто-то почувствовал то же самое, что я u003Cem>должен быть прощеu003C/em> .u003C/
03Cp> Я ожидал, что такая утилита будет использовать что-то похожее на XtraBackup Percona, но вместо того, чтобы выводить в файл дампа, он будет транслировать вывод непосредственно к рану, а затем автоматически включает в себя рабские отношения после завершения подачи.u003C/
03Cp> Это реалистично?u003C/
03Cp> Я заметил вариант потоковой передачи в XtraBackup, но не смог найти примеры за пределами своей способности просто сохранить TAR на другом сервере, что не то, что я искал. Я хочу, чтобы решение, которое могло бы поток прямо в назначение DB без требования работать с файлом сброса вообще. Это особенно удобно при работе с u003Cem>большимиu003C/em> наборами набора данных.u003C/
Решение
03Cp> Что-то близкое к тому, что вы просите, можно сделать с mysqldump
. Вы можете транслировать свой вывод прямо на раб.u003C/
# mysqldump -h master -A --master-data --single-transaction --quick | mysql -h slave
03Cp> mysqldump
добавят CHANGE MASTER TO
к выходу. Однако он не включает MASTER_HOST
, MASTER_USER
и MASTER_PASSWORD
. Он должен быть настроен отдельно.u003C/
# mysql -h slave -e "CHANGE MASTER TO MASTER_HOST='master',
MASTER_USER='repl', MASTER_PASSWORD='replpass'; START SLAVE;"
03Ch3> Дополнительные замечания:u003C/h
- 03Col> N.u0
- 03Cli> Вы можете запустить вышеупомянутую команду на Master или Placve или любой другой хост. Обратите внимание на опция
-h
вmysqldump
иmysql
. См. 03Ca href="http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_host" rel="nofollow">MySQL вариантыu003C/.u003C/l i> N.u0 - 03Cli> Мастер не находится вниз, когда вы берете свалку.u003C/l i> N.u0
- 03Cli> Там не будет никаких проблем идентификаторов бинлога, потому что независимо от того, где вы проходите
mysqldump -h master
, дамп придет от мастера. Соответственно, координаты Binlog указывают на Binlog на мастере.u003C/l i> N.u0 - 03Cli> Настоящие значения по умолчанию приведут к таблице таблицы InnoDB, то есть если не указано
--single-transaction
, что отрицает требование табличного блокировки для постоянного дампа.u003C/l i> N.u0 - 03Cli> Использование
--quick
обеспечит большие таблицы прочитаны одну строку за раз, а не буферизировать весь строк, установленный в памяти, что более способствует этому типу потоковой дамп.u003C/l i> N.u003C/o
Другие советы
03Cp> XtraBackup поддерживает потоковую передачу, см. 03Ca href="https://www.percona.com/doc/percona-xtrabackup/2.3/howtos/recipes_ibkx_stream.html" rel="nofollow">https://www.percona.com/doc/percona-xtraBackup/2.3/howtos/recipes_ibkx_stream.htmlu003C/u003C/
03Cp> Но вам нужно будет изменить один из примеров (например, innobackupex --stream=tar ./ | ssh user@desthost "cat - > /data/backups/backup.tar"
), поэтому он может применить журнал, а затем копировать после потоковой передачи.u003C/