大数据量备份与还原,始终是个难点。当MYSQL超10G,用mysqldump来导出就比较慢了。在这里推荐xtrabackup,这个工具比mysqldump要快很多。
上次搞全文检索的东西 ,还要追溯到2010了,当时个人觉得coreseek还不成熟,就用了原始的sphinx,请参考:sphinx mmseg mysql 中文分词,这次呢,决定用一下coreseek,看看有什么区别。
写这篇博客,是想分析一下,大众点评,搜房网地图实现原理,以及,找附近的房子,找附近的美食等是怎么实现的。看了这篇博客,你就会明白了。
一,原理分析
1,录入地址,不管是美食店,还是小区都是有地址。
2,根据地址,通过google map api获取地址的坐标,存到数据库中。
3,在地图上显示时,只要根据坐标,在地图上标出来行。
4,如果要找附近的美食,房子啊,通过算存在数据库中的坐标就可以找出附近房子,美食店。
有人会问,输入地址,直接调用api查不就行了,不需要这么麻烦。这种方式开发起来很简单,但是这种方式是不精确的。如果想做精确,就要按上面的方式来做。
mysql的索引可以分为单列索引和多列索引,单列索引,请参考:添加mysql索引的3条原则
mysql可以为多个列创建一个索引,最多可以16列,多列索引可以视为包含通过连接索引列的值而创建值的排序数组。mysql多列索引适用场合:当你在where子句中为索引的第1个列指定已知的参数时,查询很快,即使你没有指定其它列的值,这里的其他列是多列索引里面,指定的其他列。
今天查询mysql的时候,报这样的错误,Incorrect key file for table './tg/dxad.MYI'; try to repair it. mysql表损坏的情况是很少见的,下面的方法适用于myisam,其他存储引擎,不知道能不能这样修复。
日志滚动解决日志文件过大问题,比如我开启了general_log,这个日志呢是记录mysql服务器上面所运行的所有sql语句;比如我开启了mysql的慢查询。
先说一下heartbeat的原理,在二台机子上都安装heartbeat,这样heartbeat会相互监听,如果主的挂了,从的会变成主的。如果主的恢复了,在转变过来。主的和从的要实现的高可用程序都要启动。没装成功之前我是这样理解的,heartbeat只要装在一台机器上就行了,由heartbeat来监控二台机器,感觉这样更合理一点,不过这种理解是错误的。
做广告弹窗推广,记录来源ip,url。推广征战四方游戏时,我是没有记录弹窗数的,当时预计是36时1000万IP,机子是8000多块的组装机,我怕mysql撑不起来。这次决定记录一下试试,如果mysql真的撑不起来的话,就用脚本切换成静态的。
最近在优化mysql innodb存储引擎,准备把共享表空间转换成独立表空间。刚开始的没考虑这么多,过段时间又要推广,所以优化一下,看看效果如何。说一个转换过程。
修改innodb_log_file_size后,innodb不能启用。并且/etc/init.d/mysqld restart重启的时候,还不提示任何错误。当我用mysql> show engines;看的时候,innodb就没有了,我汗。我查看一下log日志,/var/log/mysqld.log发现有报错的地方。如下