mysql 备份

MySQL 备份

老师笔记

MySQL 备份精编版
老师笔记

方法 解决无法进行逻辑备份(mysqldump),提示索引用户为免密登录的报错

原理图

MySQL 逻辑备份 mysqldump

备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。
效率相对较低
mysqldump的优势:
可以查看或者编辑十分方便,它也可以灵活性的恢复之前的数据。
不关心底层的存储引擎,既适用于支持事务的,也适用于不支持事务的表。
不过它不能作为一个快速备份大量的数据或可伸缩的解决方案。如果数据库过大,即使备份步骤需要的时间不算太久,但有可能恢复数据的速度也会非常慢,因为它涉及的SQL语句插入磁盘I/O,创建索引等等。 对于大规模的备份和恢复,更合适的做法是物理备份,复制其原始格式的数据文件,可以快速恢复

用法

mysqldump  -h 服务器  -u用户名  -p密码   数据库名  > 备份文件.sql

/*查看帮助*/
mysqldump --help

常见参数

--single-transaction备份前启用一个事务,保证数据一致性。
仅对 InnoDB 存储引擎有效。还有需要保证没有其他的连接正在使用以下语句: ALTER TABLE, CREATE TABLE,DROP TABLE, RENAME TABLE, TRUNCATE TABLE
-l, --lock tables对于不支持事务的存储引擎的表备份使用此选项,比如 MySAM, 可以保证备份期间的数据一致性。会依次对正在备份的每个数据库中的所有表进行锁表操作,此时只可以读。和 --single-transaction 互斥。
-x, --lock-all-tables锁定所有数据库中的所有表。这是通过在整个转储期间采用全局读锁来实现。

mysqldump --databases db1 db2 db3 > `date +%FT%H_%M_%S`dump_all.sql
                               备份数据库
mysqldump db1 t1 t3 t7 > dump.sql            备份指定库的指定几个表


 
mysql -uroot -p123456   db1  < dump.sql          恢复数据库

source dump.sql          在mysql中恢复数据库

有些表需要先创一个数据库才能恢复进去    

mysql -uroot -p'QFedu123!' -e "create database servers" < dum.mem

MySQL 物理备份: Innobackupex 和 xtrabackup(热备)

Percona XtraBackup是一款基于MySQL的热备份的开源实用程序,它可以备份5.1到5.7版本上InnoDB,XtraDB,MyISAM存储引擎的表, Xtrabackup有两个主要的工具:xtrabackup、innobackupe

确保安装 EPEL 源
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安装 libev
为了成功安装Percona XtraBackup libev包需要先安装。
yum  install -y libev

安装Percona存储库
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

测试存储库的可用性
shell> yum list | grep percona


安装软件
shell> yum install percona-xtrabackup-24

验证安装
rpm -qa | grep percona

物理备份数据库以及还原步骤

1、将所有库进行物理备份

 xtrabackup --backup --user=root --password='QFedu123!'  --target-dir=/backup/full   (mkdir -p /backup/full)

xtrabackup_logfile  记录操作过程的日志,事件

2、停止数据库服务

systemctl stop mysqld

3、清理环境

rm -rf /var/lib/mysql/*

4、将原来备份好的物理数据进行复原

xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backup/full

5、修改属主权限

chown mysql.mysql -R /var/lib/mysql

6、启动数据库查看是否还原

systemctl start mysqld

增量备份

image

1、创建增量备份
要进行增量备份,请像往常一样以完整备份开始, 使用下面的命令创建基础的全量备份。

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/base

现在您已拥有完整备份,以后可以根据它进行增量备份。

2、使用以下命令进行增量备份:

shell> xtrabackup --backup --user=root --password=123 --target-dir=/data/backups/inc1 --incremental-basedir=/backups/base

3、现在可以使用此目录作为另一个增量备份的基础:

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/inc2 --incremental-basedir=/backups/inc1

准备增量备份的数据

增量备份的步骤与完全备份的步骤不同。在完全备份中,执行两种类型的操作以使数据库保持一致:从日志文件中针对数据文件重播已提交的事务,并回滚未提交的事务。在准备增量备份时,必须跳过未提交事务的回滚,因为备份时未提交的事务可能正在进行中,并且很可能它们将在下一次增量备份中提交。您应该使用该 选项来阻止回滚阶段。

xtrabackup --apply-log-only

警告
如果不使用该 选项来阻止回滚阶段,那么增量备份将毫无用处。回滚事务后,无法应用进一步的增量备份。

要准备数据,需要从一开始就准备,现在回想一下我们都有那些备份

/backups/base
/backups/inc1
/backups/inc2
image

1、准备基础备份的数据

shell> xtrabackup --prepare --apply-log-only --target-dir=/backups/base
                           这个参数阻止回滚操作
...省略...
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 13596441
InnoDB: Number of pools: 1
180818 11:56:55 completed OK!

2、把第一次增量备份的数据合并到基础备份的数据中

xtrabackup  --prepare  --apply-log-only  --user=root --password=123  --target-dir=/backups/base  --incremental-dir=/backups/inc1

3.再把第二次增量备份的数据也合并到基础备份的数据中

xtrabackup --prepare --user=root --password=123  --target-dir=/backups/base  --incremental-dir=/backups/inc2
注意: 最后一次操作不需要加 --apply-log-only 参数

4.停止 MySQL 服务,并删除数据目录和日志

systemctl stop mysqld
rm -rf /var/lib/mysql/*

5.开始恢复合并后的全部数据的数据库

 xtrabackup --copy-back  --datadir=/var/lib/mysql  --target-dir=/backups/base/

6、更改数据库目录的权限并启动数据库

chown mysql.mysql -R /var/lib/mysql
systemctl start mysqld
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容