星形拓扑中的MySQL

Joh*_*ica 9 mysql replication configuration topology master

我有一个中央数据库,包含MySQL 5.1-lastest-stable中的所有数据.
我想在master-master关系中连接多个客户端.

如何在中间设置具有多个客户端数据库的1个中央服务器的星型拓扑,以便一个客户端中的更改首先传播到中央服务器并从那里传播到所有其他客户端数据库?

数据库信息

我正在为所有表使用inno-db,我启用了二进制日志.
除此之外,我已经学会了如何在数据库之间进行master-master.
所有表都有主键primary integer autoincrement.自动增量偏移和开始调整到不同的客户端数据库时,永远不会有主键冲突.

为什么我要这个

我有连接到笔记本电脑上的本地MySQL数据库的客户端软件(不是网站或php),这需要同步到中央数据库,以便所有在他们的笔记本电脑上使用该程序的人看到其他人所做的所有其他更改.
我不想直接连接到中央数据库,因为如果笔记本电脑和中央数据库之间的互联网连接断开,我的应用程序就会死机.
在此设置中,应用程序继续,在重新建立与中央数据库的连接之前,笔记本电脑不会从其他人那里获得更新.

Rol*_*DBA 10

鉴于要求对浮动从站使用MySQL循环复制作为同步DB的方法,这里有一个解决方案:

1 DB Master
4 DB Slaves


DB MASTER的设置

  1. 安装MySQL 5.1.x.
  2. 确保/etc/my.cnf
          server-id = 1
          log-bin = mysql-bin
          expire-logs-days = 14
          default-storgae-engine = InnoDB
  3. 启动MySQL
  4. 重置大师; (从DB Master清除二进制日志)
  5. 将数据加载到Master中
  6. GRANT SELECT,REPLICATION SLAVE ON .复制器@'%'IDENTIFIED BY'repl-password';

DB SLAVES的设置

  1. 安装MySQL 5.1.x.
  2. 确保/etc/my.cnf
          server-id =(唯一服务器ID)
          log-bin = mysql-bin
          default-storage-engine = InnoDB
  3. 启动MySQL
  4. CHANGE MASTER TO MASTER_HOST ='DB Master的IP地址',MASTER_PORT = 3306,MASTER_USER ='replicator',MASTER_PASSWORD ='repl-password',MASTER_LOG_FILE ='mysql-bin.000001',MASTER_LOG_POS = 106;
  5. 开始离开; (让复制赶上来,查看SHOW SLAVE STATUS\G)
  6. 停止奴役;
  7. CHANGE MASTER TO MASTER_HOST ='DB Distribution Master的IP地址',MASTER_PORT = 3306,MASTER_USER ='replicator',MASTER_PASSWORD ='repl-password',MASTER_LOG_FILE ='mysql-bin.000001',MASTER_LOG_POS = 106;
  8. 开始离开;

进口流程

一旦准备好每个DB Slave,现在DB Master和DB Slave之间的数据迁移可以如下进行(DB Master用于DB Master,DS用于DB Slave):

  1. 在DS上,运行SHOW MASTER STATUS;
  2. 在DS上,记录二进制日志文件名和位置
  3. 在DM上,运行CHANGE MASTER TO MASTER_HOST ='DS的IP地址',MASTER_PORT = 3306,MASTER_USER ='replicator',MASTER_PASSWORD ='repl-password',MASTER_LOG_FILE ='LogFile From Step2',MASTER_LOG_POS =(LogPos From Step2);
  4. 在DM上,运行START SLAVE; (让复制赶上; DS引入DM的端口更改)
  5. 在DM上,停止SLAVE;
  6. 在DS上,记录/var/lib/mysql/master.info的第2行(日志文件)
  7. 在DS上,记录/var/lib/mysql/master.info的第3行(日志位置)
  8. 在DS上,运行CHANGE MASTER TO MASTER_HOST ='DM的IP地址',MASTER_PORT = 3306,MASTER_USER ='replicator',MASTER_PASSWORD ='repl-password',MASTER_LOG_FILE ='LogFile From Step6',MASTER_LOG_POS =(LogPos From Step7);
  9. 在DS上,运行START SLAVE; (让复制赶上; DM引入DS的端口更改)
  10. 在DS上,STOP SLAVE;

警告

进口过程至关重要!!! 您必须每次都正确记录确切的日志文件和日志位置.

试试看 !!!

让我知道事情的后续 !!!