精华内容
下载资源
问答
  • 代码为springBoot下对mysql数据库进行备份与恢复,代码为本人项目使用,绝对可用,若有疑问,可联系
  • MySQL数据库备份与恢复

    千次阅读 2020-10-13 10:32:25
    一、数据库备份概述 1.数据备份的重要性 2.造成数据丢失的原因 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾、地震)和盗窃 3.数据库备份类型 一、按照数据库的运行状态分类: (1)热备:在数据库运行时,...

    一、数据库备份概述

    1.数据备份的重要性

    2.造成数据丢失的原因
    程序错误
    人为操作错误
    运算错误
    磁盘故障
    灾难(如火灾、地震)和盗窃
    3.数据库备份类型

    一、按照数据库的运行状态分类:
    (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响

    (2)冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可。

    (3)温备:同样是在数据库运行的时候进行备份的,但对当前数据库的操作会产生影响。(只可以读操作,不可以写操作)
    数据库热备与冷备的优缺点:
    热备份的优点:

    1.可在表空间或数据文件级备份,备份时间短。
    2.备份时数据库依然可以使用。
    3.可达到秒级恢复,能够恢复到某一个时间点上。
    4.恢复的速度很快,在大多数情况下在数据库工作时就可恢复。
    5.几乎所有的数据库实体都可以进行恢复。

    热备份的缺点:

    1.尽量不要出错,否则后果会很严重。
    2.如果热备份不成功,所得结果不可用于时间点的数据恢复。
    3.维护的工作比较困难。

    冷备份的优点:

    1.是非常快速的备份方法,因为只需要拷贝文件即可
    2.容易归档,容易恢复到某个时间点上(只需将文件再拷贝回去即可)
    3.能与归档方法相结合,作数据库(最新状态)的恢复。
    4.容易维护,且比较安全。

    冷备份的缺点:

    1.单独使用时,只能提供到"某一时间点的上"的恢复。
    2.再实施备份的全过程中,数据库必须是关闭状态。
    3.不能按表或按用户恢复。

    二、按照备份方式分类

    物理备份:
    直接复制数据文件进行的备份
    优点:不需要其他的工具,直接复制就好,恢复直接复制备份文件即可
    缺点:与存储引擎有关,跨平台能力较弱

    逻辑备份:
    从数据库中导出数据另存而进行的备份
    优点:能使用编辑器处理,恢复简单,能基于网络恢复,有助于避免数据损坏
    缺点:备份文件较大,备份较慢,无法保证浮点数的精度,使用逻辑备份数据恢复后,还需要手动重建索引,十分消耗cpu资源。

    三、按照业务划分

    (1)完全备份
    即对整个数据库的数据和数据结构进行备份。
    (2)增量备份
    每次备份的数据只是相当于上一次备份后增加的和修改过的数据。
    (3)差异备份
    每次备份的数据是相对于上一次全备份之后新增加的和修改过的数据。

    MySQL数据库完全备份操作

    关闭mysql服务—创建备份数据存储路径—使用tar创建备份文件–模拟故障–恢复数据

    关闭mysql服务—创建备份数据存储路径—使用tar创建备份文件
    [root@www ~]# systemctl stop mysqld

    [root@www ~]# netstat -anput | grep mysqld

    [root@www ~]# mkdir /backup

    在这里插入图片描述

    归档时最好切换到目标目录路径
    [root@www ~]# cd /usr/local/mysql/
    [root@www ~]# tar zcf /backup/mysql_all-$(date +%F).tar.gz data/

    在这里插入图片描述
    模拟故障—将数据全部迁移,查看是否能够启动
    [root@www ~]# mkdir bak
    [root@www ~]# mv /usr/local/mysql/data/ bak/
    [root@www ~]# systemctl start mysqld

    在这里插入图片描述
    恢复数据
    [root@www ~]# mkdir restore

    [root@localhost ~]# tar xf /backup/mysql_all-2020-10-10.tar.gz -C restore/
    [root@localhost ~]# mv restore/data/ /usr/local/mysql/
    [root@localhost ~]# systemctl start mysqld
    [root@localhost ~]# netstat -anput | grep mysqld
    tcp6 0 0 :::3306 ::😗 LISTEN 31957/mysqld

    在这里插入图片描述
    成功恢复

    2.mysqldump备份与恢复—常用于温备份
    将指定的库导出为SQL脚本

    备份数据库auth
    [root@www ~]# mysqldump -u root -p123 --databases mysql >mysql.sql
    模拟故障:删除数据库auth
    [root@www ~]# mysql -u root -p123 -e ‘drop database mysql;’

    查看数据库是否删除
    [root@www ~]# mysql -u root -p123 -e ‘show databases;’

    恢复数据库mysql
    [root@www ~]# mysql -u root -p123 < mysql.sql

    查看是否已恢复
    [root@www ~]# mysql -u root -p123 -e ‘show databases;’

    在这里插入图片描述
    已恢复

    在这里插入图片描述

    MySQL数据库增量备份与恢复

    增量备份的优点是没有重复数据,备份量不大,时间短。缺点也很明显,需要上次完全备份及完全备份之后所有的增量备份才能恢复,反推恢复,操作较为繁琐。

    Mysql没有提供增量备份的方法,但是可以通过二进制日志间接实现增量备份。

    二进制日志对备份的意义如下:
    1)二进制日志保存了所有更新或者可能更新数据库的日志文件

    2)二进制日志在启动Mysql服务器后开始记录,并在文件达到max_binlog_size 所设置的大小或者接收到的flush logs命令后重新创建新的日志文件。

    3)只需要定时执行flush logs 方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份。

    开启数据库二进制日志功能

    编辑主配置文件
    [root@www ~]# vim /usr/local/mysql/my.cnf

    [mysqld]

    log_bin=/usr/local/mysql/mysql-bin

    重启服务
    [root@www ~]# systemctl restart mysqld

    查看生成的日志文件
    [root@www ~]# ls -l /usr/local/mysql/mysql-bin.*

    在这里插入图片描述
    在这里插入图片描述
    一般恢复
    添加数据–进行完全备份—录入新的数据—进行增量备份–模拟故障–恢复操作
    进入MySQL
    mysql> create database client;

    mysql> use client;

    创建表user_info
    mysql> create table user_info(身份证 char(20) not null,姓名 char(20) not null, 性别 char(4), 用户ID号 char(10) not null, 资费 int(10));

    写入数据到表user_info
    mysql> insert into user_info values(‘000006’,‘张’,‘男’,‘016’,‘10’);

    mysql> insert into user_info values(‘000007’,‘李’,‘女’,‘017’,‘91’);

    mysql> insert into user_info values(‘000008’,‘王’,‘女’,‘018’,‘23’);

    mysql> select * from client.user_info;

    在这里插入图片描述

    在这里插入图片描述

    备份表user_info
    [root@www ~]# mkdir /mysql_bak

    [root@www ~]# mysqldump -uroot -p123 client user_info > /mysql_bak/client_userinfo-$(date +%F).sql

    在这里插入图片描述
    继续写入测试数据
    mysql> use client;

    mysql> insert into user_info values(‘000009’,‘赵’,‘男’,‘019’,‘37’);

    mysql> insert into user_info values(‘000009’,‘孙’,‘男’,‘020’,‘36’);

    mysql> select * from client.user_info;

    在这里插入图片描述
    刷新生成新的日志文件
    [root@www ~]# mysqladmin -uroot -p123 flush-logs

    在这里插入图片描述
    模拟故障:删除表user_info
    [root@www ~]# mysql -uroot -p -e’drop table client.user_info;’

    [root@www ~]# mysql -uroot -p123 -e’select * from client.user_info;’
    [root@localhost ~]# mysql -uroot -p123 client < /mysql_bak/client_userinfo-2020-10-10.sql

    [root@localhost ~]# mysql -uroot -p123 -e’select * from client.user_info;‘

    在这里插入图片描述
    [root@localhost ~]# mysqlbinlog --no-defaults /usr/local/mysql/mysql-bin.000001 | mysql -uroot -p123

    [root@www ~]# mysql -uroot -p123 -e’select * from client.user_info;’

    基于位置恢复
    模拟删除
    [root@www ~]# mysql -uroot -p -e’drop table client.user_info;’

    [root@www ~]# mysql -uroot -p123 -e’select * from client.user_info;’

    [root@www ~]# mysql -uroot -p123 client < /mysql_bak/client_userinfo-2019-03-25.sql

    在这里插入图片描述
    查看二进制日志文件确定恢复的位置或时间。
    mysqlbinlog --no-defaults /usr/local/mysql/mysql-bin.000001
    在这里插入图片描述
    指定‘停止位置’,即不恢复‘孙’的用户数据
    [root@localhost ~]# mysqlbinlog --no-defaults --stop-position=‘456’ /usr/local/mysql/mysql-bin.000003 | mysql -u root -p123
    [root@localhost ~]# mysql -uroot -p123 -e’select * from client.user_info;’

    在这里插入图片描述
    基于时间点恢复
    [root@localhost ~]# mysqlbinlog --no-defaults --start-datetime=‘2020-10-10 10:07:49’ /usr/local/mysql/mysql-bin.000003 | mysql -u root -p123
    mysql -uroot -p123 -e’select * from client.user_info;’

    在这里插入图片描述

    展开全文
  • Mysql数据库备份与恢复

    千次阅读 2019-07-31 17:34:04
      在mysql备份当中,我们一般有两种备份方法,一种叫逻辑备份mysqldump,另一种是物理备份xtrabackup。   mysql提供了四种备份工具。逻辑备份工具有mysqldump、mysqlpump、mydumper,其中mysqldump是单线程备份...

      在mysql备份当中,我们一般有两种备份方法,一种叫逻辑备份,另一种是物理备份。
      mysql提供了四种备份工具。逻辑备份工具有mysqldump、mysqlpump、mydumper,其中mysqldump是单线程备份工具,备份速度慢。Mysqlpump、Mydumper是多线程备份工具。物理备份工具为xtrabackup。

    (1)逻辑备份

      从库是通过读取日志记录来追赶主库的形式来形成备份的,在我们搭建好主从数据库后,对于逻辑备份而言,第一次一般都要先执行一遍mysqldump,其中注意的参数有①master-data,一般设置为2用来开启dump过程中记录主库的binlog和pos点(下面的点位),并在dump文件中注释掉,一般在用到主从时用到这个参数。②–single-transaction用来保证备份的一致性,设置本次会话的隔离级别为REPEATABLE READ可重复读,以确保本次会话(dump)时不会看到其他会话已经提交的数据。
      之所以在第一次在逻辑备份的时候要执行一次mysqldump,是因为我们日志的大小或者存储的时间是有限定的,假设主库已经存了500G的实例,而从库为0,主库的日志只存了近两天的记录,而我们从库就不能通过读主库的日志来进行备份了,就必须手动dump一下先把这500G的数据让从库去追,追上后然后才开始慢慢读主库的日志来进行备份。

      脏页:因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存。
    linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。

    下面介绍逻辑备份工具的使用:

    Mysqldump:

      Mysqldump是逻辑备份,可以将数据库备份成一个文本文件,该文件里面包含了sql语句。Mysqldump是单线程备份工具。
      我们使用mysqldump进行备份,用mysql进行恢复。
      可以使用show variables like ‘%log_bin%’来查看log_bin打开状况。
    在这里插入图片描述
      可以使用show variables like ‘%server%’来查看server_id是多少。Server_id是一种标识,用来判断binlog中每条记录是在哪个服务器上产生的,在主主复制架构中可以防止无限复制循环,其实就是mysql进程的标识(因为一台机器可以开多个Mysql进程)
    在这里插入图片描述
      可以使用show master logs查看所有日志情况,每一次的dump都会生成一个binlog:
    在这里插入图片描述
      在binlog中记录了点位情况,从库就是通过点位去找要执行主库的哪一个日志中的哪一条事务。
    首先,我们在主库中创建了一个数据库fxdb1,然后我们去备份这个数据库。在一个文件夹里面执行以下命令:
      mysqldump -h10.236.158.96 -uroot -P9006 -p#77GFMhyp8 --databases fxdb1> fxdb1.sql
    如果我们不加—databases,则我们生成的fxdb1.sql文本里面是没有create database的语句的。

      一致性备份:mysqldump是单线程,先备份A表,再备份B表,再备份C表…,假如A表数据量很大,当A表还没备份完的时候,B表已经更改了数据,此时A表备份完开始备份B表时,B表就不再是之前的数据了,此时就要加上一致性备份。也就是在mysqldump的时候加上–single-transaction参数,设置本次会话的隔离级别为REPEATABLE READ可重复读,以确保本次会话(dump)时不会看到其他会话已经提交的数据。除此之外,还有一个主从的master-data参数,一般设置为2用来开启dump过程中记录主库的binlog和pos点(下面的点位),并在dump文件中注释掉。点位的情况如下:
    在这里插入图片描述
      Ex:每一次的mysqldump都会生成一个日志文件。000003这种是自增的。
      为什么–single-transaction可以达到一致性备份呢:
      在mysql钟可以通过show variables like ‘%isolation%’来查看隔离级别。
    在这里插入图片描述
      我们在调试的时候,可以打开另一个日志文件general_log,他不同于binlog和redolog,他记录的是我们执行的sql语句,一般general_log为关闭状态,因为打开很消耗性能,所以一般是调试的时候才打开,例如这里我们像查看–single-transaction的情况就可以打开查看。general_log一共有三个属性:general_log(on、off)决定打开关闭状态、general_log_file存储的位置、log_output决定general的文件类型(FILE、TABLE)。
    在这里插入图片描述
      现在我们打开general_log后,再执行一次备份,然后查看db01.log可以看到:
    在这里插入图片描述
      结论:–single-transaction会将隔离级别设置为REPEATABLE_READ可重复读,并随后再执行一条START TRANSACTION语句,让整个数据再dump过程钟保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表,就是对其他用户的操作不会有影响。而对于myisam而言,就会锁表,毕竟他没有事务。

    增量恢复: 我们在备份的时候,数据库也在不断运行,假如我们在数据库的最新点进行一致性备份,备份了一分钟,但是在这一分钟里数据库在不断运行,一分钟后原来的最新点就不再是最新点了,那么如果此时数据库挂掉了,那么增加的那一部分的恢复就需要用到增量恢复。
      增量恢复:备份+binlog。
      也就用全备份的数据+binlog读取新增的数据来实现增量恢复。
    在这里插入图片描述
      而这个binlog日志文件可以在mysql的目录下看(一般在/var/lib/mysql),里面存放的有很多binlog日志文件。当我们主库宕机了,那么我们就需要用备份文件恢复,然后再用日志文件进行增量恢复,毕竟日志先行,日志都落地到磁盘里了的。

    mysqlpump

      也是逻辑备份工作,是多线程备份工具,他主要特点是:
      ① 多线程只能到表级别,单表备份还是单线程。一个库里面可以同时备份多张表,而mysqldump一次只能备份一张表。
      ② 并行备份数据库和数据库中的对象,加快备份过程。
      ③ 备份出来直接生成压缩后的备份文件。
      ④ 重新加载(还原)备份文件时,是先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。因为如果是先建表再建立索引再插入数据的话,那么一边插入数据一边会维护索引。

      这里我们写一次mysqlpump备份的语句,之后的备份语句就不再写了,都差不多:
      Mysqlpump -uroot -p123456 –default-character-set=utf8mb4 –databases fxdb1 > fxdb1.sql
      我们查看他的备份sql文件fxdb1.sql可以看到:
    在这里插入图片描述
      他是创建一张表后,再创建一张表,然后再给第一张表插入数据,最后再给第二张表插入数据。这里就和mysqldump不一样,在mysqldump中就是创建一张表,然后插入数据,然后再创建第二张表,再插入数据。
      无论是mysqldump还是mysqlpump还是其他,我们想要看他有哪些参数,可以通过mysqlpump –help > help.txt 然后查看help.txt可以得到参数。
      通过翻阅参数可以看到,想要压缩我们mysqldump出来的sql文件,他不是自动压缩,是需要我们带参数他才会帮我们压缩,参数为–compress-output=name,还有其他参数如下:
      ① --compress-output=name压缩参数,name可以为LZ4
      ② --default-parallelism=# 开启几个线程去执行,默认是2个线程,这里#可以设置成3,4更多。
      其他参数和mysqldump差不多。
      例如上面mysqlpump的逻辑备份语句可以写成:
    Mysqlpump -uroot -p123456 –default-character-set=utf8mb4 --compress-output=LZ4 --default-parallelism=4 --databases fxdb1 > fxdb1.sql
      此时我们再看fxdb1.sql会发现里面引入了压缩:
    在这里插入图片描述
      那么我们需要对fxdb1.sql进行解压。
      Mysqlpump解决一致性问题也是–single-transactio

    mydumper

      mydumper是多线程的备份工具,单表也可以多线程备份。要使用mydumper的话需要下载。
      备份命令是mydumper,恢复命令是myloader。
      Mydumper是通过–outputdir参数把备份文件放到一个目录里,而不是像之前的mysqldump这些是存放到一个sql文件中:
      mydumper -uroot -p123456 –database fxdb1 –outputdir fxdb1
      这里变成了database而不是之前的databases,说明只可以一个数据库进行备份。就是把fxdb1数据库备份到fxdb1这个目录中。在这个目录中包含多个sql文件(metadata文件、每一张表都会对应两个sql文件表结构文件和表数据文件、数据库结构文件)。这里特别注意的是还有一个metadata文件,这里面记录的是点位信息:
    在这里插入图片描述
      当然,使用mudumper也可以备份所有的数据库,也就是我加 --database这个参数,默认的是备份所有数据库。他跟前面的mysqldump就不一样,mysqldump可以指定备份哪些数据库,这个要么备份一个,要么备份全部。如果非要用mydumper备份指定的哪些数据库,则可以用–regex来写正则表达式实现。
      如果要备份数据库中的一些表,则使用–tables-list 表名1,表名2
      对于mydumper,要解决一致性问题,使用–less-locking参数来解决。
      如果用mydumper来恢复表,则进入到目录然后再mysql中通过source命令来执行表结构的sql来创建表。
    在这里插入图片描述
      Verbose是输出信息模式。

      以上三种都可以进行增量恢复

    (2)物理备份

      要使用物理备份,首先要让主库的数据高可用,也就是持久化。redolog他是以页为单位记录一页行的变化,他不会记录每一条sql语句是Insert还是update,所以redolog的大小很小。任何的数据库操作都要遵循“日志先行”,这里的日志就是指的redolog:也就是说当我们主库insert后,要保证数据库的高可用,肯定要持久化,但是面对大量的数据,你去insert或者update开销很大,所以此时不能用数据做到同步,我们去同步的是redolog,让redolog先落地(可能存内存,也可能持久化到硬盘上),因为redolog很小,当内存足够时他就放到内存中,已经记录了的redolog在内存足够时不会被删除,这种redolog叫做脏页,就是已经同步过的有效数据,当内存满了再把这些redolog持久化到硬盘上。而对于数据而言,就是通过异步方式落地数据的。所以在我们执行数据库操作时,他一般有两个线程,一个线程记录变化的redolog,另一个线程记录.idb文件。当这些数据记录好后,就可以开始我们的物理备份。
      物理备份的原理和redolog息息相关,当开始物理备份的时候,XtraBackup会开两个线程,一个线程用来一页一页的复制innodb的数据,并且不锁定表。同时,另一个线程用来监控redolog,一旦redolog发生变化就立即把变化过的那一页复制走,因为redolog有大小限制,一旦写满后就会从头再开始写,所以新数据可能会覆盖旧的数据。
      物理备份速度快,但占用空间大,因为是整个库的文件的备份,mysql读数据读的都是文件因此在还原的时候就是把文件还原,让mysql去读文件就好,就不像逻辑备份那样一条条执行sql语句存到文件里。

    Xtrabackup

      物理备份工具是Xtrabackup,它能对InnoDB数据库和XtraDB存储引擎的数据库地备份(不用像MyISAM那样锁表),mysqldump等逻辑备份最大的缺陷是备份和恢复速度较慢。
      物理备份Xtrabackup支持对innodb进行热备、增量备份,mysqldump这些逻辑备份不能做到增量备份,只能做到增量恢复。但是Xtrabackup只能对myisam进行温备,因为在b欸分myisam表时会给myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量(毕竟锁表后就没有增量了)。
      物理备份备份的是整个数据库,不能单独对某一个库某一张表进行备份了。
      Xtrabackup –user=root --password=123456 --backup full(目录)
      此时会产生一个full的文件夹,进入文件夹就会有很多我们数据库备份文件。

      总而言之,逻辑备份备份的是sql文件,在恢复的时候执行备份的sql语句实现数据库数据的重现。而物理备份则是备份数据文件了。

    全库恢复

      命令有两个要执行才能实现全库恢复:
      ① Xtrabackup --apply-log --user-memory=32m full(之前备份的目录)
      ② Xtrabackup --copy-backup full
      一般情况下,再备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已提交但尚未同步到数据文件中的事务。因此此时数据文件仍处于不一致状态。因此此时我们需要用到命令①来避免上面的问题。
      --apply-log的作用是通过回滚未提交的事务以及同步已经提交的事务至数据文件使数据文件处于一致性状态。
      命令②就是进行复制恢复。
      此时我们主库就被恢复了,但还没完,我们需要进行增量恢复,毕竟我们只是备份了执行备份命令时的那些数据,此时主库可能又执行了很多。因此需要通过查看full文件夹里面的log日志和宕机时主库的log日志进行对比来实现增量恢复(日志先行,主库宕机了但是主库的binlog落地到磁盘里了的,可以从磁盘里找)。
      我们可以使用以下命令把binlog日志转成sql文件然后进行恢复:
      mysqlbinlog --start-position=154 mysql-bin.00011 > inc.sql
      Start-position=154是说从154这个位置开始同步,可以查看full文件夹里面的binlog_pos_innodb这个文件来得到:
    在这里插入图片描述

    增量备份

      增量备份的命令:
      Xtrabackup –user=root --password=123456 --incremental-basedir=full --incremental inc
      上面的命令的意思是在我们之前做的全备份的这个目录full下做增量备份,备份的文件放到inc这个文件夹里。
      所以增量备份其实就是把多出来的部分进行备份而已,没啥高大上的。
      我们可以在备份的文件夹里查看xtrabackup_checkpoints文件可以得到备份详情:
    在这里插入图片描述
      Backup_type为备份类型:incremental为增量备份。From_lsn

    展开全文
  • 常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法:MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件。在Linux下数据库文件的存放目录一般为/var/lib/mysql。在Windows下这个目录视...

    常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法:

    MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件。

    在Linux下数据库文件的存放目录一般为/var/lib/mysql。在Windows下这个目录视MySQL的安装路径而定,DiaHosting的技术员一般为客户安装在D:serversoftmysql下。

    如,有一个名为bbs的数据库,那么bbs的数据库文件会存放在/var/lib/mysql/bbs(linux)或者D:serversoftmysqlbbs(Windows)下。

    备份文件前,需要将MySQL服务停止,然后将数据库目录拷贝即可。

    恢复数据数据库时,需要先创建好一个数据库(不一定同名),然后将备份出来的文件(注意,不是目录)复制到对应的MySQL数据库目录中。

    使用这一方法备份和恢复数据库时,需要新旧的MySQL版本一致,否则可能会出现错误。

    备份数据库:

    mysqldump –user=root –password=root密码 –lock-all-tables 数据库名 > 备份文件.sql

    恢复数据库:

    mysql -u root –password=root密码 数据库名 < 备份文件.sql

    (3)使用Web程序

    在这里我们推荐使用“帝国备份王”对MySQL进行备份。

    主要优点:

    1,跨平台。Windows与Linux下各种WEB环境均可以运行。

    2,智能识别编码,解决备份时的乱码问题。

    3,不同的MySQL版本间都可以进行备份和恢复操作。

    4,采用分组备份,即使是超过1G的数据库也可以正常备份。

    登录“帝国备份王”

    用户名:admin

    默认密码:123456

    9c4baf10aa8f537e6d9af87b439dd0ba.png

    第一次登录时程序会自动跳转到数据库的设置页面。

    82524c7df7bead66b2078d3d9db07e64.png

    安全起见,一定要修改默认的登录密码。

    0e398ceb948a2e2f12efe8b31d581395.png

    备份数据库

    2cf8a9f1d91ca9ee636d409e6d378a93.png

    4a991ade92c163a5d56ce569e9862559.png

    016e5dcbc8bf84f6ce0fe0a485810b88.png

    恢复数据库

    如果是在其他机器上恢复,需要将“帝国备份王”的程序以及bdata目录下存放备份数据的目录一起上传至新的机器上。

    22afce89125c01e38cc0580a8a9350dd.png

    5b48ea26c6fa2579a0373bc446fbdad2.png

    e1d486ade0f96562415eb94fe8de7d72.png

    93c8f3701f71d8e8af4dfc148e661bb8.png

    展开全文
  • NULL 博文链接:https://lihong11.iteye.com/blog/1433174
  • 第 8 章 MySQL 数据库备份与恢复 8.1 8.2 8.3 基本概念 常用的备份恢复方法 日志文件 1 备份 petstore 数据库中的 orders 表中数据 到 D 盘要求字段值如果是字符就用双引号 标注字段值之间用逗号隔开每行以 为结束...
  • 一、1 概述 面试DBA只要他能说出 mysqldump后再,再能说出xtrabackup就是完美答案了,说 出mysqldump,不在说话,就PASS,想想就可怕.如果几百G的库用,mysqdump是不是要凉凉了 ...mysql备份的方式一般有两种:冷...


    一、1 概述
    面试DBA只要他能说出 mysqldump后再,再能说出xtrabackup就是完美答案了,说
    出mysqldump,不在说话,就PASS,想想就可怕.如果几百G的库用,mysqdump是不是要凉凉了
    所以生产中我们常用的备份方式就这两种
    1. mysqldump
    2. xtrabackup
    二、 备份方法
    当然我们还是要搞清楚整套的大概备份思路
    mysql备份的方式一般有两种:冷备和热备
    2-1 冷备
    冷备最简单,就是在mysql关闭的情况下,将整个数据库目录给拷贝走.恢复就是将备份的数据库文件替换现在已经有
    的文件.重启mysql服务,就这么简单

    cp xx xxx
    2-2 热备
    热备就是数据库在运行的状态下备份,不影响现有的业务的正常进行
    分为逻辑备份和裸文件备份
     (1)逻辑备份
    逻辑备份就是通过mysqldump,select into outfile,mydump等等来实现的备份
    这些备份方式今天时间比较紧,就不说了.大家可以自行百度
    这个备份方式紧紧推荐备份一些测试数据的时候来用

    MySQL数据的导出和导入工具:mysqldump

    导出数据:

    语法: mysqldump [TMPIONS] database [tables] >导出的文件名.sql

    A:导出所有数据库

    mysqldump -uroot -p123456 -A >all.sql

    mysqldump -uroot -p123456 --all-databases >all2.sql

    参数-A代表所有,等同于—all-databases

    B:导出某个数据库

    mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql  # 注意是-p空格后是数据库名,不是密码。

    mysqldump -uroot -p123456 book >book.sql

    vim book.sql

    C:导出单张表

    mysqldump -uroot -p123456 book books >books.sql  #导出book库books表

    D:导出库的表结构

    mysqldump -uroot -p123456 -d book>booktable.sql  #只导出book库的表结构

    E:只导出数据

    mysqldump -uroot -p123456 -t book>bookdata.sql  #只导出book库中的数据

    F:导出数据库,并自动生成库的创建语句

    mysqldump -uroot -p123456 -B book2 >book2.sql

    mysql -uroot -p123456 < book2.sql  导入不用指定数据名

    导入数据:

    A:导入所有数据库

    mysql -uroot -p123456 <all.sql

    B:导入数据库

    Mysql -uroot -p123456 book <book.sql  #如果导入时,没有对应的数据库,需要你手动创建一下:mysql> create database book;

    使用source导入

    mysql> create database book;

    mysql> use book;

    mysql> source /root/book.sql

    c:导入表

    mysql> drop table books;

    mysql> source /root/books.sql;   ##导入表时,不需要重新,创建表。要先进到相应的数据库中

    mysql> select * from books;

    D:导入表结构和数据

    mysql> create database book;

    mysql -uroot -p123456 book<booktable.sql

    mysql -uroot -p123456 book<bookdata.sql

    2. xtrabackup

    针对InnoDB存储引擎,MySQL本身没有提供合适的热备工具

    Xtrabackup包括两个主要工具:Xtrabackup和innobackupex:

    Xtrabackup只能备份InnoDB和XtraDB两种引擎表,而不能备份MyISAM数据表。

    innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。Xtrabackup做备份的时候不能备份表结构、触发器等等,智能区分.idb数据文件。另外innobackupex还不能完全支持增量备份,需要和xtrabackup结合起来实现全备的功能

    xtrbackup 安装 (mysql5.7.20需安装最新版XtraBackup2.4.9)

    下载安装包

      [root@xuegod70 ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar

    解压包

    [root@146 ~]# tar -xvf Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar 

    Yum安装并解决依赖:

    yum -y install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 

    注意:安装完成以后记得更改你的 /etc/my.cnf  配置文件制定数据目录,因为Xtrabackup是根据你的/etc/my.cnf配置文件来获取你备份的文件,比如在/etc/my.cnf的[mysqld] 下添加datadir=/var/lib/mysql,然后重启mysql

     

    xtrbackup使用

    我们一般使用innobackupex脚本

    innobackupex是perl脚本对xtrabackup的封装,和功能扩展。

    备份准备工作:

    权限和链接

    xtrabackup需要连接到数据库和datadir操作权限。

    xtrabackup或者innobackupex在使用过程中涉及到2类用户权限:

    1.系统用户,用来调用innobackupex或者xtrabackup

    连接到服务:innobackupex或者xtrabackup通过—user和—password连接到数据库服务

    $ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/

    $ innobackupex --user=LUKE  --password=US3TH3F0RC3 --stream=tar ./ | bzip2 -   压缩

    $ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/bkps/

     

     

     


    三、 其他的一些备份方式
    表空间传输
    5.6+版本的表空间传输,可以把一张表从一个数据库移动到另一个数据库或者另一台机器上.这种方式一般用来做大
    表的迁移.
    利用binlog2sql进行闪回

     

    windos下数据库备份

    (1)新建一个文件备份的bat文件 mysqlback.bat   

     精简版配置

    set dateTime=%date:~0,4%%date:~5,2%%date:~8,2%
    mysqldump  -uroot -proot   securityd > E:\mysqlback\securityd%dateTime%.sql

    (2.)测试 直接用下面的文件 改用户名密码 路径  最好先配置mysql的环境变量

    (遇到问题: 备份的文件试空的 0kb 解决:他是找不到mysqldump ,配置mysql的环境变量就可以了)

     先直接运行看能不备份成功之后再做定个定时任务就可以了

    (3)做个任务计划

     

    详细的配置

    rem ========================MySQL backup start========================
    @echo off
     
    ::设置变量
    ::拼接时间参数
    set dateTime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
    ::早上10点以前时间变量中会出现空格,把时间变量中的空格替换为0
    set "dateTime=%dateTime: =0%"
    ::本机安装的mysql的bin目录路径
    set mysqlBinPath=C:\Program Files\MySQL\MySQL Server 5.7\bin\
    ::备份文件存储的目标路径
    set backupPath=F:\MySQL_bakup
    ::备份文件的名字前半部分-后半部分使用的是上面的时间参数
    set backupFileName=MyTestDB_
    ::备份文件的保存天数
    set days=7
    ::要备份的数据库服务器的ip
    set host=172.168.10.11
    ::要备份的数据库服务器的端口
    set port=3306
    ::要备份的数据库登录名
    set user=root
    ::要备份的数据库登录密码
    set password=123456
    ::要备份的数据库名
    set dbName=MyTestDB
    ::默认的字符集
    set charSet=utf8
     
     
    ::根据上面设置的days参数删除以前的备份数据
    forfiles /p "%backupPath%" /m %backupFileName%*.sql /d -%days% /c "cmd /c del @path"
     
    ::进入mysql安装目录的bin目录下
    cd %mysqlBinPath%
    ::执行备份操作
    mysqldump --opt --single-transaction=TRUE --user=%user% --password=%password% --host=%host% --protocol=tcp --port=%port% --default-character-set=%charSet% --routines --events %dbName% > %backupPath%\%backupFileName%%dateTime%.sql
     
    @echo on
    rem ========================MySQL backup end========================

     

    展开全文
  • MySQL数据库备份与恢复.pdf
  • 网站数据对我们对站长来说都是最宝贵的,我们平时应该养成良好的备份数据的习惯。
  • 数据备份的重要性 造成...完全备份:每次对数据进行完整的备份,即对整个数据库备份数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础,完全备份备份与恢复操作都非常..
  • MySQL 数据库备份恢复
  • 剖析MySQL数据库备份与恢复.pdf
  • MySQL数据库备份与恢复[参考].pdf
  • Mysql数据库备份与恢复

    千次阅读 2020-12-08 18:00:01
    Mysql数据库的备份与恢复一、Mysql数据库备份的相关概述二、数据库备份的类型- 从物理和逻辑角度划分- 备份策略的三种角度- 数据备份的方法三、mysql数据库的备份操作(1)物理冷备份与恢复(2)使用mysqldump实现...
  • 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段 一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源 一、MySQL ...
  • 备份:mysqldump -u userName -p dataBaseName > ...备份所有数据库:mysqldump -u userName -p --all-databases > fileName.sql 如果需要压缩导出的sql文件:mysqldump -u userName -p dataBaseName | gzip -9
  • mysql命令行备份恢复数据库
  • Mysql数据库备份恢复总结

    千次阅读 2020-06-22 15:43:28
    前言:数据库备份是我们服务端开发经常遇到的问题。为了用户体验,我们要尽量减少服务器备份时的损失。所以备份时间尽量选在半夜,而且要尽量减少备份所用的时间。 一、数据库备份的目的 做灾难恢复:对损坏的数据...
  • MySql数据库备份与恢复——使用mysqldump 导入导出方法总结 mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个sql服务器(不一定是一个mysql服务器)。 转储包含创建表和/或装载表的sql...
  • MySQL数据库备份可以分为逻辑备份和物理备份,逻辑备份工具主要为:mysqldump而物理备份工具主要为:xtrabackup,两种备份方式各有优缺点 备份工具 mysqldump xtrabackup 优点 支持热备份和增量备份,需要...
  • 有些时候需要在MySQL命令行中进行数据库备份的操作,这时我们就需要对MySQL命令有所了解,基本格式... 文件名.sql备份MySQL数据库的命令mysqldump -hhostname -uusername -ppassword databasename > backupfile...
  • 1. 导出备份语句select into.outfile在MySQL中可以使用select intooutfile语句把表数据导出到一个文本文件中进行备份并可使用load data.infile语句来恢复先前备份的数据这种方法有一点不足就是只能导出或导人数据的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,962
精华内容 45,184
关键字:

mysql数据库备份与恢复

mysql 订阅
友情链接: laila.rar