MySQLTable By Table Backup With Auto Rotation, For Easy Restoration Of Partial/Full Database

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
#!/bin/bash
# Database Backup script.
# Created By:    Mohammed Salih
#                 Senior System Administrator
#                Date: 21/06/2007
#
# Database credentials
DB_USER=root
#Please append password in the xxxxx section below, note that there is
# no space between -p and xxxxx
DB_PASS="-pxxxxxxx"
# Get list of Databases except the pid file
DBS_LIST=(echo"showdatabases;"|mysqluDB_USER DB_PASS -N)
   # Log file
   BAKUP_LOG=/backup/log/db-backup.log
   # Backup Base directory
   BASE_BAK_FLDR=/backup/db
   # Backup rotation period.
   RM_FLDR_DAYS="+30"
   # From here, only edit if you know what you are doing.
   index=0
   # Check if we can connect to the mysql server; otherwise die
   if [ ! "
(id -u -n)" = "mysql" ]; then
        echo -e "Error:: 0:Onlyusermysqlcanrunthisscript"exit100fiPING=(mysqladmin ping -u DBUSERDB_PASS 2>/dev/null)
if [ "PING" != "mysqld is alive" ]; then
           echo "Error:: Unable to connected to MySQL Server, exiting !!"
           exit 101
   fi
   # Backup process starts here.
   # Flush logs prior to the backup.
   mysql -u
DB_USER DB_PASS -e "FLUSH LOGS"
   # Loop through the DB list and create table level backup,
   # applying appropriate option for MyISAM and InnoDB tables.
   for DB in
DBS_LIST; do
    DB_BKP_FLDR=BASEBAKFLDR/(date +%d-%m-%Y)/DB[!dDB_BKP_FLDR ]  && mkdir -p DB_BKP_FLDR
       # Get the schema of database with the stored procedures.
       # This will be the first file in the database backup folder
       mysqldump -u
DB_USER DBPASSRdsingletransactionDB | \
            gzip -c > DB_BKP_FLDR/000-DB_SCHEMA.sql.gz
       index=0
       #Get the tables and its type. Store it in an array.
       table_types=(
(mysql -u DBUSERDB_PASS -e "show table status from DB"| awkif($2=="MyISAM"||$2=="InnoDB")print$1,$2))tabletypecount={#table_types[@]}
    # Loop through the tables and apply the mysqldump option according to the table type
    # The table specific SQL files will not contain any create info for the table schema.
    # It will be available in SCHEMA file
    while [ "index"lt"table_type_count" ]; do
        START=(date+TYPE={table_types[index + 1]}
           table=
{table_types[index]}
           echo -en "
(date) : backup DB:table : TYPE"if["TYPE" = "MyISAM" ]; then
            DUMP_OPT="-u DBUSERDB_PASS DBnocreateinfotables"elseDUMPOPT="uDB_USER DBPASSDB --no-create-info --single-transaction --tables"
        fi
        mysqldump  DUMPOPTtable |gzip -c > DBBKPFLDR/table.sql.gz
        index=((index + 2))
        echo -e " - Total time : (((date +%s) - START))\n"
       done
   done
   # Rotating old backup. according to the 'RM_FLDR_DAYS'
   if [ ! -z "
RM_FLDR_DAYS" ]; then
    echo -en "(date):removingfolder:"findBASE_BAK_FLDR/ -maxdepth 1 -mtime $RM_FLDR_DAYS -type d -exec rm -rf {} \;
    echo
 
For example, if you have taken the backup of "bigdb" on 1st Jan 2007, then the backup will be kept in 
$BKP_BASE_FLDR/01-01-2007/bigdb
Following command/script is an example for restoring a database called  bigdb for which the backup was taken on 1st Jan 2007.
cd /backup/01-01-2007/bigdb;
for table in *; do gunzip -c $table | mysql -u root -pSecret bigdb_new; done.

本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/578065

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.
昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示:   yMaint.ShrinkLog   Log Shrink   --  ============================================================...
1125 0
Could not update the distribution database subscription table. The subscription status could not be changed.
在一个测试服务器删除发布(Publication)时遇到下面错误,具体如下所示 标题: Microsoft SQL Server Management Studio   ------------------------------   Could not delete publication 'RPL_GES_MIS_QCSDB'.
1178 0
SQL logic error or missing database no such table: xxx
原文:SQL logic error or missing database no such table: xxx System.
3749 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等