当遇到第三方库的使用,我们为了方便本地操作,一般会选择dump下来。那有什么方法呢?
1. 建立slave
拉个从库,这是最简单的。但是有个问题。没办法具体到表。而且你需要第三方的大力配合。
2. dump
每天晚上dump。然后在本地库source。简单暴力。但是,对于第三方若是提供的是view,就没办法。而且需要需求可以接受短时间的宕机。
3. pt-table
percona-toolkit提供的,针对表或者库。方便快捷。而且不会宕机。据说腾讯内部也使用了很多。需要一定的权限。不止是readonly,还需要一个 statement-based 复制权限, 能设置 binlog_format=STATEMENT on the master。其实这个权限不算大。但是也需要第三方刚好有。正常来讲,这个是最优先考虑的。
4. -Bse ‘select * from’
我曾经遇到一个,前面几种都无法搞定。第三方库就提供了很纯粹的readonly权限,而且是使用view展示的。后来想到了这种。其实是最简单暴力,类似mysqldump。原理就是select * 全部,然后再加上droptable。create table。活生生变成了dump指令