mysql进阶(一) mysql备份

备份的目的:
    实现灾难恢复:误操作、硬件故障、软件故障、自然灾害、黑客攻击

注意的要点:
    1、能够容忍丢失多少数据
    2、恢复数据所用的时间
    3、备份需要的时间
    4、是否对业务有影响
    5、备份时服务器负载

备份类型
    完全备份:备份整个数据库的数据
    部分备份:备份指定的一部分数据
    增量备份:备份上一次备份后增加的数据
    差异备份:备份从最后一次完全备份后起发生改变的数据
    热备份:读写操作均可以进行
    温备份:只读
    冷备份:不可写,不可读
    逻辑备份:从数据库中导出数据,与存储引擎无关
    物理备份:直接复制数据文件

备份需要:
    数据
    二进制日志,事务日志
    配置文件

备份的设计方案:
    数据:完全+增量、完全+部分
    备份手段:逻辑或物理

常用的备份工具:
    mysqldump:mysql自带的备份工具,逻辑备份、完全备份、部分备份、温备
    lvm2快照:几乎热备,需要借助cp,tar等工具完成,lvm2只负责生成快照
    xtrabackup:支持对InnoDB的热备份(物理备份
    tar,cp:冷备份

    mysqldump工具使用:逻辑备份工具,在数据小于1G时可以使用,数据大于1G之后则不建议使用

	mysqldump [OPTIONS] database [tables]	#不会自动创建数据库
	mysqldump [OPTIONS] --databases DB1 [DB2 ...]	#备份指定数据库,会自动创建数据库
	mysqldump [OPTIONS] --all-databases 	#备份所有数据库,会自动创建数据库
	    常用选项:
		-u			#用户
		-p			#密码
		--flush-logs 		#执行二进制日志文件滚动
		--single-transaction	#对InnoDB存储引擎进行热备份(只有InnoDB支持)
		--master-data=2	   #在数据文件中,记录备份那一刻二进制日志文件的位置,
				    并注释主要用于参考,多用于进行基于时间点还原
	        --lock-all-tables    #在执行备份时锁定所有库的所有表(二选一,必须)
		--lock-tables	    #对单个数据库在备份时锁定所有表(二选一,必须)
        例:mysqldump -uroot -p123.com --databases --lock-tables --flush-logs 
            --master-data=2 test > /tmp/mysql.back.`date "+%F__%R"`

    LVM2快照实现数据几乎热备
        实现条件:mysql数据存储在LVM逻辑卷中,需要有足够的空间做快照
	备份策略:    
	    1、创建全局锁
	        mysql> FLUSH TABLES WITH READ LOCK;
	    2、记录二进制日志文件及事件位置
	        mysql -uroot -p123.com -e ‘FLUSH LOGS;‘		#进行日志滚动
	        mysql -uroot -p123.com -e ‘SHOW MASTER STATUS;‘>/tmp/test.`date +%F`
	        	  #记录二进制日志位置
	    3、创建LVM快照
	        lvcreate -L 1GB -s -n test_snap /dev/vg_test/lv_test
	                -L 1G 		#快照大小,一般和数据文件差不多
	                -s    		#表示创建快照 
		        -n test_snap 	#快照名
			/dev/vg_test/lv_test 	#要创建快照的逻辑卷
	    4、释放全局锁
	        mysql> UNLOCK TABLES;
		    
	    5、挂载快照卷
	        mount /dev/vg_test/test_snap /mnt
		    
	    6、备份数据并删除快照卷
	        cp -a /mnt/date/mysql /tmp		#复制数据文件
	        umount /mnt				#卸载快照卷
	        lvremove /dev/vg_test/test_snap 	#删除快照
		    
	    7、制定好备份计划,每隔一段时间对二进制文件进行备份
	        每隔一段时间对mysql的二进制文件进行备份,以实现将来的基于时间点还原数据
	            例:cp -p /data/mysql-bin.000007 /tmp/mysql_7.sql	#备份二进制日志

	8、还原
            还原时只需要将数据文件复制到mysql的数据目录中,在使用二进制日志对数据进行时间点还原
		例:cp -a /tmp/mysql /data/mysql		#还原数据
		    mysql> source /tmp/mysql_7.sql;		#进行基于时间点的还原

	xtrabackup实现mysql热备:
	    注意:xtrabackup只能对InnoDB实现热备和增量备份
	    https://www.percona.com/downloads/XtraBackup/LATEST/	#下载地址
	    安装:
		1、配置好epel源
		2、yum -y localinstall percona-xtrabackup-2.3.2-1.el6.x86_64.rpm    #安装

	    备份工具:
		xtrabackup包含两个主要的工具,即xtrabackup和innobackupex
		innobackupex:是xtrabackup重封装的Perl脚本,能对innodb和myisam备份,
		                对myisam不能实现热备和增量备份
		xtrabackup:xtrabackup只能备份innodb和xtradb两种引擎的表,
		                而不能备份myisam引擎的表

		innobackupex基本使用
		    常用参数:
		        --help					#查看帮助信息
			--backup				#进行备份操作,可省,默认为执行备份操作
			--apply-log				#恢复前必须的整理工作
			--defaults-file			#指定配置文件路径,可省,会自动到数据库中读取
			--redo-only 			#在做整理操作时,未提交的数据不进行回滚,做增量备份恢复时必须加的选项
			--copy-back				#执行还原操作
			--incremental			#执行增量备份
			--user=name				#指定用户名,默认为root
			--host=name				#指定主机名,默认为host
			--port=					#指定端口,默认为3306
			--password=name			#指定密码,默认为空
			--databases=‘db1 bd2‘ 	#备份指定的数据库,
			--defaults-file=		#指定配置文件,可省
			--no-timestamp=			#自定义备份目录名
			incremental-basedir=	#基于那一次备份做增量备份

    使用实例:
	innodb_file_per_table=1	    #在mysql配置文件中添加,表示每个表使用单独的表空间文件
	datadir=/usr/local/mysql/data	#在mysql配置文件中添加,表示指定数据文件位置
	mkdir /backups			#创建备份文件存放目录

    全库完全备份:
	innobackupex --user=root --password=123.com /backups/
		/backups/			#备份文件存放目录
		注意:结尾出现completed OK!则为成功,否则则为错误

    还原一个完全备份:
	innobackupex --apply-log /backups/2017-02-20_04-40-44/	#对备份文件进行整理
	innobackupex --copy-back /backups/2017-02-20_04-40-44/	#还原数据
	chown mysql:mysql /usr/local/mysql/*			#修改权限

    增量备份:
	innobackupex --user=root --password=123.com  --incremental /backups/ 
	            --incremental-basedir=/backups/2017-02-20_04-40-44/	    
            	/backups/		#增量备份存储位置
		--incremental-basedir	#指定基于哪一个备份文件进行增量备份,通常都是上一个增量备份

    增量备份还原:
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49/	#整理完全备份
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49
               --incremental-dir=/backups/2017-02-20_05-04-34	#整理第一个增量备份
        innobackupex --copy-back /backups/2017-02-20_05-01-49/	#还原数据

    部分备份:    
        innobackupex --databases="testdb mysql" /backups/ --user=root --password=123.com
        #备份testdb和mysql数据库,不管备份那个数据库都应该备份mysql数据库

    还原部分备份:
        innobackupex --apply-log /backups/2017-02-20_05-24-07/		#准备
        innobackupex --copy-back /backups/2017-02-20_05-24-07/		#还原
        chown mysql:mysql /usr/local/mysql/*				#修改权限
时间: 2024-11-08 23:39:01

mysql进阶(一) mysql备份的相关文章

mysql进阶简单解析

mysql进阶 1.mysql配置文件 mysql的配置文件为/etc/my.cnf配置文件查找次序:若在多个配置文件中均有设定,则最后找到的最终生效 /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FI LE --> ~/.my.cnf mysql常用配置文件参数: 参数 说明 port 设置监听端口 socket=/tmp/mysql.sock 指定套接字文件位置 basedir=/us

MySQL进阶篇

MySQL基础篇 2.1 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 2.1.1 数值类型 2.1.2 日期和时间类型 2.1.3 字符串类型 整型 ?tinyint,占1字节,有符号:-128~127,无符号位:0~255 ?smallint,占2字节,有符号:-32768~32767,无符号位:0~65535 ?mediumint,占3字节,有符号:-8388608~8388607,

分享一个MySQL分库分表备份脚本(原)

分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上时间方便整理 2.取数据库:抓取数据库名称,我用的awk和grep配合取数据库的名称(如果想按照表备份可以再细化一下)注意要用mysql -e选项 这样才能做成脚本 3.系统环境变量:因为用到了函数,所以非系统内置的命令 最好在脚本里面用 . /etc/profile  把系统当前的环境变量传过来

mysql数据库基本操作以及备份与优化

1.基本查看及登录: mysql -uroot -p show  databases;  ##查看数据库 use mysql;   ##进入数据库mysql show tables;  ##查看表 desc user;  ##查看表的结构,表头 2.表的操作:查,改,删,增 select * from  user \G;  ##查询user表中的所有数据记录 select host,user,password from user;  ##指定user表的字段进行查询 update mysql.u

MySql进阶

[MySql进阶] 1.Order By 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列. 默认情况下,它是按升排列. 实例: 2.Join语法 Join不是一个关键字 3.Left Join MySQL left join 与 join 有所不同. MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据. 以上实例中使用了LEFT JOIN,该语句会读取左边的数据表tutorials_tbl的所有选取的字段数据,即便在右侧表tcount_tb

[MySQL Reference Manual] 7 备份和恢复

7. 备份和恢复 本章主要会介绍: 1.备份的类型:逻辑备份,物理备份,全备和增量4种 2.创建备份的方法 3.还原方法,包括还原到时间点 4.备份计划,压缩和加密 5.表维护,恢复损坏的表 7. 备份和恢复... 1 7.1备份和还原类型... 1 7.1.1 物理备份VS逻辑备份... 1 7.1.2 Online VS OFFLINE. 1 7.1.3 本地VS远程... 1 7.1.4 快照备份... 1 7.1.5 全备VS增量备份... 1 7.1.6 完全恢复VS时间点(增量)恢复

模拟mysql&keepalived 主主备份故障切换测试

模拟mysql&keepalived 主主备份故障切换 模拟mysql&keepalived 主主备份故障切换测试

MYSQL技巧|为了方便备份和安全,MySQL数据库存放目录如何更改?

本文标签:  MYSQL技巧 MySQL数据库   互联网杂谈 我们在安装玩MYSQL后,数据库存放目录默认是在MYSQL里面的,为了方便备份和安全,我们是有必要更改MySQL数据库存放目录的.那么,要怎么更改呢? 打开cmd命令提示符窗口,输入命令停止MySQL服务运行 net stop mysql 打开X:\Server_Core\MySQL\my.ini, 找到: Datadir = "X:\Server_Core\MySQL\data" 修改为: Datadir = "

企业Shell实战-MySQL分库分表备份脚本

本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.html 企业Shell实战-MySQL分库分表备份 今天是2015年的最后一天,大家都开心的跨年,而我还在苦逼的呵呵-省略 此处内容来自老男孩教育oldboy以及老男孩26期王续精彩分享整理而来  为表示感谢,特整理此篇博文分享给大家! 项目联系笔者QQ:572891887   也可以加入架构师交流群: