什么是骚操作
个人对它的定义是,一系列炫酷且不容易被模仿的“奇技淫巧”,但绝不哗众取宠,必须要有实际需要和使用场景。对于一个有多年经验的专业DBA,每个人都有自己独特的骚操作, 在接下来的一段时间,我将展示自己的一系列骚操作,就当抛砖引玉吧,同时也让大家看看SQL Server是不是真的不入流。
背景
作为DBA, 一个常见的任务是,将数据库备份,然后恢复到另一个实例,具体涉及到的case可能比较多,比如
- 源实例与目标实例物理上处于不同位置,甚至属于不同部门或公司,或者一个在本地,一个在云上。
- 源实例与目标实例可能基于不同的操作系统,比如一个是基于Windows, 而另一个是基于Linux。
通常的做法是
- 在源实例上备份数据库
- 将备份文件拷贝到共享文件夹、FTP, 或直接拷贝到目标实例
- 恢复数据库到目标实例
其中存在的问题在于,
- 其中的文件拷贝可能慢且繁琐。比如,如果要将本地数据库回复到AWS EC2上的实例。需要(1) 将备份文件上传之S3 (2)将备份文件下载到EC2实例
- 串行化。必须要完成备份,才能拷贝文件,然后才能Restore。
- 临时存贮需求。当数据库巨大的时候,必须考虑到backup文件的存储需求,这往往意味着额外的成本。
Idea
将这一系列的操作转化为stream操作,其要点有,
- 在目