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

[经验分享] Mysql备份讲解(全备和增量备份)

[复制链接]

尚未签到

发表于 2018-9-27 09:39:38 | 显示全部楼层 |阅读模式
  煮酒品茶:时间有点长,date那一段可以快进。比较真实,我用的什么样子,你用了也啥样子。
  视频优酷真正沈核中.....
  
  
  
  
  Mysql 备份与恢复
  --煮酒品茶
  用官方的文档讲解
  mysqldump
  备份文件(MYISAM)
  INNODB?
  数据库备份(完全备份和增量备份)
  mysqldump --tab=/path/to/some/dir --opt db_name
  --tab
  mysqldump创建一个包含创建表的CREATE TABLE语句的tbl_name.sql文件,和一个包含其数据的tbl_name.txt文件。选项值为写入文件的目录。
  默认情况,.txt数据文件的格式是在列值和每行后面的新行之间使用tab字符。可以使用--fields-xxx和--行--xxx选项明显指定格式。
[root@Mysql1-200 mysql]# mysqldump -uroot -p --tab=/backup/mysql/ --opt test  
Enter password:
CREATE TABLE `10wbackup` (  
`id` int(11) NOT NULL,
  
`number` int(11) NOT NULL
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  过程:
  1、导出一个创建table语名气的文件
  2、导出一个含有数值的txt文件,以tab分开
[root@Mysql1-200 mysql]# mysqldump -u root -p test >/backup/mysql/test/test.sqlEnter password:  
[root@Mysql1-200 mysql]# ll test
  
total 2520
  
-rw-r--r--. 1 root root 2580275 Jul 26 22:47 test.sql
  
[root@Mysql1-200 mysql]# ll test.sql/
  
total 1068
  
-rw-r--r--. 1 mysql mysql    1314 Jul 26 22:36 10w.sql
  
-rw-rw-rw-. 1 mysql mysql 1088917 Jul 26 22:36 10w.txt
  自动备份脚本的流程:
  1、获取一系列的信息
  2、以单前时间备份在目录中建立的以当前时间为目录的结构
mysqlhotcopy db_name /path/to/some/dir  增量备份:
  A    >      Z
  A--B(完备)--C(增量备份)--D(增量备份)  > Z
  mysql-bin.000001 (时间段) 0:00
  mysql-bin.000002 (时间段) 0:00
  mysql-bin.000003 (时间段) 0:00 ~ 6:00
  6:00 --flush-logs
  mysql-bin.000004 (时间段) 6:00 ~ 0:00
  mysql-bin.000005 (时间段)
  ySQL支持增量备份:需要用--log-bin选项来启动服务器以便启用二进制日志;参见5.11.3节,“二进制日志”。当想要进行增量备份时(包含上一次完全备份或增量备份之后的所有更改),应使用FLUSH LOGS回滚二进制日志。然后,你需要将从最后的完全或增量备份的某个时刻到最后某个点的所有二进制日志复制到备份位置。这些二进制日志为增量备份;恢复时,按照下面的解释应用。下次进行完全备份时,还应使用FLUSH LOGS或mysqlhotcopy --flushlogs回滚二进制日志。参见8.8节,“mysqldump:数据库备份程序”和8.9节,“mysqlhotcopy:数据库备份程序”。
  如果MySQL服务器为从复制服务器,则无论选择什么备份方法,当备份从机数据时,还应备份master.info和relay-log.info文件。恢复了从机数据后,需要这些文件来继续复制。如果从机执行复制LOAD DATA INFILE命令,你应还备份用--slave-load-tmpdir选项指定的目录中的SQL_LOAD-*文件。(如果未指定,该位置默认为tmpdir变量值)。从机需要这些文件来继续复制中断的LOAD DATA INFILE操作。
  如果必须恢复MyISAM表,先使用REPAIR TABLE或myisamchk -r来恢复。99.9%的情况下该方法可以工作。
  1.    恢复原mysqldump备份,或二进制备份。
  2.    执行下面的命令重新更新二进制日志:
  3.    shell> mysqlbinlog hostname-bin.[0-9]* | mysql
mysqldump --single-transaction --all-databases --flush-logs > backup_sunday_1_PM.sql  
--flush-logs
  告诉服务器关闭当前的二进制日志文件并创建一个新文件。
mysqldump --single-transaction --flush-logs --master-data=2  --all-databases > backup_sunday_1_PM.sql  mysqldump --delete-master-logs
  MySQL二进制日志占据硬盘空间。要想释放空间,应随时清空。操作方法是删掉不再使用的二进制日志,例如进行完全备份时:
  恢复:
  导入完备:
mysql < backup_sunday_1_PM.sqlmysql -u root -p  edittest < ./test.sql  现在这个点(周一)进行完全备份,下次完备(下周一) mysql-bin.000007
  ......(data)
  mysql-bin.000007
  周二进行增量备份
  mysql-bin.000008
  ....(add table) table name:zhou2
  周三进行增量备份
  .... (add table) table name:zhou3s
  1、完备
mysqldump -uroot -p --single-transaction --all-databases  --flush-logs >Wb/Wb-2013-7-26.sql  mysql-bin.000009 ~ mysql-bin.000010
  有新数据
  2、直接回GUNbin-log日志
  周二
mysqladmin -uroot -pzuoloveyou flush-logs  mysql-bin.000010 ~ mysql-bin.000011
  周三
mysqladmin -uroot -pzuoloveyou flush-logs  mysql-bin.000011 ~ mysql-bin.000012
  2、备份bin-log日志
shell> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql  恢复过程:
  1、恢复完备(OK)
mysql -uroot -p  show databases;  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| MyISam             |
  
| edittest           |
  
| good1              |
  
| mysql              |
  
| performance_schema |
  
| test               |
  
| zhou2              |
  
| zhou3              |
  
+--------------------+
  9 rows in set (0.00 sec)
  3、恢复周三的增量备份
  备份目录:
  增量备份目录:Zl-test-date
  完全备份目录:Wb-test-date
  TEST:
  周三:(周三开始的)
  mysql-bin.000012
  周四:(周四开始的)
  mysql-bin.000013
  周五:(删除周四的,新建周五的)
  mysql-bin.000014
  mysql-bin.000015
  备份机制:
  周一完备,周二到周四增量备份
  周一:完备后回GUN日志,同时备份的时候锁表和把表的内存刷入磁盘
  周二到周日执行回GUN日志,并备份bin-log日志
  结论:
  增量备份是完全基于bin-log日志来进行的。
  全备脚本:
#/bin/bash  
#Cwtea
  
#定义
  
Mysql="/usr/local/mysql5.5.32/bin/mysql"
  
MysqlDump="/usr/local/mysql5.5.32/bin/mysqldump"
  
User="root"
  
PassWord="*******"
  
DataBaseName="test"
  
WbBackup="/backup/mysql/Wb"
  
Now=`date +%Y-%m-%d`
  
#command
  
mkdir $Backup/$DataBaseName$Now
  
#mysqldump -uroot -p --single-transaction --all-databases  --flush-logs >Wb/Wb-2013-7-26.sql
  
$Mysql -u$User -p$PassWord -e "FLUSH TABLES;"
  
$MysqlDump -u$User -p$PassWord --single-transaction --all-databases  --flush-logs >$WbBackup/Wb-$Now.sql
  增量备份脚本:
#/bin/bash  
#Cwtea
  
#定义
  
MysqlAdmin="/usr/local/mysql5.5.32/bin/mysqladmin"
  
MysqlDump="/usr/local/mysql5.5.32/bin/mysqldump"
  
ZlBackup="/backup/mysql"
  
DataBaseName="test"
  
User="root"
  
PassWord="*******"
  
Now=`date +%Y-%m-%d`
  
#command
  
#mysqladmin -uroot -p**** flush-logs
  
$MysqlAdmin -u$User -p$PassWord flush-logs
  
#Update bin-log
  
...........



运维网声明 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-602633-1-1.html 上篇帖子: 用MySQL Workbench工具分析OSSIM数据库 下篇帖子: MySQL高可用性之MySQL+DRBD+Heartbeat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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