MySQL逻辑备份

发布时间 2023-06-11 11:32:58作者: 江曹

一、mysqldump

1.mysqldump的导出

--只导出存储过程【dump备份】
mysqldump -u root -p -n -t -d --skip-add-drop-table -R 数据库名 > 文件名
##其中,-d 表示 --no-data(No row information), -n表示 --no-create-db 不导出建库语句, -t表示--no-create-info 不导出建表语句,
##-R表示导出function和procedure,--skip-triggers表示不导出trigger。

--备份某个库
mysqldump -uroot -p -P3306 --single-transaction --set-gtid-purged=OFF --skip-add-drop-table \
-E -R --triggers --databases srd >/data/dump/mysql/srd_20201222.sql
##其中,-E 表示(Dump events),-R Dump (functions and procedures),--triggers (Dump triggers for each dumped table).

--备份某几个库
mysqldump -uroot -p -P3306 --single-transaction -E -R --triggers --set-gtid-purged=OFF --skip-add-drop-table \
--databases planschedule sod spd ssd >/data/backup/planschedule.sql

--只导表结构
mysqldump -u root -p -d --skip-add-drop-table -B 数据库名
#注释: -d, --no-data No row information,--skip-add-drop-table导出的sql文本中不添加drop table if exits
--只导表结构
mysqldump -u root -p --single-transaction -E -R --triggers --set-gtid-purged=OFF -d --skip-add-drop-table -B \
cb_provider sa_admin sa_auth sa_bill sa_import sa_maindata sa_operate\
sa_out sa_payment sa_report sa_sentiment sa_speech sa_user sa_workorder > structure_only_20211124.sql

--只导表数据
mysqldump -u root -p --single-transaction --skip-triggers --set-gtid-purged=OFF -d --skip-add-drop-table \
-B a_out sa_payment sa_report > db_all_table.sql
#注释:-E -R 默认为false,--skip-triggers为忽略trigger
--只导出几张表数据 mysqldump -u root -p123456 --single-transaction --set-gtid-purged=OFF --skip-add-drop-table 库名 表1 表2 表3 > mysql.sql

2.mysqldump的导入

# 整导出的导入
mysql -uroot -p < database_all.sql

# 单表导出的导入
mysql -uroot -p dbname < table_name.sql
#注释:dbname为表要导入的库

二、Mydumper&Myloader

1.mydumper

# 备份全部数据库 
mydumper -u root -p 123456 -o /mysql_backup/all/
# 全量备份 会备份 mysql、sys 系统库及其他自建库
# 备份全部数据库 包含触发器、事件、存储过程及函数
mydumper -u root -p 123456 -G -R -E -o /mysql_backup/all2/
# 备份指定库
mydumper -u root -p 123456 -G -R -E -B db1 -o /mysql_backup/db1/
# 使用正则 排除系统库
mydumper -u root -p 123456 -G -R -E --regex '^(?!(mysql|sys))' -o /mysql_backup/all3
# 备份指定表
mydumper -u root -p 123456 -B db1 -T tb1,tb2 -o /mysql_backup/tb/
# 只备份表结构
mydumper -u root -p 123456 -d -B db1 -o /mysql_backup/nodata/
# 只备份表数据
mydumper -u root -p 123456 -m -B db1 -o /mysql_backup/noschema/
# 压缩备份某个表
mydumper -u root -p 123456 -B db1 -T tb1 -c -o /mysql_backup/compress/
# 给事务表指定一致性备份,非事务表不保证,并设置执行线程16
mydumper -u root -p 123456 --trx-consistency-only -t 16 -B db1 -T tb1 -c -o /mysql_backup/
# 表示先找出非事务表,进行锁定,然后就可以unlock table了
mydumper -u root -p 123456 --less-locking -t 16 -B db1 -T tb1 -c -o /mysql_backup/

注释:这里如果有大的非事务表备份,需加--less-locking。

2.myloader