MergeServerDefine.lua 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. --合服
  2. --_G.lua_mongo 提供的接口
  3. --[=[
  4. find()
  5. md5()
  6. id()
  7. next()
  8. client()
  9. remove()
  10. index()
  11. auth()
  12. count()
  13. update()
  14. ]=]--
  15. --备份和恢复
  16. --[=[
  17. 备份
  18. mongodump --db 要备份的数据库名字 --out 备份文件存放目录
  19. 如: mongodump --db ckwy_fy_S350052 --out /cipan1/dumpDB/
  20. 脚本: /server/dumpDB.sh 需要修改脚本中的数据库范围
  21. 将备份文件恢复
  22. mongorestore --db 数据库存放目录 备份文件目录
  23. mongorestore --db=ckwy_fy_S350077 --drop /server/bin3/dumpDB/ckwy_fy_S350077 --增加 --drop参数,会先删除数据库,再恢复
  24. mongorestore --db=ckwy_fy_S3500002 /server/bin3/dumpDB/ckwy_fy_S3500002
  25. 脚本: /server/restoreDB.sh 需要根据dumpDB.sh 修改脚本中的备份数据所在目录, 以及数据库范围
  26. ]=]--
  27. --[=[
  28. --1.使用 newUniqueTag 代替 account
  29. --2. 合并数据逻辑
  30. ]=]--
  31. KEY_CIYUAN_MOZHU = "ciyuanMoZhu" -- 次元魔蛛的key
  32. KEY_MERGE_TIME = "mergeServerTime" -- 合服时间
  33. ---------------------同名-------------
  34. NEW_NAME = "银月的青锋使" -- 玩家同名时的新名字 .. num
  35. MAIL_ID = 7013 -- 同名玩家改名后补偿邮件的ID
  36. MAIL_NUM = 500 -- 邮件补偿古玉数量
  37. -------------------烟花----------------
  38. KEY_FIREWORKBONUS_TIME = "fireWorksBonusTime" -- 烟花加成时间key
  39. FIRE_MAX_TIME = 43200 -- 烟花最大加成时间(12h)
  40. ------------日志----------------------
  41. SUCC_TAG = "succ"
  42. ERR_TAG = "err"
  43. CHANGENAME_TAG = "changeName"
  44. --------------------------------------
  45. -- 渠道ID
  46. CHANNEL_ID_TAP = 1
  47. CHANNEL_ID_SANLI_ANDOIRD = 2
  48. CHANNEL_ID_SANLI_IOS = 3
  49. CHANNEL_ID_SANLI_QQ = 4
  50. CHANNEL_ID_SANLI_H5 = 5
  51. CHANNEL_ID_SANLI_4399 = 6
  52. CHANNEL_ID_SANLI_360 = 7
  53. CHANNEL_ID_SANLI_SHIYOU = 10
  54. -- 数据库名中字符串部分的格式
  55. DB_NAME_STR = "ckwy_fy_S"
  56. -- 渠道对应的数据库名中数字部分的初始值
  57. --!!! 当前项目 ckwy_fy_S350002 是1服的数据库, ckwy_fy_S350003 是2服的数据库, ckwy_fy_S350004 是3服的数据库, 以此类推...
  58. CHANNEL_2_DBNUMBER = {
  59. -- TAP
  60. [CHANNEL_ID_TAP] = 350001,
  61. --三狸 Andorid/IOS
  62. [CHANNEL_ID_SANLI_ANDOIRD] = 350001,
  63. [CHANNEL_ID_SANLI_IOS] = 350001,
  64. -- 三狸QQ,360
  65. [CHANNEL_ID_SANLI_QQ] = 650001,
  66. [CHANNEL_ID_SANLI_360] = 650001,
  67. -- 三狸H5,4399
  68. [CHANNEL_ID_SANLI_H5] = 550001,
  69. [CHANNEL_ID_SANLI_4399] = 550001,
  70. -- 三狸视游
  71. [CHANNEL_ID_SANLI_SHIYOU] = 750001,
  72. }
  73. -- 要进行合并的数据库所属渠道ID, 用于检测合错数据库的情况, 与下面的 MERGE_DB_TB 的值一一对应
  74. -- 格式: 渠道Id, 区服Id, 标识(0-宿主服, 1-被合服, 2-被合服, 且被合并到另外一个跨服/渠道)
  75. MERGE_CHECK_TB = {
  76. -- 木子/Tap
  77. [CHANNEL_ID_TAP] = {
  78. { {CHANNEL_ID_TAP, 101, 0}, {CHANNEL_ID_TAP, 111, 1} },
  79. { {CHANNEL_ID_TAP, 103, 0}, {CHANNEL_ID_TAP, 113, 1} },
  80. { {CHANNEL_ID_TAP, 105, 0}, {CHANNEL_ID_TAP, 115, 1} },
  81. { {CHANNEL_ID_TAP, 107, 0}, {CHANNEL_ID_TAP, 117, 1} },
  82. { {CHANNEL_ID_TAP, 109, 0}, {CHANNEL_ID_TAP, 119, 1} },
  83. { {CHANNEL_ID_TAP, 121, 0}, {CHANNEL_ID_TAP, 131, 1} },
  84. { {CHANNEL_ID_TAP, 123, 0}, {CHANNEL_ID_TAP, 133, 1} },
  85. { {CHANNEL_ID_TAP, 125, 0}, {CHANNEL_ID_TAP, 135, 1} },
  86. { {CHANNEL_ID_TAP, 127, 0}, {CHANNEL_ID_TAP, 137, 1} },
  87. { {CHANNEL_ID_TAP, 129, 0}, {CHANNEL_ID_TAP, 139, 1} },
  88. { {CHANNEL_ID_TAP, 141, 0}, {CHANNEL_ID_TAP, 151, 1} },
  89. { {CHANNEL_ID_TAP, 143, 0}, {CHANNEL_ID_TAP, 153, 1} },
  90. { {CHANNEL_ID_TAP, 145, 0}, {CHANNEL_ID_TAP, 155, 1} },
  91. { {CHANNEL_ID_TAP, 147, 0}, {CHANNEL_ID_TAP, 157, 1} },
  92. { {CHANNEL_ID_TAP, 149, 0}, {CHANNEL_ID_TAP, 159, 1} },
  93. { {CHANNEL_ID_TAP, 201, 0}, {CHANNEL_ID_TAP, 202, 1} },
  94. { {CHANNEL_ID_TAP, 203, 0}, {CHANNEL_ID_TAP, 204, 1} },
  95. { {CHANNEL_ID_TAP, 205, 0}, {CHANNEL_ID_TAP, 206, 1} },
  96. { {CHANNEL_ID_TAP, 207, 0}, {CHANNEL_ID_TAP, 208, 1} },
  97. { {CHANNEL_ID_TAP, 209, 0}, {CHANNEL_ID_TAP, 210, 1} },
  98. },
  99. -- 三狸功夫
  100. [CHANNEL_ID_SANLI_ANDOIRD] = {
  101. { {CHANNEL_ID_SANLI_ANDOIRD, 121, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 123, 1} },
  102. { {CHANNEL_ID_SANLI_ANDOIRD, 125, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 127, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 129, 1} },
  103. { {CHANNEL_ID_SANLI_ANDOIRD, 131, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 133, 1} },
  104. { {CHANNEL_ID_SANLI_ANDOIRD, 135, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 137, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 139, 1} },
  105. { {CHANNEL_ID_SANLI_ANDOIRD, 141, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 143, 1} },
  106. { {CHANNEL_ID_SANLI_ANDOIRD, 145, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 147, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 149, 1} },
  107. { {CHANNEL_ID_SANLI_ANDOIRD, 191, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 192, 1} },
  108. { {CHANNEL_ID_SANLI_ANDOIRD, 193, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 194, 1} },
  109. { {CHANNEL_ID_SANLI_ANDOIRD, 195, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 196, 1} },
  110. { {CHANNEL_ID_SANLI_ANDOIRD, 197, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 198, 1} },
  111. { {CHANNEL_ID_SANLI_ANDOIRD, 199, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 200, 1} },
  112. },
  113. -- 三狸H5
  114. -- [CHANNEL_ID_SANLI_H5] = {
  115. -- { {CHANNEL_ID_SANLI_ANDOIRD, 41, 0}, {CHANNEL_ID_SANLI_H5, 31, 2}, {CHANNEL_ID_SANLI_H5, 32, 2} },
  116. -- { {CHANNEL_ID_SANLI_ANDOIRD, 43, 0}, {CHANNEL_ID_SANLI_H5, 33, 2}, {CHANNEL_ID_SANLI_H5, 34, 2} },
  117. -- { {CHANNEL_ID_SANLI_ANDOIRD, 45, 0}, {CHANNEL_ID_SANLI_H5, 35, 2}, {CHANNEL_ID_SANLI_H5, 36, 2} },
  118. -- { {CHANNEL_ID_SANLI_ANDOIRD, 47, 0}, {CHANNEL_ID_SANLI_H5, 37, 2}, {CHANNEL_ID_SANLI_H5, 38, 2} },
  119. -- { {CHANNEL_ID_SANLI_ANDOIRD, 49, 0}, {CHANNEL_ID_SANLI_H5, 39, 2}, {CHANNEL_ID_SANLI_H5, 40, 2} },
  120. -- },
  121. -- [CHANNEL_ID_SANLI_QQ] = {
  122. -- { {CHANNEL_ID_SANLI_QQ, 151, 0}, {CHANNEL_ID_SANLI_QQ, 152, 1}, {CHANNEL_ID_SANLI_QQ, 153, 1}, {CHANNEL_ID_SANLI_QQ, 154, 1}, {CHANNEL_ID_SANLI_QQ, 155, 1}},
  123. -- { {CHANNEL_ID_SANLI_QQ, 156, 0}, {CHANNEL_ID_SANLI_QQ, 157, 1}, {CHANNEL_ID_SANLI_QQ, 158, 1}, {CHANNEL_ID_SANLI_QQ, 159, 1}, {CHANNEL_ID_SANLI_QQ, 160, 1}},
  124. -- { {CHANNEL_ID_SANLI_QQ, 161, 0}, {CHANNEL_ID_SANLI_QQ, 162, 1}, {CHANNEL_ID_SANLI_QQ, 163, 1}, {CHANNEL_ID_SANLI_QQ, 164, 1}, {CHANNEL_ID_SANLI_QQ, 165, 1}},
  125. -- { {CHANNEL_ID_SANLI_QQ, 166, 0}, {CHANNEL_ID_SANLI_QQ, 167, 1}, {CHANNEL_ID_SANLI_QQ, 168, 1}, {CHANNEL_ID_SANLI_QQ, 169, 1}, {CHANNEL_ID_SANLI_QQ, 170, 1}},
  126. -- },
  127. -- 三狸视游
  128. [CHANNEL_ID_SANLI_SHIYOU] = {
  129. { {CHANNEL_ID_SANLI_SHIYOU, 1, 0}, {CHANNEL_ID_SANLI_SHIYOU, 3, 1} },
  130. { {CHANNEL_ID_SANLI_SHIYOU, 5, 0}, {CHANNEL_ID_SANLI_SHIYOU, 7, 1}, {CHANNEL_ID_SANLI_SHIYOU, 9, 1} },
  131. { {CHANNEL_ID_SANLI_SHIYOU, 11, 0}, {CHANNEL_ID_SANLI_SHIYOU, 12, 1} },
  132. { {CHANNEL_ID_SANLI_SHIYOU, 13, 0}, {CHANNEL_ID_SANLI_SHIYOU, 14, 1} },
  133. { {CHANNEL_ID_SANLI_SHIYOU, 15, 0}, {CHANNEL_ID_SANLI_SHIYOU, 16, 1} },
  134. { {CHANNEL_ID_SANLI_SHIYOU, 17, 0}, {CHANNEL_ID_SANLI_SHIYOU, 18, 1} },
  135. { {CHANNEL_ID_SANLI_SHIYOU, 19, 0}, {CHANNEL_ID_SANLI_SHIYOU, 20, 1} },
  136. { {CHANNEL_ID_SANLI_SHIYOU, 81, 0}, {CHANNEL_ID_SANLI_SHIYOU, 82, 1} },
  137. { {CHANNEL_ID_SANLI_SHIYOU, 83, 0}, {CHANNEL_ID_SANLI_SHIYOU, 84, 1} },
  138. { {CHANNEL_ID_SANLI_SHIYOU, 85, 0}, {CHANNEL_ID_SANLI_SHIYOU, 86, 1} },
  139. { {CHANNEL_ID_SANLI_SHIYOU, 87, 0}, {CHANNEL_ID_SANLI_SHIYOU, 88, 1} },
  140. { {CHANNEL_ID_SANLI_SHIYOU, 89, 0}, {CHANNEL_ID_SANLI_SHIYOU, 90, 1} },
  141. { {CHANNEL_ID_SANLI_SHIYOU, 91, 0}, {CHANNEL_ID_SANLI_SHIYOU, 92, 1} },
  142. { {CHANNEL_ID_SANLI_SHIYOU, 93, 0}, {CHANNEL_ID_SANLI_SHIYOU, 94, 1} },
  143. { {CHANNEL_ID_SANLI_SHIYOU, 95, 0}, {CHANNEL_ID_SANLI_SHIYOU, 96, 1} },
  144. { {CHANNEL_ID_SANLI_SHIYOU, 97, 0}, {CHANNEL_ID_SANLI_SHIYOU, 98, 1} },
  145. { {CHANNEL_ID_SANLI_SHIYOU, 99, 0}, {CHANNEL_ID_SANLI_SHIYOU, 100, 1} },
  146. },
  147. }
  148. --要进行数据合并的数据库列表, 每个value中第一个为目标数据库,其他为源数据库
  149. --!!! 当前项目 ckwy_fy_S350002 是1服的数据库, ckwy_fy_S350003 是2服的数据库, ckwy_fy_S350004 是3服的数据库, 以此类推...
  150. MERGE_DB_TB = {
  151. -- 木子
  152. {"ckwy_fy_S350022", "ckwy_fy_S350023"},
  153. {"ckwy_fy_S350024", "ckwy_fy_S350025"},
  154. {"ckwy_fy_S350026", "ckwy_fy_S350027"},
  155. {"ckwy_fy_S350028", "ckwy_fy_S350029"},
  156. {"ckwy_fy_S350030", "ckwy_fy_S350031"},
  157. -- 三狸安卓/H5
  158. {"ckwy_fy_S350042", "ckwy_fy_S350043", "ckwy_fy_S550032", "ckwy_fy_S550033"},
  159. {"ckwy_fy_S350044", "ckwy_fy_S350045", "ckwy_fy_S550034", "ckwy_fy_S550035"},
  160. {"ckwy_fy_S350046", "ckwy_fy_S350047", "ckwy_fy_S550036", "ckwy_fy_S550037"},
  161. {"ckwy_fy_S350048", "ckwy_fy_S350049", "ckwy_fy_S550038", "ckwy_fy_S550039"},
  162. {"ckwy_fy_S350050", "ckwy_fy_S350051", "ckwy_fy_S550040", "ckwy_fy_S550041"},
  163. -- 三狸QQ
  164. {"ckwy_fy_S650022", "ckwy_fy_S650023"},
  165. {"ckwy_fy_S650024", "ckwy_fy_S650025"},
  166. {"ckwy_fy_S650026", "ckwy_fy_S650027"},
  167. {"ckwy_fy_S650028", "ckwy_fy_S650029"},
  168. {"ckwy_fy_S650030", "ckwy_fy_S650031"},
  169. }
  170. --所有要处理的集合
  171. COLLECTIONS = {
  172. ".char", -- 角色表, 可以直接插入
  173. ".mail" , -- 邮件,可以直接插入
  174. ".common", -- 通用数据(开服时间)
  175. ".friend", -- 好友数据库表, 可以直接插入
  176. ".boss_data", -- boss记录表, 可以直接插入
  177. ".union", -- 工会数据表, 可以直接插入
  178. ".jjc", -- 单人竞技场, 可以直接插入
  179. ".combat_video", -- 战斗录像[本地记录 个人记录 单人竞技场 通天塔 王者争霸 战役记录],可以直接插入
  180. ".drill_data", -- 圣树试炼/过关斩将,可以直接插入
  181. ".union_war", -- 公会战,可以直接插入
  182. ".union_war_record", -- 公会战记录, 可以直接插入
  183. ".the_stars", -- 星空争霸, 可以直接插入
  184. ".abs_billboard", -- 绝对时间排行榜记录, 可以直接插入
  185. ".middle_act_group", -- 跨服活动分组记录, 暂时没使用,不管
  186. ".battle_shark", -- 战役通关战报
  187. ".tower", -- 全服通天塔 信息, 可以直接插入
  188. ".hero_pingfen", -- 英雄评分信息用于排名, 可以直接插入
  189. ".jjcGodWar", -- 众神之战 ,可以直接插入
  190. ".jjcGodWar_record", -- 众神之战记录 ,可以直接插入
  191. ".chat_record", -- 好友聊天记录 ,可以直接插入
  192. ".jjcLadder", -- 天梯争霸 ,可以直接插入
  193. ".jjcLadder_record", -- 天梯争霸记录 ,可以直接插入
  194. ".yjTreasure", -- 遗迹探宝 , 可以直接插入
  195. ".yjTreasure_rank", -- 遗迹探宝排行
  196. ".yjTreasure_role", -- 遗迹探宝角色信息 , 可以直接插入
  197. ".valley", -- 荣耀峡谷/龙族战场 ,可以直接插入
  198. ".valley_record", -- 荣耀峡谷/龙族战场记录, 可以直接插入
  199. ".war_report", -- 战报[跨服记录 冠军联赛 王者争霸 天梯 切磋 系列排名存储记录], 可以直接插入
  200. ".openServer_billboard", -- 开服排行类活动,可以直接插入
  201. ".lost_temple", -- 神庙
  202. ".common_rank", -- 通用排行榜,可以直接插入
  203. }
  204. --源数据库中不需要插入目标数据库的集合列表
  205. --[=[
  206. middle_act_group 暂时没用到这个集合,所以也只用目标数据库的集合
  207. the_stars 战神殿, 只保留宿主服的记录
  208. battle_shark 主线闯关录像, 只用宿主服的
  209. ]=]--
  210. NO_INSERT_COLLECTIONS = {
  211. --[".common"] = 1,
  212. [".middle_act_group"] = 1,
  213. [".the_stars"] = 1,
  214. [".battle_shark"] = 1,
  215. [".jjcGodWar"] = 1,
  216. --[".jjcGodWar_record"] = 1,
  217. --[".tower"] = 1,
  218. }
  219. --用到char 集合中的 _id 字段的集合, 如果 char 集合中的 _id 有修改, 则这些集合中的 _id 也需要修改
  220. NEED_CHANGE_COLLECTIONS = {
  221. [".friend"] = '1',
  222. [".mail"] = '1',
  223. [".union"] = '1',
  224. [".the_stars"] = '1',
  225. [".jjc"] = '1',
  226. [".combat_video"] = '1',
  227. }