mysql 数据库备份的多种实现方式总结
本文实例讲述了mysql数据库备份的多种实现方式。分享给大家供大家参考,具体如下:
一、使用mysqldump进行备份
1、完整备份所有数据库
mysqldump-uroot-p--all-databases>E:/all.sql
在mysql8之前,存储过程和事件存储在mysql.proc和mysql.event表中。
从mysql8开始,相应对象的定义存储在数据字典中,这些表不会被备份。
要将存储过程和事件也包含,请使用如下语句:
mysqldump-uroot-p--all-databases--routines--events>E:/all.sql
2、时间点恢复
要获得时间点恢复,应该指定--single-transaction和--master-data
--single-transaction在备份之前,会将事务隔离级别设为REPEATABLEREAD模式,并执行STARTTRANSACTION来提供一致的备份。
--master-data将服务器的二进制日志的位置输出到sql文件。
mysqldump-uroot-p--all-databases--routines--events--single-transaction--master-data>E:/all.sql
--master-data=2表示在导出过程中,记录当前库的binlog和pos点,并在导出文件中注释这一行。
--master-data=1表示在导出过程中,记录当前库的binlog和pos点,并在导出文件中不注释这一行。
3、在从库导出时,记录主库的二进制日志位置
mysqldump-uroot-p--all-databases--routines--events--single-transaction--dump-slave>E:/all.sql
--dump-slave=2表示在导出过程中,记录主库的binlog和pos点,并在导出文件中注释这一行。
--dump-slave=1表示在导出过程中,记录主库的binlog和pos点,并在导出文件中不注释这一行。
4、指定数据库和表导出
mysqldump-uroot-p--databases数据库>E:/bak.sql mysqldump-uroot-p--databases数据库--tables数据表>E:/bak.sql
5、忽略表
mysqldump-uroot-p--databases数据库--ignore-table=数据库.数据表>E:/bak.sql
6、指定行
mysqldump-uroot-p--databases数据库--tables数据表--where="条件">E:/bak.sql
或者用limit限制结果集
mysqldump-uroot-p--databases数据库--tables数据表--where="条件LIMIT条数">E:/bak.sql
7、导出远程服务器
mysqldump-uroot-p-h主机IP--all-databases--routines--events--triggers>E:/all.sql
8、用于与其他服务器合并数据的备份
mysqldump-uroot-p--databases数据库--skip-add-drop-table--replace>E:/bak.sql
--skip-add-drop-table:不会将droptable语句写入导出文件中。
--replace:将使用replaceinto语句而不是insert语句导出。
二、使用mysqlpump进行备份
1、并行处理,通过指定线程数量加速备份过程
mysqlpump--default-parallelism=8>E:/all.sql
2、也可以指定每个数据库的线程数
mysqlpump-uroot-p--parallel-schemas=4:数据库--default-parallelism=2>E:/all.sql
3、排除或包含数据库
mysqlpump-uroot-p--include-databases=%t>E:/bak.sql
对以t结尾的所有数据库进行备份,多个数据库用逗号分隔,数据库名可以使用%或_通配符。
除此之外,还有类似--include-events,--include-routines,--include-tables,--include-triggers,--include-users等
mysqlpump-uroot-p--exclude-databases=a%>E:/bak.sql
排除以a开头的数据库进行备份,多个数据库用逗号分隔,数据库名可以使用%或_通配符。
除此之外,还有类似--exclude-events,--exclude-routines,--exclude-tables,--exclude-triggers,--exclude-users等
4、备份用户
mysqlpump-uroot-p--exclude-databases=%--users>E:/user.sql
可以通过--exclude-users来排除某些用户
mysqlpump--exclude-databases=%--exclude-users=root--users>E:/user.sql
5、压缩备份
通过使用--compress-output=lz4或--compress-output=zlib
mysqlpump-uroot-p--compress-output=lz4>E:/all.lz4 mysqlpump-uroot-p--compress-output=zlib>E:/all.zlib
通过如下语句进行解压
lz4_decompressE:/all.lz4all.sql zlib_decompressE:/all.zliball.sql
三、使用mydumper进行备份
mydumper需要单独安装,官网:https://github.com/maxbube/mydumper/releases
1、完全备份
mydumper-uroot--password=密码--outputdir导出路径
2、备份单独的表
mydumper-uroot--password=密码-B数据库-T数据表--triggers--events--routines--outputdir导出路径
3、使用正则表达式来备份特定数据库
mydumper-uroot--passoword=密码--regex'^(?!(mysql|test))'--outputdir导出路径
从备份中排除mysql和test数据库。
4、备份大表
mydumper-uroot--password=密码-B数据库-T数据表--triggers--events--routines--rows=100000-t8--trx-consistency-only--outputdir导出路径
--rows表示将表分成多少行的块
--trx-consistency-only如果是innodb,将使锁定最小化。
-t指定线程数量
5、压缩备份
mydumper-uroot--password=密码-B数据库-T数据表-t8--trx-consistency-only--compress--outputdir导出路径
6、仅备份数据
通过--no-schemas选项来跳过schema并且仅备份数据
mydumper-uroot--password=密码-B数据库-T数据表-t8--no-schemas--compress--trx-consistency-only--outputdir导出路径
四、使用普通文件进行备份
可以通过直接复制数据目录中的文件来进行备份,需先关闭mysql,复制文件,然后启动mysql。
五、使用xtrabackup进行备份
https://www.percona.com/downloads/XtraBackup/LATEST/
1、全量备份
xtrabackup--defaults-file=/etc/my.cnf--host=主机IP--user=用户名--password=密码--port=端口--backup--parallel=3--target-dir=备份目录
--defaults-file数据库配置文件
--backup执行备份操作
--parallel备份时并发的线程数
--target-dir备份文件的目录
2、增量备份
xtrabackup--defaults-file=/etc/my.cnf\
--host=主机IP\
--user=用户名\
--password=密码\
--port=3306\
--backup\
--parallel=3\
--target-dir=增量备份目录\
--incremental-basedir=全量备份目录\
增量备份是基于全量备份的,--incremental-basedir指向全量备份目录
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。