mysql进阶(一) mysql备份

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
备份的目的:
     实现灾难恢复:误操作、硬件故障、软件故障、自然灾害、黑客攻击
     
注意的要点:
     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  - 'FLUSH LOGS;'         #进行日志滚动
             mysql  - uroot  - p123.com  - 'SHOW MASTER STATUS;' > / tmp / test.`date  + % F`
                   #记录二进制日志位置
         3 、创建LVM快照
             lvcreate  - 1GB  - - n test_snap  / dev / vg_test / lv_test
                     - 1G          #快照大小,一般和数据文件差不多
                     - s           #表示创建快照 
                 - n test_snap   #快照名
             / dev / vg_test / lv_test    #要创建快照的逻辑卷
         4 、释放全局锁
             mysql> UNLOCK TABLES;
             
         5 、挂载快照卷
             mount  / dev / vg_test / test_snap  / mnt
             
         6 、备份数据并删除快照卷
             cp  - / mnt / date / mysql  / tmp        #复制数据文件
             umount  / mnt                 #卸载快照卷
             lvremove  / dev / vg_test / test_snap    #删除快照
             
         7 、制定好备份计划,每隔一段时间对二进制文件进行备份
             每隔一段时间对mysql的二进制文件进行备份,以实现将来的基于时间点还原数据
                 例:cp  - / data / mysql - bin . 000007  / tmp / mysql_7.sql   #备份二进制日志
                 
     8 、还原
             还原时只需要将数据文件复制到mysql的数据目录中,在使用二进制日志对数据进行时间点还原
         例:cp  - / 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 / *               #修改权限
                 
                 
 
    


本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1934238
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入
【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入
46 0
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
39 0
|
2月前
|
机器学习/深度学习 SQL 关系型数据库
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
34 0
|
3月前
|
关系型数据库 MySQL 数据库
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
132 0
|
3月前
|
关系型数据库 MySQL 数据库
rds备份与恢复
rds备份与恢复
54 3
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL进阶之路丨第十五篇】一文带你精通MySQL数据的导入与导出
【MySQL进阶之路丨第十五篇】一文带你精通MySQL数据的导入与导出
50 0
【MySQL进阶之路丨第十五篇】一文带你精通MySQL数据的导入与导出
|
2月前
|
SQL 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
187 7
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
2月前
|
SQL 关系型数据库 MySQL
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
|
2月前
|
存储 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
21 7