。使用innobackupex,extrabackup进行MySQL备份,本质上是拷贝文件到另外一个目录,拷贝时会消耗IO资源,同时要注意空间是否足够,最好一边备份一边压缩,出来的文件小了,相当于节省了IO
。把表结构拷贝到另外一个表,可使用 insert into target_table select * from source_table;
。根据业务可以把数据库分3种,第一种是核心库,保存用户的信息,第二种是账单库,负责保存明细,账单的信息,还有一种是统计库,负责出报表
。修改lepus的php代码,不需要把整个代码打包上传下载,只需要把需要改动的php文件做备份,然后上传新的页面即可
。使用rz -bye上传不压缩的gblic包容易导致目录乱码,在rm -f的时候,容易遇到通配符把文件都删除,正确做法是先把glibc包都放在一个压缩的tar文件里面,再上传
。MySQL导数出来,导入myshard里面,需要加入__version字段,如果不额外加入版本号字段,默认会是0,导入到空白的表还好,如果表已经有数据,就会有大于0的版本号,那么再次导入0的版本号,就无法插入进去
。Innobackupex解压了压缩文件,如果直接使用mysqld_safe启动,回按照MySQL的奔溃恢复方式来启动,会导致启动失败,因为不是按照apply log的方式进行崩溃恢复
。使用pt-table-checksum 2亿的表,修复上千条数据,超过8小时都还没能修复完,因为它的原理是逐条checksum,发现有不对的的地方,再进行具体比较和修复,当然很慢了
。pt-table-sync修复时,把--print --execute的结果重定向到某个文件,为了保存数据,告诉别人结果,我修复了多少条数据。同理要把checksums的结果重定向到某个日志里面,否则屏幕一刷出来就过了,做过的事情要记录下来,业务会有问你的时候
。innobackup很可能解压时会失败,如果空间足够,可以先CP一个备份
。一般数据库服务器用的是惠普的R720,R730
。为什么MySQL rename一个2亿的大表都是瞬间呢?因为背后的命令是mv,只需要修改一下连接指向而已
。即是不能降低别人预期,也不要提高别人期待,给意外和事故留时间,否则最后苦了自己
。windows的MySQL图形客户端软件,在服务端的MySQL不知道授权哪个的时候,windows可以直接去连接,失败会返回你的XX IP不允许连接数据库
。登陆linux系统,获取root权限,需要经过跳板机,但登陆数据库是不需要经过跳板机的,应用程序直接连接即可,所以windows上的navicat是可以使用的
。myshard的按月分表,在查询的时候,要告诉别人你要查询的哪个月,于是要加入__date_partition=201611