스키마 구조가 같은 여러개의 DB를 운영하는 환경에서
DB 스키마 구조 변경시 일일이 변경할 수 없기에 아래와 같은 스크립트를 실행하여 변경사항을
모든 DB에 반영한다.
path 구조
/cnf/mysql.cnf # mysql.cnf 설정값 가지고 있음(계정.패스워드)
/log # 스크립트 실행시 로그 남김
/script # 실제 실행할 쿼리스크립트 보관경로
./db_host.txt # DB host list
./db_script.sh # shell script
mysql.cnf
[mysql]
default-character-set = utf8mb4
user = 계정
password = "패스워드"
shell script
#!/bin/bash
LOG_FILE_NM=db_script_`date +"%Y%m%d"`.log
FILE_SAVE_PATH=./log
FILE_DIRECTORY=`date +"%Y%m%d"`
MYSQL_PORT='포트'
MYSQL_CNF=./cnf/mysql.cnf
SCRIPT=./script/스크립트명.sql
# create backup directory
mkdir -p ${FILE_SAVE_PATH}/${FILE_DIRECTORY}
for MYSQL_HOST in $(cat ./db_host.txt);
do
echo `date +"%Y-%m-%d %H:%M:%S"`" <<<"$MYSQL_HOST" "$SCRIPT" shell script start!>>>" >> ${FILE_SAVE_PATH}/${FILE_DIRECTORY}/${LOG_FILE_NM}
mysql --defaults-extra-file=$MYSQL_CNF -h ${MYSQL_HOST} -P $MYSQL_PORT < $SCRIPT >> ${FILE_SAVE_PATH}/${FILE_DIRECTORY}/${LOG_FILE_NM} 2>&1
echo `date +"%Y-%m-%d %H:%M:%S"`" <<<"$MYSQL_HOST" "$SCRIPT" shell script end!>>>" >> ${FILE_SAVE_PATH}/${FILE_DIRECTORY}/${LOG_FILE_NM}
echo "" >> ${FILE_SAVE_PATH}/${FILE_DIRECTORY}/${LOG_FILE_NM}
done
고찰.
더 괜찮코 까리한 방법없을까
'Paul Granduer Lee > DB' 카테고리의 다른 글
mysqldbcopy를 이용한 DB to DB copy (0) | 2021.06.30 |
---|---|
RDS tmp_table_size를 올려야하는 이유 (0) | 2019.10.18 |
DB 모니터링 TOOL(PMM) 구축 (0) | 2019.08.30 |
슬로우쿼리 분석 방법 (2) | 2019.08.21 |
DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #2 (0) | 2019.07.25 |