MySQL备份的原因1. 灾难恢复

2. 审计

3. 测试1234512345

mysql的备份类型1. 根据服务器的在线状态:

热备:服务器处于运行状态

冷备:服务器出去停止状态

温备:服务器处于半离线状态,只能读,但是不能写

2. 根据备份的数据集:

完全备份:备份整个数据库

部分备份:备份某个表

3. 根据备份时的接口:

物理备份:直接将数据库文件从磁盘上复制出来

逻辑备份:把数据从数据库中提取出来备份成文本文件

4. 根据数据量进行备份:

完全备份:备份从创建数据库到目前为止的数据

增量备份:备份从上次进行完全备份结束到目前为止的数据

差异备份:1234567891011121314151612345678910111213141516

MySQL备份对象数据+配置文件+代码(存储过程等)+os相关的配置文件(如crontab配置计划及脚本)11

使用mysqldump工具进行数据备份和恢复1. mysqldump命令格式

a.备份多个或者一个数据库

mysqldump [option] --database db_name1 db_name2...

b.备份某个数据库中的某张表

mysqldump [option] db_anme table1 tables2 ...

c.备份全部数据库

mysqldump [option] --alldatabases

2. option

-u user:指定以哪个用户的身份进行备份    -p password:指定用户的密码    -h host:指定备份的数据库

--local-all-tables:请求锁住所有备份的表    --local-tables:备份那张表锁住那张表    --single-transaction:能够对InnoDB存储引擎实现热备。(不常用)

--events:备份事件调度器    --routines:备份存储过程和存储函数    --triggers:备份触发器

--flush-log:备份前,请求到锁之后滚动日志

3. 常用备份格式

mysqldump -uroot -p -h --database|db_name|--all-databases db_name|table --local-tables --flush-log

4. 恢复备份

a.关闭当前session的sql_log_bin

b.mysql

c.开启二进制文件日志1234567891011121314151617181920212223242526272829303112345678910111213141516171819202122232425262728293031

mysqldump备份测试备份数据库wordpress

库中表的列表

mysql> show tables;

+-----------------------+

| Tables_in_wordpress   |

+-----------------------+| wp_commentmeta        || wp_comments           || wp_links              || wp_options            || wp_postmeta           || wp_posts              || wp_term_relationships || wp_term_taxonomy      || wp_termmeta           || wp_terms              || wp_usermeta           || wp_users              |+-----------------------+12 rows in set (0.00 sec)1234567891011121314151617181920212212345678910111213141516171819202122备份整个数据库

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复

备份集中数据库备份与现有的test数据库不同_数据库_02

还原刚才备份的数据库

备份集中数据库备份与现有的test数据库不同_服务器_03

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_04

使用xtrabackup工具进行备份1. 下载安装xtrabackup

[[email protected] ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm

[[email protected] ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64//libev-4.03-3.el6.x86_64.rpm

[[email protected] ~]# yum install libev-4.03-3.el6.x86_64.rpm

[[email protected] ~]# yum install --skip-broken percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm

2. 备份后生成的文件    xtrabackup_checkpoints:记录备份类型,备份状态,lsn(日志序列号)等信息。

xtrabackup——binary:备份中用到的xtrabackup的可执行文件    xtrabackup_binlog_info:当前服务器正在使用的二进制日志文件及备份道这一刻的时间位置    xtrabackup_binlog_pos_innodb:二进制文件的但前position

backup_my.cnf:备份命令用到的配置选项信息。12345678910111213141234567891011121314

1. 完全备份和恢复格式:>innobackupex --user=  --password= --apply-log /path/to/back_dir/结果:completes ok!1212

测试完整备份数据库

备份集中数据库备份与现有的test数据库不同_mysql_05

备份集中数据库备份与现有的test数据库不同_mysql_06

备份集中数据库备份与现有的test数据库不同_服务器_07

测试恢复格式:

>innobackupex --user= --password= --copy-back /path/to/back_dir/1212

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_08

创建新文件讲原有数据库全部移到目录下

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_09

恢复

备份集中数据库备份与现有的test数据库不同_数据库_10

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_11

增量备份格式:    #innobackupex --incremental /path/to/back_dir --incremental-basedir=以那个备份文件伪基础

还原:将增量备份整合道完全备份上去

先准备完全备份:        #innobackupex --apply-log --redo-only   完全备份路仅(base-dir)

在准备第一次增量备份:        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=one_base_dir

在准备第二次增量备份:        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=two_base_dir        ..

..      。

恢复:    >innobackupex --copy-back base-dir12345678910111213141234567891011121314

a.第一次完整备份

备份集中数据库备份与现有的test数据库不同_数据库_12

操作数据库增加数据

备份集中数据库备份与现有的test数据库不同_数据库_13

第一次增量备份

备份集中数据库备份与现有的test数据库不同_数据库_14

备份集中数据库备份与现有的test数据库不同_mysql_15

准备完全备份

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_16

准备第一次增量备份文件

备份集中数据库备份与现有的test数据库不同_数据库_17

恢复

备份集中数据库备份与现有的test数据库不同_mysql_18

结果

备份集中数据库备份与现有的test数据库不同_linux mysql集群 备份与恢复_19

备份集中数据库备份与现有的test数据库不同_数据库_20

xtrabackup进行表的导入和导出在进行表的导出时,需要启用服务器的innodb_file_per_table这个选项。

在进行表的导入时,需有启用服务器的innodb_file_per_table和innodb_expand_import选项

导出表

innobackupex --apply-log --export /path/base_dir

此命令会为每个innodb表空间创建一个.exp结尾的文件,这个文件可以导入其他服务器

导入表:

1,在服务器上创建一个与此结构相同的表。

2,然后删除此表的表空间:        alter table 表 discard tablespace;    3,将.exp文件复制到数据库服务器的数据目录中,然后进行一下命令:        alter table 表 import tablespace;