Mysql 导出dmp文件

备份整个数据库
mysqldump -u root -p123456 dbname > backdb.sql
指定导出文件路径
mysqldump -u root -p123456 dbname > 绝对路径\backdb.sql

有时候密码中含有特殊字符比如%,会被识别为命令,可以改成这样写
mysqldump --user='root' --password='123456' dbname > backdb.sql
备份数据库中的某个表
mysqldump -u root -p123456 dbname tbname1, tbname2 > backdb.sql
备份多个数据库
mysqldump -u root -p123456 --databases dbname1, dbname2 > backdb.sql
备份系统中所有数据库
mysqldump -u root -p123456 --all-databases > backdb.sql
备份并压缩,文件名按日期显示
mysqldump -u root -p123456 --all-databases | gzip > backdb_`date '+%Y-%m-%d'`.sql.gz

其他:


跨主机备份
将host1上的sourceDb复制到host2的targetDb,前提是host2主机上已经创建targetDb数据库
-C指示主机间的数据传输使用数据压缩
mysqldump --host=host1 --opt sourceDb| mysql --host=host2 -C targetDb



添加到定时任务,每天凌晨1点备份一次

 mysqldump -u root -p123456 --all-databases | gzip > /data/dockers/mysql/data/backdb_`date '+%Y-%m-%d'`.sql.gz

发现在我的系统上,crontab里面带日期的居然执行失败了,于是放到shell文件中了。

/bin/sh /data/www/backup.sh

如果mysql是由docker运行的,保存路径为宿主机的路径,而不是容器里面的

 docker exec mysql mysqldump -u root -p123456 --all-databases | gzip > /data/dockers/mysql/data/backdb_`date '+%Y-%m-%d'`.sql.gz

补充说明

当mysql版本为5.7(我的是5.7.24)的时候,上面的命令会报错
mysqldump: [Warning] Using a password on the command line interface can be insecure.
同时定时任务也执行失败。需要做如下修改。
修改配置文件/etc/my.cnf.d/mysql-clients.cnf添加如下内容
 

[mysqldump]
user = root
password = 'mypass'
host = 127.0.0.1

不需要重启mysql,因为这是对于mysqldump的配置。

执行命令

mysqldump --defaults-extra-file=/etc/my.cnf.d/mysql-clients.cnf chpay > /data/www/backdb/backdb_`date '+%Y-%m-%d'`.sql

你可能感兴趣的:(mysql,数据库,dmp,导出文件)