Mysql 数据库备份 mysqldump

数据库备份需要备份那些数据:

业务数据库

binlog

配置文件

1.1  设置备份策略

全备份、增量、时间、自动、备份是否成功

1.2 备份文件是否可用、备份空间是否可用、磁盘是否存在安全隐患

1.3 定期恢复演练

季度、半年

1.4 故障恢复

扫描二维码关注公众号,回复: 6638750 查看本文章

通过现有备份、能够将数据库恢复到故障之前的时间点。

1.5 迁移

    1、停机时间

    2、回退方案

2 备份类型

2.1 热备份

在数据库业务正常时,备份数据并且能够一致性恢复(只能时innodb)

对业务影响非常小

2.2 温备份

锁表备份只能查询不能修改(myisam)

2.3 冷备份

3、备份方式及工具介绍

3.1 逻辑备份工具

     mysqldump

     mysqlbinlog

    mydumper

3.2 物理备份工具

    xtrabackup(xbk) percona 第三方

4、逻辑备份和物理备份的比较

4.1 mysqldump

 优点:

1、不需要下载安装

2、备份出来的是SQL,文本格式、可读性高便于备份处理

3、压缩比较高,节省备份的磁盘空间

缺点:

依赖于数据库引擎,需要从磁盘数据读出然后转换成SQL进行存储,比较耗费资源,数据量大的话效率低。

建议:

100G 以内的数据量可以使用mysqldump 超过TB及以上,我们可以选择的是mysqldump,配合分布式的系统

1EB= 1024 T=1000000GB

备份方式:

全备份:全库备份、备份所有数据

增量: 备份变化的数据

逻辑备份=mysqldump+mysqlbinlog

物理备份=xtrabackup

mysqldump 命令说明:

mysqldump

--single-transaction (生产中必用)  用于保证InndDB备份数据时的一致性,配合RR隔离级别一起使用: 当发起事务时,读取一个数据的快照,直到备份结束时,都不会读到本事务开始之后提交的任何数据(这个参数相当重要)

-A --all-databases

--master-data = 2 (生产比用)该参数有1和2两个值。 如果等于1 就会在备份出来的文件中添加一个change master 的语句;

如果该参数设置2,就会在备份出来的文件中添加一个change master 的语句,并在语句前面添加注释。

--dump-slave 该参数用于在从库上备份数据,在线搭建新的从库时使用。该参数也有1和2两个值。

值为1时,也是在备份出来的文件中添加一个change master 的语句; 值为2时,则会在change master 命令前增加注释。

--no-create-info (-t)备份过程中,只备份表数据,并不备份表结构

--no-data (-d) 备份过程只备份表结构 不备份表数据

--complete-insert (-c) 使用完整的insert 语句会包含表中的列信息,这么做可以提高插入效率。

--databases (-B)  备份指定的库

--default-character-set  字符集, mysql 目前默认的字符集为utf8 要与备份出的表的字符集保持一致

--quick (-q) 加上sql_no_query ,意味着并不会读取缓存中的数据

--where=按条件备份出想要的数据

--set-gtid-purged=off  如果数据库中已经开启gtid 选项,但备份过程中不想带gtid信息。可以加上该参数。

--flush-log (-F) 备份之前刷新日志。 )

--triggers Dump triggers for each dumped table.  (生产中必加)

--routines   (-R)   Dump stored routines (functions and procedures)  (生产中必加).

--events  -E    Dump events. (生产中必加)

备份时提示信息

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. 
 

--set-gtid-purged=(auto、on、off)

off

使用场景:

1 、--set-gtid-purged = off 可以使用在日常备份参数中

    mysqldump --single-transaction   --max-allow-packet=256M --master-data=1 --triggers -R -E  -A 

2、auto,on 在构建主从复制环境时需要的参数配置

    mysqldump --single-transaction --max-allow-packet=256M --master-data=1 --triggers -R -E -A 

注意:提示警告不影响备份的结果!! 可以忽略!!!!

--max-allow-packet=N

查看客户端配置的大小

@192.168.1.141:[db1] >select @@max_allowed_packet;
+----------------------+
| @@max_allowed_packet |
+----------------------+
|              4194304 |
+----------------------+
1 row in set (0.00 sec)

@192.168.1.141:[db1] >
 

如果备份时报错,应该修改mysql客户端的值,直接在备份命令mysqldump 上添加--max-allow-packet=256M

全库备份:

mysqldump --single-transaction  --flush-log   --master-data=1  --triggers  --routines - -events  --single-transaction   -uroot -h 192.168.1.141 -p -A > all_20170902.sql

生产环境备份命令:

mysqldump --single-transaction   --max-allow-packet=256M --master-data=1 --triggers -R -E  -A  > all.sql

恢复:

mysql -uroot -h 192.168.1.141 -p < all_20170902.sql

备份单表(行业中推荐使用这种方式)

mysqldump -uroot -h -p world City  >world_City.sql

恢复单库单表

mysql -u root -h -p  world < world_City.sql

备份指定的库

mysql -uroot -h mysql_server -p  -B web blog  > web_blog.sql

备份时间统计:

虚拟机:

四核4G ASA:15000

23s  1.2G

2300s ==> 40m  120G

八核8G   ASA: 15000

生产每个表的备份命令:

>select concat("mysqldump -uroot -h192.168.1.141 -p",table_schema," ",table_name, "> /data/backup/",table_schema,"_",table_name,".sql") from information_schema.tables where table_schema not in ('sys','information_schema','performance_schema') ;


ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
 

mysqldump -uroot -p -h -A -R --triggers -E --master-data=2 --single-transaction --set-gtid-purged=off >all.sql

猜你喜欢

转载自blog.csdn.net/pang_2899/article/details/92827366