mysql数据库备份方式 mysql数据库备份方法有几种


mysql数据库备份方式 mysql数据库备份方法有几种

文章插图
一 背景在我们运维数据库的过程中.为了保证数据的安全性及PTIR的恢复.都会对数据库进行备份.mysql中我们一般使用的备份方式就两种.一种是逻辑备份.另一种是物理备份.接下来我们一起了解一下两种备份方式的实现及原理.
二 mysql逻辑备份mysql中我们经常使用的逻辑备份方式是mysql官方的mysqldump.当然也有开源的mydumper 但是不建议使用.为了数据的安全性.接下来我们了解一下mysqldump的使用及原理
2.1 mysqldump介绍:基于SQL(create database ,create table , insert into)语句的备份 。
使用场景: 100G以内,比较常用的就是逻辑备份 。
针对InnoDB表可以实现非锁定备份 。原理上是通过MVCC中的快照技术进行备份 。
针对非InnoDB表,是启用了锁表备份,FTWRL(global read lock) 。
优点: 自带工具,不需要单独安装;文本形式存储,便于查看处理;压缩比较高,节省空间 。
缺点: 备份时间较长 。恢复时间更长(4-6倍) 。
2.2 mysqldump的执行原理首先看一下我们执行mysqldump发生了什么2021-07-20T02:48:26.478282Z57 Connect [email protected] onusing Socket2021-07-20T02:48:26.478440Z57 Query /*!40100 SET @@SQL_MODE='' */2021-07-20T02:48:26.478531Z57 Query /*!40103 SET TIME_ZONE='+00:00' */2021-07-20T02:48:26.478601Z57 Query /*!80000 SET SESSION information_schema_stats_expiry=0 */2021-07-20T02:48:26.478654Z57 Query SET SESSION NET_READ_TIMEOUT= 86400, SESSION NET_WRITE_TIMEOUT= 864002021-07-20T02:48:26.478719Z57 Query FLUSH /*!40101 LOCAL */ TABLES2021-07-20T02:48:26.480218Z57 Query FLUSH TABLES WITH READ LOCK2021-07-20T02:48:26.480292Z57 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2021-07-20T02:48:26.480341Z57 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */2021-07-20T02:48:26.480422Z57 Query SHOW VARIABLES LIKE 'gtid\_mode'2021-07-20T02:48:26.482852Z57 Query SHOW MASTER STATUS2021-07-20T02:48:26.482920Z57 Query UNLOCK TABLES可以看到mysqldump首先执行了FTWL全局只读锁.然后获取了数据库的一致性快照.开始备份2.3 mysqldump使用方法介绍大家可以通过命令查看帮助:如下
[[email protected] ~]# mysqldump --help基本连接参数:
-u备份用户名-p用户密码-Ssocket位置-hIP地址-Pmysql端口下面重点参数介绍一下.
–tab 将表数据和表结构分别导出.表数据为csv格式
mysqldump -uroot -p123 -P3307 -S /data/3307/mysql.sock --single-transaction--tab="/tmp" world将world数据库下的所有表结构及表数据备份到/tmp目录下且表数据为csv格式查看:[[email protected] tmp]# ll总用量 4760-rw-r--r-- 1 rootroot1637 7月20 13:51 city.sql-rw-r----- 1 mysql mysql 143565 7月20 13:51 city.txt-rw-r--r-- 1 rootroot1666 7月20 13:51 countrylanguage.sql-rw-r----- 1 mysql mysql18234 7月20 13:51 countrylanguage.txt-rw-r--r-- 1 rootroot2036 7月20 13:51 country.sql-rw-r----- 1 mysql mysql31755 7月20 13:51 country.txt-rw-r--r-- 1 rootroot1763 7月20 13:51 employees.sql-rw-r----- 1 mysql mysql335 7月20 13:51 employees.txt其中sql为表结构语句.txt为表数据–no-data, -d 只导出表结构.不导出表数据
[[email protected] tmp]# mysqldump -uroot -p123 -P3307 -S /data/3307/mysql.sock --single-transaction--no-data world >world.sql[[email protected] tmp]# mysqldump -uroot -p123 -P3307 -S /data/3307/mysql.sock --single-transaction-d world >world.sql只导出world库下所有表的表结构只导出表数据.不导出表结构:
[[email protected] ~]# mysqldump -uroot -p123 -P3307 -S /data/3307/mysql.sock -t world city --single-transaction>all.sql–master-data=https://www.520longzhigu.com/shenghuo/2 备份时自动生成,当前的binlog位置信息.自动开启锁表备份功能,如果开了–single-transaction,可以减少global read lock.


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: