Mysql replicate-rewrite-db, не работающий

"Команда, не найденная" ошибка, похожа на него, был перезаписан, который является признаком неправильного типа окончаний строки. Выполненный dos2unix на Вашем файле сценария для фиксации этого. Возможно, что это - некоторый другой случайный символ. Отобразите свое использование сценария hexdump или cat -v показать это. Эта проблема часто происходит при использовании редактора Windows на файле Unix.

Вместо этой строки:

ls -Al --time-style=long-iso /home/svn/repository/ | grep '^d' | awk '{print $8}' | while read line

используйте это:

find "$REPOSITORY_DIR" -maxdepth 1 -type d | while read -r line

который не полагается ls который не предназначен для использования в сценариях/каналах. Выполнение его, этот путь также, более вероятно, будет работать в случаях, где имена файлов включают пробелы.

Можно сделать заключение в кавычки путем, у Вас есть оно, но этот пример мог бы быть лучше, так как оно работает, если существуют пробелы в именах файлов:

if [ ! -d "$BACKUP_DIR/$line" ]; then
    mkdir "$BACKUP_DIR/$line"

Лучше использовать $() вместо обратных галочек и cat является ненужным (также упрощенное заключение в кавычки):

REVISION=$(awk '{print $1}' "$REPOSITORY_DIR/$line/db/current" )

И существует больше мест, где можно упростить заключение в кавычки.

4
задан 31 May 2012 в 22:46
2 ответа

I received a hint in a comment but the user has since deleted it.

The trick is to not use replicate-do-db and only use replicate-rewrite-db:

#replicate_do_db='DB1'
replicate-rewrite-db=DB1->DB2

Commenting out the replicate_do_db line in my.cnf fixed it for me.

Thanks to the mystery user who pointed me in the right direction, whoever you are.

7
ответ дан 3 December 2019 в 03:00

Важное примечание: Вы должны добавить имя переписанной базы данных. Добавьте эту строку в свой my.cnf:

replicate-do-db=DB2

Итак, ваш файл конфигурации должен быть, наконец, таким:

server-id=101
report-host=Slave01

replicate_do_db       =  DB2
replicate-rewrite-db  =  DB1->DB2

replicate-ignore-table=DB2.SOME_TABLE_NAME

Я протестировал его, и он работает

0
ответ дан 3 December 2019 в 03:00

Теги

Похожие вопросы