데이터베이스 서버의 백업 프로세스를 자동화하는 스크립트를 작성해야 합니다. 현재 서버에는 19개의 데이터베이스가 있으며, 스크립트가 고려하는 것 이외의 특정 스키마가 생성되는 것을 방지하기 위해 "스키마 표시" 쿼리에 나열된 모든 데이터베이스를 백업하고 싶습니다.
내 생각은 각 패턴을 하루에 두 번(예: 0h00 및 12h00) 덤프하고 압축하여 폴더에 저장하는 것입니다 /home/{user}/database_backup/daily/[day_of_week]
.
일주일에 한 번씩 모든 [day_of_week]
폴더가 압축되어 /home/{user}/database_backup/weekly/[week_of_month]
.
마지막으로, 한 달에 한 번씩 모든 것이 [week_of_month]
압축되어 저장 /home/{user}/database_backup/monthly/
되고 다른 애플리케이션에서 테이프에 백업할 수 있도록 그대로 유지됩니다.
/var/lib/mysql
요즘에는 이러한 테이프 백업 애플리케이션이 매일 백업을 수행하지만 필요한 것은 이러한 파일을 복원하거나 다른 데이터베이스 서버에서 사용하는 것이 다소 어렵다는 것입니다.
너무 공개적인 질문이라는 걸 알지만, 언제나 그렇듯이 여러분의 도움에 진심으로 감사드립니다.
답변1
서버의 모든 데이터베이스를 반복하여 셸 스크립트에서 하나씩 내보낼 수 있습니다.
#!/bin/sh
HOSTNAME='localhost'
MYSQLUSER='root'
MYSQLPASS='xyz'
for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases");
do
local FILENAME=${HOSTNAME}_Database_${DB}.sql.gz
mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines --event | gzip -c > $FILENAME
done