Отказоустойчивая синхронизация MYSQL между двумя серверами с разными именами пользователей

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

Я использую следующее руководство 'http://www.howto-expert.com/how-to-create-a-server-failover-solution/', чтобы создать синхронизацию базы данных, и я пробовал:

mysqldump --host=1.2.3.4 --user=MYDBUSER -pMYDBPASSWORD --add-drop-table --no-create-db --skip-lock-tables MYDBNAME | mysql --user=MYDBUSER -pMYDBPASSWORD MYDBNAME

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

Есть ли способ синхронизировать базы данных на двух разных серверах с разными именами пользователей? Любые справочные ссылки для достижения того, что я ищу? Заранее спасибо!

Обновление: я нашел решение этой проблемы. Запустите приведенную ниже строку в ssh после внесения необходимых изменений.

mysqldump --host=123.345.456 --user=primary_dbusername -pPassword_primary_db --add-drop-table --no-create-db --skip-lock-tables primary_dbname | ssh -i /home/primary_server_username/shell/id_rsa_primary -p 22 [email protected] mysql -h localhost -u secondary_dbusername -pPassword_secondary_db secondary_dbname

Здесь первичная база данных сбрасывает данные, и они импортируются непосредственно во вторичную базу данных. Имена баз данных могут быть разными на обоих серверах. Нам нужно настроить ssh без перефразирования для использования задания cron и указать путь к ключу rsa или dsa в идентификаторе (-i). Надеюсь, это поможет кому-то здесь с подобной проблемой. Добрые пожелания.


person Ganesh Rathinavel    schedule 02.06.2014    source источник


Ответы (1)


Пока вы синхронизируете только базу данных, содержащую ваше приложение, и имя базы данных одинаково на обоих серверах, действительно не должно иметь значения, что ваш пользователь mysql отличается.

Если имя базы данных для вашего приложения отличается на обоих серверах (что, как я предполагаю, может быть, если вы используете хостгатор, этот ответ содержит некоторую полезную информацию: генерация базы данных с другим именем из резервной копии mysqldump)

person walli    schedule 02.06.2014
comment
имя базы данных не может совпадать. в cpanel имя базы данных будет таким: username_dbname. на обоих серверах имена баз данных различаются из-за этого префикса имени пользователя хоста - person Ganesh Rathinavel; 02.06.2014
comment
Я так и думал, ты меня опередил :) - person walli; 02.06.2014
comment
спасибо за вклад :) Я не думаю, что эта ссылка может мне помочь. Восстановление файла mysql не выполняется вручную, поэтому, даже если они не установили имя базы данных в файле дампа sql, оно не будет автоматически обновляться на вторичном сервере. - person Ganesh Rathinavel; 02.06.2014
comment
Я нашел решение: mysqldump --host=123.345.456 --user=primary_dbusername -pPassword_primary_db --add-drop-table --no-create-db --skip-lock-tables primary_dbname | ssh -i /home/primary_server_username/shell/id_rsa_primary -p 22 [email protected] mysql -h localhost -u secondary_dbusername -pPassword_secondary_db secondary_dbname - person Ganesh Rathinavel; 03.06.2014