У нас проблема из-за проблемы с приложением для Android, которое является частью мобильного приложения, а часть — QA. так что в качестве временного решения мы сделали QA и Live одинаковыми копиями DB. так в обеих базах говорят, что у нас есть USER & Таблица SCHOOL, например, и формы регистрации приложений Android ссылаются на таблицу пользователей QA, а форма входа в школу ссылается на таблицу Live School. так что это проблема из-за ошибки, и нам нужно синхронизировать обе базы данных при создании пользователя и школы, нам нужно добавить связанную школу в базу данных QA, таблицу школ и связанного пользователя в таблицу пользователей живого сервера.
Я надеюсь, что я объяснил проблему ясно, поэтому я пытаюсь найти способ синхронизировать эти две таблицы в обеих базах данных, когда происходит транзакция.
В нашем следующем приложении для Android это будет исправлено. до тех пор, пока пользователю, имеющему текущее приложение с ошибками и использующему без обновления, нам нужно найти способ исправить.
ОБНОВИТЬ:
Обратите внимание, что QA и Live Database находятся на одном сервере.
Похоже, вам нужна какая-то репликация MySQL между вашей действующей БД и вашим экземпляром QA.
Вы должны будете сконфигурировать свою рабочую базу данных как ведущую, а QA — как ведомую. В вашем prod my.cnf вы добавите «идентификатор сервера»:
[mysqld]
log-bin=mysql-bin
server-id=1
Чтобы изменения вступили в силу, вам необходимо перезапустить prod DB. Затем обновите QA my.cnf:
[mysqld]
server-id=2
Перезапустите БД QA. Затем создайте пользователя в базе данных QA для подключения к главной базе данных и предоставьте ему привилегию репликации.
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
Далее вам нужно подключиться к prod DB из командной строки и выполнить несколько запросов. Это позволит вам запустить процесс репликации, получив статус основной базы данных, чтобы у ведомого устройства были координаты, чтобы начать свою репликацию.
mysql> FLUSH TABLES WITH READ LOCK;
Оставьте сеанс открытым, затем создайте новый сеанс и запустите SHOW MASTER STATUS:
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
Запишите файл и положение. Далее снимите блокировку на мастере.
mysql> UNLOCK TABLES;
Затем на ведомой базе данных начните репликацию:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
Прежде чем делать все это, убедитесь, что вы создали резервную копию всех своих данных в обеих базах данных, и, если необходимо, импортируйте дамп MySQL из Prod DB в QA DB.
Других решений пока нет …