我对myslq有个奇怪的问题。以前转储文件具有以下结构->
CASE A
____________
DROP TALBE A
IMPORT TABLE A
DROP TABLE B
IMPORTA TABLE B
DROP TABLE C
IMPORT TABLE C
......
当前->
CASE B
____________
DELETE TABLE A
DELETE TABLE B
DELETE TABLE C
IMPORT TABLE A
IMPORT TABLE B
IMPORT TABLE C
........
案例1和案例2之间导入脚本的唯一区别是:案例a:
DB_PORT=xxx
DB_HOST=xxx
DB_NAME=xxx
PROJECT=xxx
DB_SOURCE=xxx
BACKUP_FILE="$xxx/xxx/${xxx}_${xxx}_${xxx}.sql.gz.gpg"
LOG_FILE=$xxx/xxx/$xxx/xxx
mysqldump -S /xxx/xxx/xxx/xxx.sock -u$DB_USER -p$DB_PASSWORD $DB_NAME | gzip | gpg -e -r 'xxx <xxxxxx> $BACKUP_FILE
export -f xxx
find $xxx/xxx/ -name "${xxx}_${xxx}_*" -type f -exec /bin/bash -c 'xxx "{}"' \;
DATE=`date +%Y%m%d_%H%M`
案例b:
# !/bin/bash
HOME="/xxx/xxx"
DATE=`date +%Y%m%d_%H%M`
DATE_LOGS=`date +%Y-%m`
PROJECT=xxx
DB_SOURCE=xxx
DB_FILE="$xxx/xxx/${xxx}_${xxx}_${xxx}.sql"
DB_FILE_COMPRESS="$xxx/xxx/${xxx}_${xxx}_${xxx}.sql.gz"
DB_FILE_ENCRYPT="$xxxx/xxx/${xxx}_${xxx}_${xxx}.sql.gz.gpg"
LOG_FILE=$xxx/xxx/$xxx/xxx
PASSWORD=xxx
USER=xxx
DATABASE=xxx
EXCLUDED_TABLES=(
A
B
C
D
F
)
IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done
mysqldump -S /xxx/xxx/xxxx/xxxx.sock --user=${USER} --password=${PASSWORD} --single-transaction --no-data ${DATABASE} > ${DB_FILE}
echo "Dump content"
mysqldump -S /xxx/xxx/xxxx/xxxx.sock --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info ${IGNORED_TABLES_STRING} >> ${DB_FILE}
gzip ${DB_FILE}
gpg -e -r 'xxx ' ${DB_FILE_COMPRESS}
rm ${DB_FILE_COMPRESS}
export -f xxx
find $HOME/bdbackups/ -name "${PROJECT}_${DB_SOURCE}_*" -type f -exec /bin/bash -c 'xxx "{}"' \;
DATE=`date +%Y%m%d_%H%M`
实际上唯一的区别是案例b忽略了5个表,而案例a没有。
非常感谢您阅读我的文章,如果有人有任何想法,我将非常感谢您。
1条答案
按热度按时间elcex8rz1#
在案例b中,您添加了许多被排除的表(--ignore table),所以如果您想删除它们,只需删除那些代码行(带有ignored\u tables\u string)。这就是为什么mysqldump添加了delete命令(它只是删除所有行)