设为首页 收藏本站
查看: 467|回复: 0

[经验分享] 教你如何备份和拷贝 MYSQL 数据库 ―IT技术

[复制链接]

尚未签到

发表于 2016-10-23 03:02:08 | 显示全部楼层 |阅读模式
来自:http://www.verydemo.com/demo_c152_i80158.html
  ....................................................................
  备份数据库的两种主要方法是使用mysqldump 程序或直接拷贝数据库文件(如便用cp、tar 或cpio)。每种方法都有自己的优点和缺点:
  mysqldump与MySQL服务器联合进行操作。直接拷贝方法与服务器相脱离,因此必须采取措施确保在进行拷贝时没有客户机在修改这些表。这个问题与利用文件系统备份来备份数据库的问题相同:如果数据库表在文件系统备份时进行更新,则进行备份的表文件处于非一致的状态,并且对于今后恢复该表没有意义。文件系统备份和直接拷贝文件的区别是:对于后者,您具有控制备份进度的权利,因此可以采取措施确保服务器使表处于静止状态。
  mysqldump比直接拷贝技术要慢
  mysqldump产生可移植到其他机器、甚至具有不同硬件结构的机器上的文本文件。直接拷贝文件不能够移植到其他机器上,除非要拷贝的表使用MyISAM存储格式。ISAM 表只能在具有相同硬件结构的机器之间进行拷贝。例如,将文件从SPARC 的Solaris 机器拷贝到Intel的Solaris 机器(或者相反)是行不通的。由MySQL3.23 引进的MyISAM表存储格式可以解决这个问题,因为该格式与机器独立。因此,如果以下两个条件都满足的话,直接拷贝文件可以移植到具有不同硬件结构的机器上:即另一台机器上也必须运行MySQL3.23以上的版本,并且文件必须表示成MyISAM 表,而不是ISAM 表。
  不论选择哪种备份方法,都有某些原则,您必须坚持这些原则,才能确保在需要恢复数据库内容时得到最好的结果:
  定期执行备份。设置一个时间表并坚持使用它。告诉服务器运行更新日志。更新日志在您需要恢复崩溃后的数据库时给予帮助。在使用备份文件将数据库恢复到备份时刻的状态后,可以通过运行更新日志中的查询,重新运行备份之后所做的改变。这个操作将数据库中的表恢复到了崩溃时刻的状态。在文件系统备份语言中,数据库备份文件表示完全转储(full dump),而更新日志则表示增量转储。使用一致和可理解的备份文件命名模式。像b a c k up 1、backup2 等名字没有特殊的含义。当需要它执行恢复时,还得浪费时间去查看文件中的内容。您会发现使用数据库名和花时间去构造备份文件名是有好处的。例如:
  

<ccid_nobr>

<ccid_code>% mysqldump samp_db> /usr/archives/mysql/samp_db. 1999-10-02
% mysqldump menagerie> /usr/archives/mysql/menagerie.1999-10-02
  在产生备份文件后您可能需要将它们压缩。毕竟备份文件都比较大,所以您可能还需要终止备份文件以避免它们填满磁盘,这与终止日志文件类似。您可以用相同的技术终止备份文件:
  用文件系统备份来备份您的备份文件。如果您遭受了一个完全崩溃,不仅毁坏了数据目录而且还破坏了包含数据库备份的磁盘驱动器,那将造成真正的麻烦。您还应该备份更新日志。
  将备份文件放在与您的数据库不同的文件系统上。这将减少含有数据字典的文件系统被生成的备份文件填满的可能性。
  创建备份的技术对于将数据库拷贝到另一个服务器上也是很有帮助的。将数据库转移到运行在另一个主机上的服务器是很平常的,但您还可以将数据转移到运行在相同主机上的另一个服务器。如果正为一个新版本的MySQL运行服务器,并且想用成品服务器上的某些真实数据来测试它时,可能会这样做。还有一种可能,那就是您得到了一台新的机器并要将所有的数据库移动到新机器上。
  用mysqldump 备份和拷贝数据库
  当使用mysqldump 程序产生数据库备份文件时,缺省设置是该文件的内容由CREATE TABLE语句组成,这些语句创建被转储的表以及包含表中的行数据的INSERT 语句。换句话说,mysqldump创建在今后可作为对mysql的输入使用的输出结果,以重建数据库。
  可以将整个数据库按以下命令转储到单独的文本文件中:
  该文件的其余部分由更多的INSERT 和CREATE TABLE 语句组成。如果想在生成备份时进行压缩,可替换成类似下列的命令:
  

<ccid_nobr>

<ccid_code>% mysqldump samp_db | gzip > /usr/archives/mysql/samp_db.1999.10.02.gz
  如果您有一个超大数据库,则该输出文件也将是极大的且管理起来很困难。如果您喜欢的话,可以通过在mysqldump命令的数据库名之后命名单个的表来转储这些表的内容。这个操作将该转储文件分成更小的、更多的可管理的文件。下面的例子将说明如何将samp_db的一些表转储到单个文件中:
  

<ccid_nobr>

<ccid_code>% mysqldump samp_db student score event absence > gradebook.sql
% mysqldump samp_db member president > hist-league.sql
  如果您正在生成备份文件并打算用这些备份文件来定期刷新另一个数据库的内容,则可能要使用--add-drop-table选项。此选项告诉mysqldump 将DROP TABLE IF EXISTS语句写到备份文件中。然后,当您取出该备份文件并将其加载到第二个数据库时,如果表已经存在将不会出现错误信息。如果您正在运行第二个数据库,可使用此技术利用从第一个数据库中的数据拷贝来定期地加载它。
  如果您正在转储数据库使该数据库可以转换到另一个服务器上,则无须创建备份文件。应确保该数据库存在于另一台主机上,然后用一个管道使mysql直接读取mysqldump的输出结果来转储数据库。例如,如果想要将samp_db 数据库从pit_viper.snake.net 拷贝到boa.snake.net,操作如下:
  

<ccid_nobr>

<ccid_code>% mysqladmin -h boa.snake.netcreate samp_db
% mysqldump samp_db | mysql-h boa.snake.net samp_db
  1 2

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-289859-1-1.html 上篇帖子: ubuntu13.10安装apache+svn+mysql+jdk+tomcat+php开发环境 下篇帖子: MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表