MYSQL 备份
docker exec mysql sh -c 'exec mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --databases DATABASE_1 DATABASE_2' > /data/backup_database/backup_database_`date +%F`.sql
MYSQL 备份并压缩
docker exec mysql sh -c 'exec mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --databases DATABASE_1 DATABASE_2' |gzip > /data/backup_database/backup_database_`date +%F`.tar.gz
Mysql备份压缩,不影响业务运行,自动清理超过7天的备份
docker exec mysql sh -c 'exec mysqldump -u$"MYSQL_USERNAME" -p"$MYSQL_PASSWORD" --single-transaction --routines --triggers --flush-logs --databases DATABASE_1 DATABASE_2' |gzip > /data/backup_database/backup_database_`date +%F`.tar.gz && find /data/backup_database/ -name "*.gz" -mtime +7 -exec rm -f {} \;
在一个命令中导出和导入MySQL数据库
您可以使用以下单行代码,而不是从一个数据库创建转储文件,然后将备份导入另一个MySQL数据库:
mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name
从完整的 MySQL 转储还原单个 MySQL 数据库
如果使用–all-databases选项备份了所有数据库,并且要从包含多个数据库的备份文件中还原单个数据库,请使用如下所示的选项:–one-database
mysql --one-database database_name < all_databases.sql
恢复数据库
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql