我到处都找过了..但是找不到任何完美的解决方案(免费),我可以下载所有数据库的备份->单独的表,这样我就可以在任何时候恢复我想要的任何表,而不必恢复整个数据库。
我使用mysql数据库,我有大约10-15个数据库和100+表在每个。
我可以看到“mysql的自动备份”可以做到这一点。但是差不多100块钱..我想知道我是否可以使用终端或任何其他工具。我想每天做备份..并希望每个table.sql文件都包含日期和时间。
有可能吗??
发布于 2013-08-06 04:21:07
使用mysqldump
你想要什么的一个例子
mysqldump --user=dbuser --password --tab=~/output/dir --all-databases这将为用户具有读取和锁定访问权限的所有数据库在~/output/dir中放置一个单独的sql文件
可在此处找到命令的完整列表
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
发布于 2013-08-06 04:24:37
首先创建一个表列表
如果您正在执行所有数据库操作,请执行以下操作:
SQLSTMT="SELECT CONCAT(table_schema,'.',table_name)"
SQLSTMT="${SQLSTMT} FROM information_schema.tables WHERE table_schema NOT IN"
SQLSTMT="#{SQLSTMT} ('information_schema','mysql','performance_schema')"
mysql -h... -u... -p... -ANe"${SQLSTMT}" > /tmp/ListOfTables.txt如果您只执行特定的数据库(如mydb),则执行以下操作:
SQLSTMT="SELECT CONCAT(table_schema,'.',table_name)"
SQLSTMT="${SQLSTMT} FROM information_schema.tables "
SQLSTMT="${SQLSTMT} WHERE table_schema='mydb'"
mysql -h... -u... -p... -ANe"${SQLSTMT}" > /tmp/ListOfTables.txt然后以10个为一组转储所有表
TARGET_FOLDER=/backups/mysql
COMMIT_COUNT=0
COMMIT_LIMIT=10
for DBTB in `cat /tmp/ListOfTables.txt`
do
DB=`echo ${DBTB} | sed 's/\./ /g' | awk '{print $1}'`
TB=`echo ${DBTB} | sed 's/\./ /g' | awk '{print $2}'`
BACKUP_FILE=${TARGET_FOLDER}/${DB}_${TB}.sql.gz
MYSQLDUMP_OPTIONS="-h... -u... -p... --hex-blob --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${DB} ${TB} | gzip > ${BACKUP_FILE} &
(( COMMIT_COUNT++ ))
if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
then
COMMIT_COUNT=0
wait
fi
done
if [ ${COMMIT_COUNT} -gt 0 ]
then
wait
fi试一试吧!
https://stackoverflow.com/questions/18066897
复制相似问题