资讯专栏INFORMATION COLUMN

MySQL数据库运维之数据备份01

Simon / 2978人阅读

摘要:注意,是大写的示例示例完成服务器上数据库实例的全量备份检查文件是否正常,这步很很很重要。

上篇文章介绍了MySQL主从复制中常见问题排查。在主从复制架构搭建完成之后,需要定期对数据进行备份,本篇文章开始就来介绍MySQL数据库的数据备份与恢复,由于备份及恢复内容较多,分多个小节介绍,本小节先来介绍MySQL数据库备份的相关概念及mysqldump逻辑备份工具。

1、备份类型
(1)按照备份后的文件来划分

a、物理备份:直接备份数据库文件,常用的有LVM逻辑卷备份,或者直接拷贝压缩数据库数据目录
b、逻辑备份:使用备份工具将数据库中的数据导出为数据库sql脚本或者数据文件

(2)按照是否停止数据库服务划分

a、冷备:备份期间需要停止数据库服务,会造成不可读不可写
b、温备:备份期间不需要停止数据库服务,但是需要锁表,故只能读,不可写
c、热备:备份期间,数据库服务完全不受影响,可读可写

(3)按照备份的周期和备份内容划分

a、完全备份:一次性备份数据库实例中的所有数据
b、增量备份:如果刚进行过一次完全备份,则增量备份就指的是全备之后到当前时间点之间增加的数据;
            如果上次为增量备份,则增量备份指的内容是上次增量之后到当前时间点之间增加的数据
c、差异备份:仅备份上次全量备份之后发生变化的数据,由于比增量备份耗费的磁盘空间更多,故用的比较少

2、备份策略

(1)全量备份+增量备份
(2)全量备份+差异备份

3、备份工具介绍

(1)mysqldump:基于MySQL客户端的一个逻辑备份工具,可实现温备,可以使用-u,-p,-h等选项备份远程数据库上的数据
(2)mysqlhotcopy:基于MySQL客户端的一个物理工具,只可冷备,备份过程中需指定-u,-p,-h,-S等基本参数,这些基本参数的含义和mysql命令对应的参数含义相同
(3)lvm2:基于lvm的物理备份工具,由于是通过对逻辑卷做快照来实现的,所以备份速度极快,可在瞬间完成,可粗略认为是热备
(4)xtrabackup:Percona旗下的一块开源MySQL备份工具,可以实现在线热备和温备

除此之外还有一些其他备份工具,如mysqldumper,PhpMyAdmin等,感兴趣可自己查资料学习。

4、mysqldump逻辑备份基本操作
(1)用法

mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]

(2)常用参数选项OPTIONS

-A,--all-databases:该选项表示备份实例中的所有数据库
-B,--databases:指定要备份的数据库名称,后面可以同时跟多个数据库
-E,--events:表示备份过程中包括数据库中的事件
-F,--flush-logs:表示备份完成之后刷新日志,滚动日志点,如果没有开启二进制日志,使用该选项会提示错误
--flush-privileges:表示备份最新的权限表数据
--hex-blob:表示备份过程中包括数据库中的二进制数据(BINARY,VARBINARY,BLOG)
-x,--lock-all-tables:该选项的作用是在备份过程中锁定所有的表,通常用于备份MyISAM存储引擎类型的表数据
--single-transaction:该选项表示备份过程中保证数据的一致性,使用事务隔离状态和一致性快照保证,目前只支持InnoDB类型的表
    注:--lock-all-tables选项和--single-transaction选项同时只能用一个
--master-data=N:该选项用来设置在导出的数据中是否包括对二进制日志文件和日志点的记录,常用的值有:1和2
    1:表示在导出的sql文件中包括了"change master to master_log_file="",master_log_pos=N"内容,用来做快速主从复制
    2:表示在导出的sql文件中不包括"change master to master_log_file="",master_log_pos=N"内容
-t,--no-create-info:表示只备份数据,不备份表的创建信息
-d,--no-data:表示只备份表结构,不备份任何数据
-R,--routines:表示备份中同时备份存储过程和函数
--tables:如果不需要备份整个库,只需要备份部分表,可以使用该选项指定
--triggers:表示备份中同时备份触发器
-u:指定完成备份操作的用户名
-p:指定完成备份操作的用户密码
-h:指定完成备份操作的域名或者ip地址
-P:指定完成备份操作的端口号。注意,是大写的P

(3)示例
示例1:完成127.0.0.1服务器上3306数据库实例的全量备份

[root@WB-BLOG ~]# mkdir -pv /backup/
[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --all-databases --routines --triggers --single-transaction --events --master-data=2 | gzip > /backup/full_db_`date +%F`.sql.gz
#检查文件是否正常,这步很很很重要。有时候由于一些原因,备份文件生成了,但是打不开,所以务必检查
[root@WB-BLOG ~]# gzip -d /backup/full_db_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/full_db_2018-06-18.sql 

示例2:使用root用户备份127.0.0.1服务器上3306实例中的test库,并完成压缩放在/backup目录下

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --databases test --routines --triggers --single-transaction --events --master-data=2 | gzip > /backup/test-`date +%F`.sql.gz
[root@WB-BLOG ~]# ls /backup/test-2018-06-18.sql.gz 
#查看是否备份成功
[root@WB-BLOG ~]# gzip -d /backup/test-2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/test-2018-06-18.sql 

示例3:备份127.0.0.1服务器上3306实例中的test库中的user表

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --databases test --tables user --routines --triggers --master-data=2 --events| gzip > /backup/Db-test_Tb-user_`date +%F`.sql.gz
[root@WB-BLOG ~]# ls /backup/Db-test_Tb-user_2018-06-18.sql.gz 
#查看是否备份成功
[root@WB-BLOG ~]# gzip -d /backup/Db-test_Tb-user_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/Db-test_Tb-user_2018-06-18.sql 

示例4:备份127.0.0.1服务器上3306实例中的mysql库的表结构,不备份数据

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -S /tmp/mysql.sock -P3306 --databases mysql --no-data --triggers --routines --master-data=2 --events| gzip > /backup/mysql_table_frame_`date +%F`.sql.gz
#查看是否备份成功
[root@WB-BLOG ~]# gzip -d /backup/mysql_table_frame_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/mysql_table_frame_2018-06-18.sql 

示例5:备份127.0.0.1服务器上3306实例中的test库中所有表的数据,不备份表结构

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -S /tmp/mysql.sock -P3306 --databases test --no-create-info --triggers --routines --master-data=2 --events| gzip > /backup/test_table_data_`date +%F`.sql.gz
#查看是否备份成功
[root@WB-BLOG ~]# gzip -d /backup/test_table_data_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/test_table_data_2018-06-18.sql 

实例6:在windows上远程备份192.168.0.10服务器上的3306数据库实例中的mysql数据库
前提:需要在0.10服务器上授予windows主机的远程连接权限,授权操作可查看之前文章,此处略

D:SoftWaremysql-5.7.21in>mysqldump -uroot -proot -h127.0.0.1 -P3306 --databases mysql > D:/remote_mysql.sql
#查看D盘根目录,发现已经备份完成,查看备份文件也正常

至此,第一小节MySQL备份相关概念及mysqldump逻辑备份工具介绍完毕,下一篇文章将继续介绍MySQL的物理备份工具Xtrabackup,欢迎评论转发!

后续文章将更新在个人小站上,欢迎查看。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47822.html

相关文章

  • MySQL据库维之读写分离03

    摘要:上篇文章详细介绍了中间件的搭建及读写分离操作。以上内容介绍了使用取模的方式借助中间件实现数据库的分库分表及读写分离过程。 上篇文章详细介绍了MySQL中间件MyCat的搭建及读写分离操作。在实际场景中,面对大容量的数据,在数据库层面中通常的解决方案有两种,第一种是读写分离,第二种就是数据库的分库和分表了,本篇文章将基于MyCat中间件,详细介绍一下通过MyCat综合实现分库、分表及读写...

    ningwang 评论0 收藏0
  • MySQL据库维之数据恢复

    摘要:登录从库,查看信息是否正常,如果正常,登录主库,重新修改授权表,然后对外提供服务执行完成之后,主从数据恢复完毕。至此,数据恢复介绍完毕,上述介绍了使用全备加二进制日志实现单实例数据库和主从数据库的数据恢复过程,如有问题,欢迎评论指出。 之前三篇文章分别介绍了MySQL数据库常见的备份方法,其中包括逻辑备份和物理备份,本篇将总结一下MySQL数据库的数据恢复相关内容。这些数据恢复方案在之...

    Carl 评论0 收藏0
  • MySQL据库维之读写分离01

    摘要:之前文章介绍了的主从同步复制,了解了主从同步的架构及搭建过程。这种通过将数据库按照职责划分的架构,称为数据库的读写分离架构。 之前文章介绍了MySQL的主从同步复制,了解了主从同步的架构及搭建过程。主从同步一方面用来做数据库的数据备份,另外一个很重要的因素是用来解决网站的读写瓶颈,本篇文章将介绍MySQL读写分离的原理,架构,然后使用mysql-proxy中间件搭建一个简单的mysql...

    cppowboy 评论0 收藏0
  • MySQL据库维之MySQL高可用01

    摘要:分库分表完成之后,数据容量及性能增加了,但是紧接着会面临着可用性的问题。但是,,,本身也是单点,需要实现高可用,后面介绍应用高可用时会详细介绍。至此,的高可用概念及使用实现的高可用已经搭建验证完毕,篇幅较长,难免有笔误,欢迎评论转发 前面文章介绍了MySQL的读写分离及分库分表过程。对于分库和分表,实现策略有好多种,需要根据业务来确定最适合的分库分表架构,文章中还有好多未涉及到的,读者...

    cnio 评论0 收藏0
  • MySQL据库维之数据备份02

    摘要:上篇文章介绍了一下数据库逻辑备份第一部分的使用,本篇文章将继续介绍数据库逻辑备份第二部分工具的操作过程介绍是有公司发行的一款数据库物理备份工具,可以对存储引擎的表实现在线热备,同时可以对数据库进行全备和增量备份以及增量恢复。 上篇文章介绍了一下MySQL数据库逻辑备份第一部分mysqldump的使用,本篇文章将继续介绍MySQL数据库逻辑备份第二部分Xtrabackup工具的操作过程!...

    LeoHsiun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<