README
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1.                 ===========================================
  2.                          MySQL Replication Servers
  3.                      Lars Thalmann and Johan Andersson
  4.                               2003 MySQL AB
  5.                 ===========================================
  6.  
  7. -------------------------------------------------------------------------------
  8.                 PRIMARY SYSTEM               STANDBY SYSTEM 
  9.               REPLICATION SERVER           REPLICATION SERVER
  10.              (PS or SOURCE SYSTEM)     (SS or DESTINATION SYSTEM)
  11.              +------------------+     +-------------------------+
  12.              |     RepMain      |     |    RepMain [Requests]   |
  13.              |                  |     +-------------------------+
  14.              |                  |     |   Requestor [Executes]  |
  15.              +------------------+     +-------------------------+
  16.       PS --- | ExtNDB | TransPS | --- |   TransSS  |  AppNDB    | --- SS
  17.              +------------------+     +-------------------------+
  18.                 (GCIContainer)               (GCIContainer)
  19.                                                (RepState)
  20.                       Figure 1: Replication Server Threads 
  21. Component List
  22. --------------
  23. RepMain
  24.   Main thread that runs command-line interpreter [Requests]
  25. Requestor
  26.   Thread that runs RepState::execute [Executes]
  27. ExtNDB
  28.   Extracts transaction epochs from NDB Cluster
  29. TransPS, TransSS
  30.   Transfers information (control and epoch buffers) between 
  31.   Replication Servers.
  32. AppNDB
  33.   Applies transaction epochs to NDB Cluster
  34. -------------------------------------------------------------------------------
  35.                RepState Control
  36.                     Object
  37.              +------------------+    
  38.              |     RepState     |    
  39.              |    [Requests]    |    
  40.              |    [Executes]    |    
  41.              +------------------+    
  42.              |  RepStateRequest | --- ExtSender
  43.              +------------------+ 
  44.                       Figure 2: RepState Object
  45. The RepState object is shared by all components.
  46. -------------------------------------------------------------------------------
  47. Dependent Directories
  48. ---------------------
  49. rep/adapters    Appliers and Extractors
  50.   All code dependent on the database system
  51. rep/transfer
  52.   Depends on NDB transporters
  53. rep/state
  54.   Shared resources for all components
  55. Independent Directories
  56. -----------------------
  57. rep/storage     Storage of epochs 
  58.   Should not depend on any transporters/NDB specific
  59. rep/repstate
  60.   Should only have a reference to an ExtSender for the external PS REP node
  61. -------------------------------------------------------------------------------
  62. Replication Teminology
  63. ----------------------
  64. GLOBAL CHECKPOINT <global checkpoint id - gci>
  65. A global checkpoint is a point in time when all database server
  66. are synchronized.
  67. NODE
  68. A database server with information.
  69. NODE GROUP <node group id>
  70. A set of database servers, all storing the same information.
  71. SUBSCRIPTION <subscription id>.
  72. A "subscription" is a collection of services that a source system 
  73. provides.  The main to services belonging to a subscription are 
  74. "log" and "scan".  Log provides the replication servers with 
  75. log entries (epochs) and scan provides the replication servers
  76. with scanned data (also stored in epochs).
  77. EPOCH <subscription id, gci>
  78. An "epoch" is a log of all database changes between two time points.
  79. (An epoch can have redundant log entries.)  An epoch is named by the
  80. number of the time slice between the two time points.
  81. EPOCH BUFFER <subscription id, gci, node group id>
  82. An "epoch buffer" is a part of the log belonging to an epoch.  An
  83. epoch buffer does not contain any redundancy.  
  84. Two epoch buffers with the same subscription id and gci can be
  85. "complements" or "duplicates" to each other.  If they are complements,
  86. they store different information, if they are duplicates then they
  87. store equivalent information (the information need not be identical,
  88. but it is equivalent for the purpose of restoring the original
  89. information).  If they are duplicates then they have the same name,
  90. i.e. same subscription id, gci, and node group id.
  91. CHANNEL <subscription id>
  92. A "channel" is a collection of epoch buffers belonging to
  93. a specific subscription.  (The channel can exist before it is 
  94. assigned to a subscription.)
  95. SUBSCRIPTION CONSISTENT
  96. A database is "subscription consistent" or "consistent with respect
  97. to a subscription" if ...
  98. Architectural Terminology
  99. -------------------------
  100. ADAPTER
  101. An "adapter" is either an applier or an extractor.
  102. APPLIER 
  103. An "applier" is a a collection of threads in the replication server
  104. that applies epochs to a destination database system.
  105. EXTRACTOR
  106. An "extractor" is a collection of theads in the replication server
  107. that receives epochs from a source database system.
  108. TRANSFER COMPONENT 
  109. A "transfer component" is a thread in the replication server that is
  110. responsible for the connection with another replication server.
  111. REQUESTOR 
  112. A thread in the replication server that controls replication.