我们遇到了一个问题,因为android应用程序出现了问题,移动应用程序的某些部分开始运行,而部分应用程序则提供给QA。因此,作为暂时的解决办法,我们已经使QA和Live成为DB的相同副本。例如,在这两个数据库中,我们都有用户和学校表,而android应用程序注册表单引用QA用户表,而学校条目表单是指Live表。这就是问题所在,当创建一个用户和学校时,我们需要同步两个数据库,我们需要将相关的学校添加到QA数据库中,学校表和相关的用户添加到实时服务器用户表中。
我希望我能清楚地解释这个问题,所以当一个事务发生时,我正在设法在两个数据库中同步这两个表。
在我们的下一个android应用程序中,这将被修复。到那时,用户的谁有目前的buggy应用程序,将使用不更新,我们需要找到一个方法来修复。
更新:请注意QA和Live位于同一台服务器上。
发布于 2015-01-28 04:52:59
听起来您需要在活动DB和QA实例之间进行某种MySQL复制。
您必须将prod DB配置为主服务器,将QA配置为从服务器。在prod my.cnf中,您将添加一个"server-id":
[mysqld]
log-bin=mysql-bin
server-id=1
要使更改生效,需要重新启动prod。然后,更新QA my.cnf:
[mysqld]
server-id=2
重新启动QA DB。接下来,在QA DB上创建一个用户,用于连接到主数据库,并授予它复制权限。
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
接下来,您需要从命令行连接到prod并运行一些查询。这将允许您通过获取主数据库的状态来启动复制过程,这样,从服务器就有了开始复制的坐标。
mysql> FLUSH TABLES WITH READ LOCK;
将会话保持为打开状态,然后创建一个新会话并运行“显示主状态”:
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
把文件和位置写下来。接下来,释放主人的锁。
mysql> UNLOCK TABLES;
然后,在从db上开始复制:
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导入到QA DB。
https://stackoverflow.com/questions/28184714
复制相似问题