游戏合服方法
——MSQL数据库的拷贝与合并
在游戏上线运营过程,经常需要执行合服操作,需要对多个库的相同表数据进行合并。
常见的数据库拷贝方式有两种:
第一种:复制Table +Data,这个作法Primay、index 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);