mysql备份工具

https://www.cnblogs.com/chenmh/p/5300370.html

基础语法

Usage: mysqldump [OPTIONS] database [tables]
       mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 
       mysqldump [OPTIONS] --all-databases [OPTIONS]

常用语法

#备份所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql

#导出db1、db2两个数据库
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql

#导出db1中的a1、a2表
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql

#导出时忽略指定的表
mysqldump -uroot -proot --ignore-table=db1.a1 --ignore-table=db1.a2 --databases db1   >/tmp/db1.sql

带条件导出

#导出db1表a1中id=1的数据
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1'  >/tmp/a1.sql

生成新的binlog文件,-F
导出数据之后生成一个新的binlog文件,只需要加上-F参数即可
mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql

只导出表结构不导出数据,

--no-data

mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql

跨服务器导出导入数据

#将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test

导出时不锁表

--single-transaction



使用my.cnf指定密码

my.cnf
[mysqldump]
host=192.168.1.10
port=3306
user=root
password=root
default-character-set=utf8mb4
#指定语法
./mysqldump --defaults-extra-file=/home/my.cnf  --databases zbdc> zbdc1.sql

生成gz包的备份文件

./mysqldump --defaults-extra-file=/home/my.cnf  --databases test |gzip >./`date +%Y-%m-%d_%H-%M`.sql.gz