上篇文章介绍了MySQL主从复制中常见问题排查。在主从复制架构搭建完成以后,须要按期对数据进行备份,本篇文章开始就来介绍MySQL数据库的数据备份与恢复,因为备份及恢复内容较多,分多个小节介绍,本小节先来介绍MySQL数据库备份的相关概念及mysqldump逻辑备份工具。
一、备份类型
(1)按照备份后的文件来划分mysql
a、物理备份:直接备份数据库文件,经常使用的有LVM逻辑卷备份,或者直接拷贝压缩数据库数据目录 b、逻辑备份:使用备份工具将数据库中的数据导出为数据库sql脚本或者数据文件
(2)按照是否中止数据库服务划分sql
a、冷备:备份期间须要中止数据库服务,会形成不可读不可写 b、温备:备份期间不须要中止数据库服务,可是须要锁表,故只能读,不可写 c、热备:备份期间,数据库服务彻底不受影响,可读可写
(3)按照备份的周期和备分内容划分数据库
a、彻底备份:一次性备份数据库实例中的全部数据 b、增量备份:若是刚进行过一次彻底备份,则增量备份就指的是全备以后到当前时间点之间增长的数据; 若是上次为增量备份,则增量备份指的内容是上次增量以后到当前时间点之间增长的数据 c、差别备份:仅备份上次全量备份以后发生变化的数据,因为比增量备份耗费的磁盘空间更多,故用的比较少
二、备份策略windows
(1)全量备份+增量备份 (2)全量备份+差别备份
三、备份工具介绍服务器
(1)mysqldump:基于MySQL客户端的一个逻辑备份工具,可实现温备,可使用-u,-p,-h等选项备份远程数据库上的数据 (2)mysqlhotcopy:基于MySQL客户端的一个物理工具,只可冷备,备份过程当中需指定-u,-p,-h,-S等基本参数,这些基本参数的含义和mysql命令对应的参数含义相同 (3)lvm2:基于lvm的物理备份工具,因为是经过对逻辑卷作快照来实现的,因此备份速度极快,可在瞬间完成,可粗略认为是热备 (4)xtrabackup:Percona旗下的一块开源MySQL备份工具,能够实如今线热备和温备
除此以外还有一些其余备份工具,如mysqldumper,PhpMyAdmin等,感兴趣可本身查资料学习。架构
四、mysqldump逻辑备份基本操做
(1)用法less
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:\SoftWare\mysql-5.7.21\bin>mysqldump -uroot -proot -h127.0.0.1 -P3306 --databases mysql > D:/remote_mysql.sql #查看D盘根目录,发现已经备份完成,查看备份文件也正常
至此,第一小节MySQL备份相关概念及mysqldump逻辑备份工具介绍完毕,下一篇文章将继续介绍MySQL的物理备份工具Xtrabackup,欢迎评论转发!
后续文章将更新在我的小站上,欢迎查看。