mysql数据备份数据解决方案_一文带你掌握 MySQL 数据库备份解决方案

简介

如果你订阅了这个 Chat,说明你对 MySQL 数据库有一定的基础,起码肯定会 CRUD,本 Chat 主要有以下 6 个主要内容:

使用 MySQL 自带的 mysqldump 工具,做单表、多表、单库、多库、全库的逻辑备份,以及数据恢复。

MySQL 在线热备工具 percona-xtrabackup 的安装介绍。

使用 percona-xtrabackup 对 MySQL 数据库做在线热备,以及全库恢复。

介绍 mysqldump、innobackupex 工具备份原理。

binlog2sql 闪回工具帮你无损恢复业务记录。

当你误删除业务表的 .ibd 文件时,如何恢复被删除的 .ibd 文件。

mysqldump 工具逻辑备份

在 MySQL 数据库日常运维过程中,肯定有需要导出单表数据、多表数据、单库、多库,甚至券库导出的需求,如果你对 mysqldump 工具不是很了解,很容易就造成生产故障。

举个例子,为什么有人使用 mysqldump 工具在线导出表记录,不锁表,不影响业务,而你使用 mysqldump 工具导出表记录却锁表、影响到业务呢。

下面,我就一步一步带你解决上面的疑问。

mysqldump 工具重要参数介绍

要想把 mysqldump 工具玩的溜,必须掌握 2 个重要的参数。

--single-transaction 参数作用

当你使用 mysqldump 工具导数时,一定要带上,如果不带这个参数,会锁表,并禁止任何数据的写入,从而影响业务。

如果设置此参数,当使用 mysqldump 的时候,会自动设置会话的隔离级别为 RR,然后再开启一个事务,这样到导出数据整个过程,能保证数据的一致性,当然前提是你的表使用的存储引擎是 InnoDB。

但是 mysqldump 开启的事务,会被一些 DDL 语句破坏掉,例如 alter table,所以呢,在执行 mysqldump 过程中,不要使用 DDL 语句。尤其是当你想用 mysqldump 导出的数据,搭建主从复制的情况,不然会导致你的主从数据不一致的。

--skip-tz-utc 参数作用

这个参数也非常重要,大家应该知道时区,mysqldump 默认会启用 tz-utc 选项的,即会设置导出数据时区为格林威治时间,即 0 时区,如果你的数据库在中国,当你把导出的数据,导入到目标库之后,就会很奇怪,为什么 timestamp 字段显示的时间,会比源库差 8 个小时,原因就在此。

所以当你导出数据的时候,一定要加上 --skip-tz-utc 参数,告诉 MySQL 数据库,我不使用格林威治时间,使用当前 MySQL 数据库的时区进行导出。

mysqldump 单表、多表、单库、多库、全库逻辑导出

本次模拟创建了 2 个数据库,分别为 testdb 和 testdb2,在 testdb 中有 2 张表(t_test_1,t_test_2),在 testdb2 中有一张表(t_test_3)。

[root@localhost] 14:45:10 [testdb2]>show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

| testdb |

| testdb2 |

+--------------------+

6 rows in set (0.00 sec)

[root@localhost] 14:45:14 [testdb2]>use testdb;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

[root@localhost] 14:45:22 [testdb]>show tables;

+------------------+

| Tables_in_testdb |

+------------------+

| t_test_1 |

| t_test_2 |

+------------------+

2 rows in set (0.00 sec)

[root@localhost] 14:45:24 [testdb]>use testdb2;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

[root@localhost] 14:45:31 [testdb2]>show tables;

+-------------------+

| Tables_in_testdb2 |

+-------------------+

| t_test_3 |

+-------------------+

1 row in set (0.00 sec)

1. mysqldump 单表导出 testdb 库的 t_test_1 表,不导出建表语句,带上 -t 参数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值