游戏合服方法 ——MSQL数据库的拷贝与合并

游戏合服方法

——MSQL数据库的拷贝与合并


在游戏上线运营过程,经常需要执行合服操作,需要对多个库的相同表数据进行合并。

常见的数据库拷贝方式有两种:

第一种:复制Table +Data,这个作法Primayindex key都不会复制, 需要手动添加.
CREATETABLE new_db.table_name SELECT * FROM old_db.table_name;
ALTER TABLE new_db.table_name ADD PRIMARY KEY (id);

第二种作法: 先复制Table schema, INSERT Data. 这个作法Schema是会被同时复制的
CREATETABLE new_db.table_name LIKE old_db.table_name;
INSERT new_db.table_name SELECT * FROM old_db.table_name;

这里最推荐的作法是第二种

另外,游戏上线后必然会有版本更新,就会导致不同游戏版本的数据库结构有差异,所以,在合服之前,必须保证两个游戏数据库已升级成相同的。

在此基础之下,数据库中因为开服顺序的不同,同一张表的字段顺序也会有所不同,这样在执行插入语句时也会出现错误

可以先通过如下语句,在插入之前,先将该表的字段结构取出来
SELECT COLUMN_NAME FROM information_schema.COLUMNSWHERE table_name =' table_name' and table_schema ='new_db';

再将插入语句修改成指定字段修改的格式
INSERTINTO new_db.table_name(column1, column2,...) (SELECT column1, column2,... FROM old_db.table_name);

你可能感兴趣的:(MySql)