CentOS 下定期备份 mysql 数据库

正常 mysql 备份

编写脚本db_backup.sh

#!/bin/bash

# constant
DB_NAME=xxx
DB_USER_NAME=xxx
DB_PASSWORD=xxx
DB_BACKUP_PATH=/opt/admin/backup/db
DATE=`date +%Y%m%d%H%M%S`

# backup command
  # ddl
/usr/bin/mysqldump -u$DB_USER_NAME -p$DB_PASSWORD -h 127.0.0.1 -R --opt $DB_NAME | gzip > ${DB_BACKUP_PATH}\/${DB_NAME}_ddl_${DATE}.sql.gz

  # dml
/usr/bin/mysqldump -u$DB_USER_NAME -p$DB_PASSWORD -h 127.0.0.1 -R --t $DB_NAME | gzip > ${DB_BACKUP_PATH}\/${DB_NAME}_dml_${DATE}.sql.gz

# Just backup the latest 7 days
find ${BACKUP_PATH} -mtime +7 -name "${DB_NAME}_*.sql.gz" -exec rm -f {} \;

给脚本授权

sudo chmod +x db_backup.sh

定期凌晨 3 点执行脚本

crontab -e

00 3 * * * /root/database_backup_shell.sh

Docker mysql 备份

  1. 查看当前启动的mysql运行容器
docker ps 
image
  1. 使用以下命令备份导出数据库中的所有表结构和数据
docker exec -it  mysql mysqldump -uroot -p123456 paas_portal > /cloud/sql/paas_portal.sql
  1. 只导数据不导结构
docker exec -it mysql mysqldump -t -uroot -p123456 paas_portal >/cloud/sql/paas_portal_dml.sql
  1. 只导结构不导数据
docker exec -it mysql mysqldump  --opt -d   -uroot -p123456 paas_portal >/cloud/sql/paas_portal_ddl.sql 
  1. 导出特定表的结构
docker exec -it mysql mysqldump -uroot -p -B paas_portal --table user > user.sql

参考

  1. 醉清风的博客:centos7-每天定时备份 mysql数据库
  2. harris135的博客:Docker-MySql -- 使用mysqldump 命令备份导出mysql容器中的结构数据

你可能感兴趣的:(CentOS 下定期备份 mysql 数据库)