上周,游戏logdb磁盘空间不足,检查发现没有配置innodb_file_per_table=1,数据库空间无法收缩,从A1到A1或A1到A5采用那种方式比较合适呢?
感谢大家关注本头条号,每天分享高质量的游戏开发经验,游戏运营经验和从零到一完整开发一款产品
方法一:数据文件迁移
安装好新MYSQL
停掉原DB
拷贝原DB的/data/mysqldata/innodb/data目录到新机器覆盖
scp -r /data/mysqldata/innodb/data mysql@***.17.142.100#36000:/data/mysqldata/innodb
scp -r /data/mysqldata/innodb/log mysql@***.17.142.100#36000:/data/mysqldata/innodb
scp -r /data/mysqldata/relay-log mysql@172.17.142.100#36000:/data/mysqldata
拷贝原DB的/data/mysqldata/data到新机器覆盖
scp -r /data/mysqldata/data mysql@***.17.142.100#36000:/data/mysqldata
修改目标机器的innodb_data_file_path参数与原机器一致
重新启动新MYSQL
修改mysql.user,db表的host
测试
如果不同IDC,ibdata文件很大,可结合挂载NFS方式做传输。
方法二:远程mysqldump
(5.1的参数)
/usr/local/mysql/bin/mysqldump -uxxxxx -pxxxxx -h22.222.22.222 --skip-opt --create-option --single-transaction -q --no-autocommit -R --default-character-set=latin1 -B DB1 DB2 > /data/dbbak/logdb_118.sql
不同IDC不建议。
方法三:通过挂载NFS做备份恢复的方式迁移LOGDB
目的:10.221.111.111 -> 10.22.11.112(保留原有权限)
(Client) (Server)
Suse配置NFS
a.起NFS Server进程(如果原来已经起来了,这步忽略)
/sbin/portmap
/etc/init.d/nfsserver start
b.修改server配置文件/etc/exports
这里添加server提供的服务列表,格式是:
本地共享目录 授权可以mount的IP(mount参数)
比如添加一条信息是:
/data/dbbak/logdb118 10.111.111.111(rw,no_root_squash)
表示本地的/data/dbbak/logdb118目录可以供10.132.70.72进行mount使用,参数含义可以参考一下相关资料,一般按照上面的例子设置就可以了。
c.刷新配置信息
执行语句exportfs –rv
d.客户端操作
一般情况下,客户端上也要起portmap进程才能正常mount相应的nfs文件系统,但是由于portmap会起一个111绑定所有IP的端口,所以如果没有iptables限制的情况下,要在迅速mount,并在mount之后立即kill掉此进程。
比如,需要mount服务器10.2.2.222这台nfsserver的/data/dbbak/logdb118文件系统到本地的/data/nfs目录,可以执行如下操作:
/sbin/portmap
mount 10.2.2.222:/data/dbbak/logdb118 /data/nfs
Client执行/data/dbbak/dumplogdb.sh
(调用mysqldump导出脚本到挂载的/data/nfs目录)
检查mysqldump状态
Client:ps -ef|grep mysql 检查导出进程
Server: 在 /data/dbbak/logdb118 目录ls -lh查看文件大小
Server执行/data/dbbak/logdb118/import.sh
(调用mysql导入)
检查导入状态
Server: ps -ef|grep mysql 检查导入进程
df -lh 并关注磁盘空间
卸载NFS
Client: umount /data/nfs
Server: 修改/etc/exports中配置,刷新exportfs -rv
至此迁移完了,游戏稳定运行
最近又开始优化游戏了,
主要修改如下
金币流入流出统计
一、注册:
1、一般注册
2、快速注册
3、qq注册
二、商城
1、元宝购买金币
2、购买记牌器
三、任务
1、每日任务
2、新手任务
3、定时任务
4、宝箱
四、红包
1、玩家发放红包,系统收税
2、玩家领取红包
3、系统发放红包
五、统计游戏服务器产生的金币
1、万人炸金花系统庄家结算
2、百人牛牛系统庄家结算
3、万人水果机注水(现在不注水了)
六、统计机器人自动添加的金币数量
1、机器人自动添加的金币存储在redis中,key:statistics:robot_add_coin:20171101
七、活动赠送
1、特价金币
2、幸运大礼包
八、统计万人场庄家输赢流入金币
1、万人炸金花
2、百人牛牛
后面我会详细介绍优化细节,也请各位同学指教