--合服 --_G.lua_mongo 提供的接口 --[=[ find() md5() id() next() client() remove() index() auth() count() update() ]=]-- --备份和恢复 --[=[ 备份 mongodump --db 要备份的数据库名字 --out 备份文件存放目录 如: mongodump --db ckwy_fy_S350052 --out /cipan1/dumpDB/ 脚本: /server/dumpDB.sh 需要修改脚本中的数据库范围 将备份文件恢复 mongorestore --db 数据库存放目录 备份文件目录 mongorestore --db=ckwy_fy_S350077 --drop /server/bin3/dumpDB/ckwy_fy_S350077 --增加 --drop参数,会先删除数据库,再恢复 mongorestore --db=ckwy_fy_S3500002 /server/bin3/dumpDB/ckwy_fy_S3500002 脚本: /server/restoreDB.sh 需要根据dumpDB.sh 修改脚本中的备份数据所在目录, 以及数据库范围 ]=]-- --[=[ --1.使用 newUniqueTag 代替 account --2. 合并数据逻辑 ]=]-- KEY_CIYUAN_MOZHU = "ciyuanMoZhu" -- 次元魔蛛的key KEY_MERGE_TIME = "mergeServerTime" -- 合服时间 ---------------------同名------------- NEW_NAME = "银月的青锋使" -- 玩家同名时的新名字 .. num MAIL_ID = 7013 -- 同名玩家改名后补偿邮件的ID MAIL_NUM = 500 -- 邮件补偿古玉数量 -------------------烟花---------------- KEY_FIREWORKBONUS_TIME = "fireWorksBonusTime" -- 烟花加成时间key FIRE_MAX_TIME = 43200 -- 烟花最大加成时间(12h) ------------日志---------------------- SUCC_TAG = "succ" ERR_TAG = "err" CHANGENAME_TAG = "changeName" -------------------------------------- -- 渠道ID CHANNEL_ID_TAP = 1 CHANNEL_ID_SANLI_ANDOIRD = 2 CHANNEL_ID_SANLI_IOS = 3 CHANNEL_ID_SANLI_QQ = 4 CHANNEL_ID_SANLI_H5 = 5 CHANNEL_ID_SANLI_4399 = 6 CHANNEL_ID_SANLI_360 = 7 CHANNEL_ID_SANLI_SHIYOU = 10 CHANNEL_ID_TAP_WX = 11 CHANNEL_ID_SANLI_MINIGAME = 17 -- 数据库名中字符串部分的格式 DB_NAME_STR = "ckwy_fy_S" -- 渠道对应的数据库名中数字部分的初始值 --!!! 当前项目 ckwy_fy_S350002 是1服的数据库, ckwy_fy_S350003 是2服的数据库, ckwy_fy_S350004 是3服的数据库, 以此类推... CHANNEL_2_DBNUMBER = { -- TAP [CHANNEL_ID_TAP] = 350001, --三狸 Andorid/IOS [CHANNEL_ID_SANLI_ANDOIRD] = 350001, [CHANNEL_ID_SANLI_IOS] = 350001, -- 三狸QQ,360 [CHANNEL_ID_SANLI_QQ] = 650001, [CHANNEL_ID_SANLI_360] = 650001, -- 三狸H5,4399 [CHANNEL_ID_SANLI_H5] = 550001, [CHANNEL_ID_SANLI_4399] = 550001, -- 三狸视游 [CHANNEL_ID_SANLI_SHIYOU] = 750001, -- 微信/抖音小游戏 [CHANNEL_ID_TAP_WX] = 1150001, -- 三狸美团/淘宝小游戏 [CHANNEL_ID_SANLI_MINIGAME] = 1750001, } -- 要进行合并的数据库所属渠道ID, 用于检测合错数据库的情况, 与下面的 MERGE_DB_TB 的值一一对应 -- 格式: 渠道Id, 区服Id, 标识(0-宿主服, 1-被合服, 2-被合服, 且被合并到另外一个跨服/渠道) MERGE_CHECK_TB = { -- 木子/Tap [CHANNEL_ID_TAP] = { { {CHANNEL_ID_TAP, 311, 0}, {CHANNEL_ID_TAP, 312, 1} }, { {CHANNEL_ID_TAP, 313, 0}, {CHANNEL_ID_TAP, 314, 1} }, { {CHANNEL_ID_TAP, 315, 0}, {CHANNEL_ID_TAP, 316, 1} }, { {CHANNEL_ID_TAP, 317, 0}, {CHANNEL_ID_TAP, 318, 1} }, { {CHANNEL_ID_TAP, 319, 0}, {CHANNEL_ID_TAP, 320, 1} }, { {CHANNEL_ID_TAP, 321, 0}, {CHANNEL_ID_TAP, 322, 1} }, { {CHANNEL_ID_TAP, 323, 0}, {CHANNEL_ID_TAP, 324, 1} }, { {CHANNEL_ID_TAP, 325, 0}, {CHANNEL_ID_TAP, 326, 1} }, { {CHANNEL_ID_TAP, 327, 0}, {CHANNEL_ID_TAP, 328, 1} }, { {CHANNEL_ID_TAP, 329, 0}, {CHANNEL_ID_TAP, 330, 1} }, }, -- 三狸功夫 [CHANNEL_ID_SANLI_ANDOIRD] = { { {CHANNEL_ID_SANLI_ANDOIRD, 321, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 322, 1} }, { {CHANNEL_ID_SANLI_ANDOIRD, 323, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 324, 1} }, { {CHANNEL_ID_SANLI_ANDOIRD, 325, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 326, 1} }, { {CHANNEL_ID_SANLI_ANDOIRD, 327, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 328, 1} }, { {CHANNEL_ID_SANLI_ANDOIRD, 329, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 330, 1} }, }, -- 三狸H5 -- [CHANNEL_ID_SANLI_H5] = { -- { {CHANNEL_ID_SANLI_ANDOIRD, 41, 0}, {CHANNEL_ID_SANLI_H5, 31, 2}, {CHANNEL_ID_SANLI_H5, 32, 2} }, -- { {CHANNEL_ID_SANLI_ANDOIRD, 43, 0}, {CHANNEL_ID_SANLI_H5, 33, 2}, {CHANNEL_ID_SANLI_H5, 34, 2} }, -- { {CHANNEL_ID_SANLI_ANDOIRD, 45, 0}, {CHANNEL_ID_SANLI_H5, 35, 2}, {CHANNEL_ID_SANLI_H5, 36, 2} }, -- { {CHANNEL_ID_SANLI_ANDOIRD, 47, 0}, {CHANNEL_ID_SANLI_H5, 37, 2}, {CHANNEL_ID_SANLI_H5, 38, 2} }, -- { {CHANNEL_ID_SANLI_ANDOIRD, 49, 0}, {CHANNEL_ID_SANLI_H5, 39, 2}, {CHANNEL_ID_SANLI_H5, 40, 2} }, -- }, -- 三狸QQ -- [CHANNEL_ID_SANLI_QQ] = { -- { {CHANNEL_ID_SANLI_SHIYOU, 121, 0}, {CHANNEL_ID_SANLI_QQ, 191, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 122, 0}, {CHANNEL_ID_SANLI_QQ, 192, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 123, 0}, {CHANNEL_ID_SANLI_QQ, 193, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 124, 0}, {CHANNEL_ID_SANLI_QQ, 194, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 125, 0}, {CHANNEL_ID_SANLI_QQ, 195, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 126, 0}, {CHANNEL_ID_SANLI_QQ, 196, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 127, 0}, {CHANNEL_ID_SANLI_QQ, 197, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 128, 0}, {CHANNEL_ID_SANLI_QQ, 198, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 129, 0}, {CHANNEL_ID_SANLI_QQ, 199, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 130, 0}, {CHANNEL_ID_SANLI_QQ, 200, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 131, 0}, {CHANNEL_ID_SANLI_QQ, 201, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 132, 0}, {CHANNEL_ID_SANLI_QQ, 202, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 133, 0}, {CHANNEL_ID_SANLI_QQ, 203, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 134, 0}, {CHANNEL_ID_SANLI_QQ, 204, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 135, 0}, {CHANNEL_ID_SANLI_QQ, 205, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 136, 0}, {CHANNEL_ID_SANLI_QQ, 206, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 137, 0}, {CHANNEL_ID_SANLI_QQ, 207, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 138, 0}, {CHANNEL_ID_SANLI_QQ, 208, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 139, 0}, {CHANNEL_ID_SANLI_QQ, 209, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 140, 0}, {CHANNEL_ID_SANLI_QQ, 210, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 141, 0}, {CHANNEL_ID_SANLI_QQ, 211, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 142, 0}, {CHANNEL_ID_SANLI_QQ, 212, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 143, 0}, {CHANNEL_ID_SANLI_QQ, 213, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 144, 0}, {CHANNEL_ID_SANLI_QQ, 214, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 145, 0}, {CHANNEL_ID_SANLI_QQ, 215, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 146, 0}, {CHANNEL_ID_SANLI_QQ, 216, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 147, 0}, {CHANNEL_ID_SANLI_QQ, 217, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 148, 0}, {CHANNEL_ID_SANLI_QQ, 218, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 149, 0}, {CHANNEL_ID_SANLI_QQ, 219, 2} }, -- { {CHANNEL_ID_SANLI_SHIYOU, 150, 0}, {CHANNEL_ID_SANLI_QQ, 220, 2} }, -- }, -- 三狸视游 [CHANNEL_ID_SANLI_SHIYOU] = { { {CHANNEL_ID_SANLI_SHIYOU, 201, 0}, {CHANNEL_ID_SANLI_SHIYOU, 202, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 203, 0}, {CHANNEL_ID_SANLI_SHIYOU, 204, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 205, 0}, {CHANNEL_ID_SANLI_SHIYOU, 206, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 207, 0}, {CHANNEL_ID_SANLI_SHIYOU, 208, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 209, 0}, {CHANNEL_ID_SANLI_SHIYOU, 210, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 211, 0}, {CHANNEL_ID_SANLI_SHIYOU, 212, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 213, 0}, {CHANNEL_ID_SANLI_SHIYOU, 214, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 215, 0}, {CHANNEL_ID_SANLI_SHIYOU, 216, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 217, 0}, {CHANNEL_ID_SANLI_SHIYOU, 218, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 219, 0}, {CHANNEL_ID_SANLI_SHIYOU, 220, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 221, 0}, {CHANNEL_ID_SANLI_SHIYOU, 222, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 223, 0}, {CHANNEL_ID_SANLI_SHIYOU, 224, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 225, 0}, {CHANNEL_ID_SANLI_SHIYOU, 226, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 227, 0}, {CHANNEL_ID_SANLI_SHIYOU, 228, 1} }, { {CHANNEL_ID_SANLI_SHIYOU, 229, 0}, {CHANNEL_ID_SANLI_SHIYOU, 230, 1} }, }, -- 三狸美团/淘宝 [CHANNEL_ID_SANLI_MINIGAME] = { { {CHANNEL_ID_SANLI_ANDOIRD, 321, 0}, {CHANNEL_ID_SANLI_MINIGAME, 21, 2}, {CHANNEL_ID_SANLI_MINIGAME, 22, 2}, }, { {CHANNEL_ID_SANLI_ANDOIRD, 323, 0}, {CHANNEL_ID_SANLI_MINIGAME, 23, 2}, {CHANNEL_ID_SANLI_MINIGAME, 24, 2}, }, { {CHANNEL_ID_SANLI_ANDOIRD, 325, 0}, {CHANNEL_ID_SANLI_MINIGAME, 25, 2}, {CHANNEL_ID_SANLI_MINIGAME, 26, 2}, }, { {CHANNEL_ID_SANLI_ANDOIRD, 327, 0}, {CHANNEL_ID_SANLI_MINIGAME, 27, 2}, {CHANNEL_ID_SANLI_MINIGAME, 28, 2}, }, { {CHANNEL_ID_SANLI_ANDOIRD, 329, 0}, {CHANNEL_ID_SANLI_MINIGAME, 29, 2}, {CHANNEL_ID_SANLI_MINIGAME, 30, 2}, }, }, -- 微信/抖音小游戏 [CHANNEL_ID_TAP_WX] = { { {CHANNEL_ID_TAP, 201, 0}, {CHANNEL_ID_TAP_WX, 1, 2}, }, { {CHANNEL_ID_TAP, 205, 0}, {CHANNEL_ID_TAP_WX, 6, 2}, }, { {CHANNEL_ID_TAP, 221, 0}, {CHANNEL_ID_TAP_WX, 21, 2}, }, { {CHANNEL_ID_TAP, 225, 0}, {CHANNEL_ID_TAP_WX, 26, 2}, }, { {CHANNEL_ID_TAP, 251, 0}, {CHANNEL_ID_TAP_WX, 41, 2}, }, { {CHANNEL_ID_TAP, 255, 0}, {CHANNEL_ID_TAP_WX, 46, 2}, }, { {CHANNEL_ID_TAP, 261, 0}, {CHANNEL_ID_TAP_WX, 51, 2}, }, { {CHANNEL_ID_TAP, 265, 0}, {CHANNEL_ID_TAP_WX, 56, 2}, }, { {CHANNEL_ID_TAP, 271, 0}, {CHANNEL_ID_TAP_WX, 61, 2}, }, { {CHANNEL_ID_TAP, 275, 0}, {CHANNEL_ID_TAP_WX, 66, 2}, }, { {CHANNEL_ID_TAP, 281, 0}, {CHANNEL_ID_TAP_WX, 71, 2}, }, { {CHANNEL_ID_TAP, 285, 0}, {CHANNEL_ID_TAP_WX, 76, 2}, }, { {CHANNEL_ID_TAP, 311, 0}, {CHANNEL_ID_TAP_WX, 101, 2}, {CHANNEL_ID_TAP_WX, 102, 2} }, { {CHANNEL_ID_TAP, 313, 0}, {CHANNEL_ID_TAP_WX, 103, 2}, {CHANNEL_ID_TAP_WX, 104, 2} }, { {CHANNEL_ID_TAP, 315, 0}, {CHANNEL_ID_TAP_WX, 105, 2}, {CHANNEL_ID_TAP_WX, 106, 2} }, { {CHANNEL_ID_TAP, 317, 0}, {CHANNEL_ID_TAP_WX, 107, 2}, {CHANNEL_ID_TAP_WX, 108, 2} }, { {CHANNEL_ID_TAP, 319, 0}, {CHANNEL_ID_TAP_WX, 109, 2}, {CHANNEL_ID_TAP_WX, 110, 2} }, { {CHANNEL_ID_TAP, 321, 0}, {CHANNEL_ID_TAP_WX, 111, 2}, {CHANNEL_ID_TAP_WX, 112, 2} }, { {CHANNEL_ID_TAP, 323, 0}, {CHANNEL_ID_TAP_WX, 113, 2}, {CHANNEL_ID_TAP_WX, 114, 2} }, { {CHANNEL_ID_TAP, 325, 0}, {CHANNEL_ID_TAP_WX, 115, 2}, {CHANNEL_ID_TAP_WX, 116, 2} }, { {CHANNEL_ID_TAP, 327, 0}, {CHANNEL_ID_TAP_WX, 117, 2}, {CHANNEL_ID_TAP_WX, 118, 2} }, { {CHANNEL_ID_TAP, 329, 0}, {CHANNEL_ID_TAP_WX, 119, 2}, {CHANNEL_ID_TAP_WX, 120, 2} }, }, } --要进行数据合并的数据库列表, 每个value中第一个为目标数据库,其他为源数据库 --!!! 当前项目 ckwy_fy_S350002 是1服的数据库, ckwy_fy_S350003 是2服的数据库, ckwy_fy_S350004 是3服的数据库, 以此类推... MERGE_DB_TB = { -- 木子 -- {"ckwy_fy_S350022", "ckwy_fy_S350023"}, -- {"ckwy_fy_S350024", "ckwy_fy_S350025"}, -- {"ckwy_fy_S350026", "ckwy_fy_S350027"}, -- {"ckwy_fy_S350028", "ckwy_fy_S350029"}, -- {"ckwy_fy_S350030", "ckwy_fy_S350031"}, -- -- 三狸安卓/H5 -- {"ckwy_fy_S350042", "ckwy_fy_S350043", "ckwy_fy_S550032", "ckwy_fy_S550033"}, -- {"ckwy_fy_S350044", "ckwy_fy_S350045", "ckwy_fy_S550034", "ckwy_fy_S550035"}, -- {"ckwy_fy_S350046", "ckwy_fy_S350047", "ckwy_fy_S550036", "ckwy_fy_S550037"}, -- {"ckwy_fy_S350048", "ckwy_fy_S350049", "ckwy_fy_S550038", "ckwy_fy_S550039"}, -- {"ckwy_fy_S350050", "ckwy_fy_S350051", "ckwy_fy_S550040", "ckwy_fy_S550041"}, -- -- 三狸QQ -- {"ckwy_fy_S650022", "ckwy_fy_S650023"}, -- {"ckwy_fy_S650024", "ckwy_fy_S650025"}, -- {"ckwy_fy_S650026", "ckwy_fy_S650027"}, -- {"ckwy_fy_S650028", "ckwy_fy_S650029"}, -- {"ckwy_fy_S650030", "ckwy_fy_S650031"}, } --所有要处理的集合 COLLECTIONS = { ".char", -- 角色表, 可以直接插入 ".mail" , -- 邮件,可以直接插入 ".common", -- 通用数据(开服时间) ".friend", -- 好友数据库表, 可以直接插入 ".boss_data", -- boss记录表, 可以直接插入 ".union", -- 工会数据表, 可以直接插入 ".jjc", -- 单人竞技场, 可以直接插入 ".combat_video", -- 战斗录像[本地记录 个人记录 单人竞技场 通天塔 王者争霸 战役记录],可以直接插入 ".drill_data", -- 圣树试炼/过关斩将,可以直接插入 ".union_war", -- 公会战,可以直接插入 ".union_war_record", -- 公会战记录, 可以直接插入 ".the_stars", -- 星空争霸, 可以直接插入 ".abs_billboard", -- 绝对时间排行榜记录, 可以直接插入 ".middle_act_group", -- 跨服活动分组记录, 暂时没使用,不管 ".battle_shark", -- 战役通关战报 ".tower", -- 全服通天塔 信息, 可以直接插入 ".hero_pingfen", -- 英雄评分信息用于排名, 可以直接插入 ".jjcGodWar", -- 众神之战 ,可以直接插入 ".jjcGodWar_record", -- 众神之战记录 ,可以直接插入 ".chat_record", -- 好友聊天记录 ,可以直接插入 ".jjcLadder", -- 天梯争霸 ,可以直接插入 ".jjcLadder_record", -- 天梯争霸记录 ,可以直接插入 ".yjTreasure", -- 遗迹探宝 , 可以直接插入 ".yjTreasure_rank", -- 遗迹探宝排行 ".yjTreasure_role", -- 遗迹探宝角色信息 , 可以直接插入 ".valley", -- 荣耀峡谷/龙族战场 ,可以直接插入 ".valley_record", -- 荣耀峡谷/龙族战场记录, 可以直接插入 ".war_report", -- 战报[跨服记录 冠军联赛 王者争霸 天梯 切磋 系列排名存储记录], 可以直接插入 ".openServer_billboard", -- 开服排行类活动,可以直接插入 ".lost_temple", -- 神庙 ".common_rank", -- 通用排行榜,可以直接插入 } --源数据库中不需要插入目标数据库的集合列表 --[=[ middle_act_group 暂时没用到这个集合,所以也只用目标数据库的集合 the_stars 战神殿, 只保留宿主服的记录 battle_shark 主线闯关录像, 只用宿主服的 ]=]-- NO_INSERT_COLLECTIONS = { --[".common"] = 1, [".middle_act_group"] = 1, [".the_stars"] = 1, [".battle_shark"] = 1, [".jjcGodWar"] = 1, --[".jjcGodWar_record"] = 1, --[".tower"] = 1, } --用到char 集合中的 _id 字段的集合, 如果 char 集合中的 _id 有修改, 则这些集合中的 _id 也需要修改 NEED_CHANGE_COLLECTIONS = { [".friend"] = '1', [".mail"] = '1', [".union"] = '1', [".the_stars"] = '1', [".jjc"] = '1', [".combat_video"] = '1', }