MariaDB 10.2.26 xtrabackup 중요 절차 기록

1. 테스트 사례 라 이브 러 리 생 성
Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 11Server version: 10.2.26-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database full charset=utf8;Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create table full.incr(id int not null auto_increment primary key,tag varchar(256)) charset=utf8;Query OK, 0 rows affected (0.02 sec)
MariaDB [(none)]> show table from full;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from full' at line 1MariaDB [(none)]> show tables from full;+----------------+| Tables_in_full |+----------------+| incr |+----------------+1 row in set (0.00 sec)
MariaDB [(none)]> select * from full.incr;Empty set (0.00 sec)
MariaDB [(none)]> exitBye
2, 실행 1 회 완비
[root@rec tmp]# innobackupex --user=root --no-timestamp /tmp/fullbak
3. 증분 데이터 추가
MariaDB [(none)] > insert into full. incr (tag) values ("1 차 추가 후");Query OK, 1 row affected (0.01 sec)
4. 증분 데 이 터 를 백업 합 니 다.
[root@rec tmp]# innobackupex --user=root --no-timestamp --parallel=4 --incremental-basedir=/tmp/fullbak/ --incremental /tmp/incr/incr1
5. 2 차 증분 데이터 추가
MariaDB [(none)] > insert into full. incr (tag) values ("두번째 추가 후");Query OK, 1 row affected (0.01 sec)
6. 2 차 증분 데이터 백업
[root@rec tmp]# innobackupex --user=root --no-timestamp --parallel=4 --incremental-basedir=/tmp/incr/incr1/ --incremental /tmp/incr/incr2
7. 세 번 의 증분 데 이 터 를 추가 합 니 다.
MariaDB [(none)] > insert into full. incr (tag) values ("3 차 추가 후");Query OK, 1 row affected (0.30 sec)
8. 세 번 의 증분 데 이 터 를 백업 합 니 다.
[root@rec tmp]# innobackupex --user=root --no-timestamp --parallel=4 --incremental-basedir=/tmp/incr/incr2/ --incremental /tmp/incr/incr3
9. 네 번 의 증분 데 이 터 를 추가 합 니 다.
MariaDB [(none)] > insert into full. incr (tag) values ("4 차 추가 후");Query OK, 1 row affected (0.30 sec)
10. 네 번 의 증분 데 이 터 를 백업 합 니 다.
[root@rec tmp]# innobackupex --user=root --no-timestamp --parallel=4 --incremental-basedir=/tmp/incr/incr3/ --incremental /tmp/incr/incr4
11. 복구 준비 완료
[root@rec tmp]# innobackupex --apply-log --redo-only /tmp/fullbak/
12. 회복 준비 첫 번 째 증가
[root@rec tmp]# innobackupex --apply-log --redo-only /tmp/fullbak/ --incremental-dir=/tmp/incr/incr1
13. 회복 준비 2 차 증가
[root@rec tmp]# innobackupex --apply-log --redo-only /tmp/fullbak/ --incremental-dir=/tmp/incr/incr2
14. 복구 준비 세 번 째 증 비 는 여기 서 모든 증분 백업 데 이 터 를 복원 하지 않 았 습 니 다.
[root@rec tmp]# innobackupex --apply-log --redo-only /tmp/fullbak/ --incremental-dir=/tmp/incr/incr3
15. db 를 닫 고 테스트 를 재 개 하기 위해 기 존 데이터 베 이 스 를 삭제 합 니 다. 생산 환경 에서 데이터 베 이 스 를 직접 삭제 하지 마 십시오.
[root@rectmp] \ # / etc / init. d / mysql stopping mysql (via systemctl): [확인] [root@rec tmp]# cd /var/lib/[root@rec lib]# rm -rf mysql[root@rec lib]# mkdir -p mysql
16, 회복 -- copy - back
[root@rec lib]# innobackupex --defaults-file=/etc/my.cnf --copy-back /tmp/fullbak/190826 14:37:24 completed OK!
17. 관찰 시작
[root@rec lib]# chown mysql.mysql -R mysql[root@reclib] \ # / etc / init. d / mysql start mysql 시작 (via systemctl): [확인] [root@rec lib]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 9Server version: 10.2.26-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select * from full.incr; +----+------------------+| id | tag | + - + ---------------------------------------------------------------------- + 3 rows in set (0.00 sec)
MariaDB [(none)]> exitBye
18. 백업 스 크 립 트
#backup.sh
#!/bin/sh
#on xtrabackup 2.2.8
#                    ,           
#          ,                             

INNOBACKUPEX_PATH=/usr/bin/innobackupex  #INNOBACKUPEX   
INNOBACKUPEXFULL=/usr/bin/innobackupex  #INNOBACKUPEX     

#mysql             
MYSQL_CMD="--host=localhost --user=root --password=20190826 --port=3306"

MYSQL_UP=" --user=root --password='20190826' --port=3306 "  #mysqladmin       

TMPLOG="/tmp/innobackupex.$$.log"

MY_CNF=/etc/my.cnf.d/wsrep.cnf #mysql     

MYSQL=/usr/bin/mysql

MYSQL_ADMIN=/usr/bin/mysqladmin

BACKUP_DIR=/backup #       

FULLBACKUP_DIR=$BACKUP_DIR/full #        

INCRBACKUP_DIR=$BACKUP_DIR/incre #        

FULLBACKUP_INTERVAL=604800 #          ,  : 

KEEP_FULLBACKUP=1 #           

logfiledate=/backup/backup.`date +%Y%m%d%H%M`.txt

#    
STARTED_TIME=`date +%s`

#############################################################################

#        

#############################################################################

error()
{
    echo "$1" 1>&2
    exit 1
}

#       

if [ ! -x $INNOBACKUPEXFULL ]; then
error "$INNOBACKUPEXFULL        /usr/bin."
fi

if [ ! -d $BACKUP_DIR ]; then
error "       :$BACKUP_DIR   ."
fi

mysql_status=`netstat -nl | awk 'NR>2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'`

if [ "$mysql_status" != "Yes" ];then
    error "MySQL       ."
fi

if ! `echo 'exit' | $MYSQL -s $MYSQL_CMD` ; then
error "               !"
fi

#        

echo "----------------------------"
echo
echo "$0: MySQL    "
echo "   : `date +%F' '%T' '%w`"
echo

#            

mkdir -p $FULLBACKUP_DIR
mkdir -p $INCRBACKUP_DIR

#         
LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P
" | sort -nr | head -1` # LATEST_FULL_BACKUP_CREATED_TIME=`stat -c %Y $FULLBACKUP_DIR/$LATEST_FULL_BACKUP` # if [ "$LATEST_FULL_BACKUP" -a `expr $LATEST_FULL_BACKUP_CREATED_TIME + $FULLBACKUP_INTERVAL + 5` -ge $STARTED_TIME ] ; then # echo -e " $LATEST_FULL_BACKUP , $LATEST_FULL_BACKUP " echo " " NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP mkdir -p $NEW_INCRDIR # . LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d -printf "%P
" | sort -nr | head -1` if [ ! $LATEST_INCR_BACKUP ] ; then INCRBASEDIR=$FULLBACKUP_DIR/$LATEST_FULL_BACKUP echo -e " $INCRBASEDIR " echo " " else INCRBASEDIR=$INCRBACKUP_DIR/${LATEST_FULL_BACKUP}/${LATEST_INCR_BACKUP} echo -e " $INCRBASEDIR " echo " " fi echo " $INCRBASEDIR ." $INNOBACKUPEXFULL --defaults-file=$MY_CNF --galera-info --kill-long-query-type=select --use-memory=4G $MYSQL_CMD --incremental $NEW_INCRDIR --incremental-basedir $INCRBASEDIR > $TMPLOG 2>&1 # cat $TMPLOG>$logfiledate if [ -z "`tail -1 $TMPLOG | grep 'completed OK!'`" ] ; then echo "$INNOBACKUPEX :"; echo echo -e "---------- $INNOBACKUPEX_PATH ----------" cat $TMPLOG /bin/rm -f $TMPLOG exit 1 fi THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG` /bin/rm -f $TMPLOG echo -n " :$THISBACKUP" echo # LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P
" | sort -nr | head -1` NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d -printf "%P
" | sort -nr | head -1` RES_FULL_BACKUP=${FULLBACKUP_DIR}/${LATEST_FULL_BACKUP} RES_INCRE_BACKUP=`dirname ${INCRBACKUP_DIR}/${LATEST_FULL_BACKUP}/${LATEST_INCR_BACKUP}` echo echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' # echo -e " $KEEP_FULLBACKUP ${RES_FULL_BACKUP} ${RES_INCRE_BACKUP} ." echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' # echo else echo "*********************************" echo -e "find expire backup file...........waiting........." echo -e " ">>$logfiledate for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +4) do if [ -d ${efile} ]; then /bin/rm -rf "${efile}" echo -e " :${efile}" >>$logfiledate elif [ -f ${efile} ]; then /bin/rm -rf "${efile}" echo -e " :${efile}" >>$logfiledate fi; done if [ $? -eq "0" ];then echo echo -e " " fi echo -e " ... ..." echo "*********************************" $INNOBACKUPEXFULL --defaults-file=$MY_CNF --galera-info --kill-long-query-type=select --use-memory=4G $MYSQL_CMD $FULLBACKUP_DIR > $TMPLOG 2>&1 # cat $TMPLOG>$logfiledate if [ -z "`tail -1 $TMPLOG | grep 'completed OK!'`" ] ; then echo "$INNOBACKUPEX :"; echo echo -e "---------- $INNOBACKUPEX_PATH ----------" cat $TMPLOG /bin/rm -f $TMPLOG exit 1 fi THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG` /bin/rm -f $TMPLOG echo -n " :$THISBACKUP" echo # LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P
" | sort -nr | head -1` RES_FULL_BACKUP=${FULLBACKUP_DIR}/${LATEST_FULL_BACKUP} echo echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' # echo -e " , $KEEP_FULLBACKUP ${RES_FULL_BACKUP}." echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' # echo fi # echo -e "find expire backup file...........waiting........." echo -e " ">>$logfiledate for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +7) do if [ -d ${efile} ]; then /bin/rm -rf "${efile}" echo -e " :${efile}" >>$logfiledate elif [ -f ${efile} ]; then /bin/rm -rf "${efile}" echo -e " :${efile}" >>$logfiledate fi; done if [ $? -eq "0" ];then echo echo -e " " fi # echo -e " " >>$logfiledate for exfile in $(/usr/bin/find $INCRBACKUP_DIR/ -mtime +7) do if [ -d ${exfile} ]; then /bin/rm -rf "${exfile}" echo -e " :${exfile}" >>$logfiledate elif [ -f ${exfile} ]; then /bin/rm -rf "${exfile}" echo -e " :${exfile}" >>$logfiledate fi; done if [ $? -eq 0 ] then echo echo -e " " fi echo echo " : `date +%F' '%T' '%w`" exit 0

문제 에 봉착 하 다
1, Mariadb 오픈 innodbsafe_다음 과 같은 오류 가 발생 했 습 니 다. InnoDB: 지원 되 지 않 는 redo 로그 형식 입 니 다. MariaDB 10.2.26 로 redo 로그 가 생 성 되 었 습 니 다.http://dev.mysql.com/doc/refman/5.7/en/upgrading-downgrading.html닫 으 면 됩 니 다 [root@rec mnt]# cat /etc/my.cnf.d/server.cnf |grep safeinnodb_safe_truncate=0[root@rec mnt]#
2. 긴 조회 로 인해 메 인 복사 신문 지연 -- kill - long - queries - timeout = 120, -- kill - long - query - y - type = select
3. innobackupex 에서 자주 사용 하 는 매개 변수:
--user=USER                           ,            
--password=PASSWD                       
--port=PORT                            
--defaults-group=GROUP-NAME              
--host=HOST                            ,           
--apply-log                         
--database                                ,            
--defaults-file                   mysql     
--copy-back                                 
--incremental                       ,           
--incremental-basedir=DIRECTORY                       
--incremental-dir=DIRECTORY                         ,        
--redo-only                              
--rsync                                 ,   non-InnoDB     。  --stream  
--no-timestamp                                 .
--kill-long-queries-timeout              Xtrabackup  FLUSH TABLES WITH READ LOCK  ,       ,               ,kill-long-queries-timeout      0 ,xtrabackup        ,        show full processlist,  TIME  kill-long-queries-timeout, kill   
--kill-long-query-type              kill  sql  。      kill-long-query-type    all,         kill 。        ,   kill-long-queries-timeout,   kill-long-query-type ,      !
--defaults-extra-file                    defaults-file            MySQL  ,               。                     。
--datadir                       backup    ,mysql       。 my.cnf   ,       。
--slave-info                          slave         ,   master    binlog pos,        change 。master     xtrabackup_slave_info  。
--safe-slave-backup                            ,      SQL      show status  slave_open_temp_tables 0       ,         ,bakcup     ,  SQL               。  slave_open_temp_tables --safe-slave-backup-timeount(  300 )     0,  sql             。
--ftwrl-wait-query-type                             ,   ALL,  update。
--history                            percona server         percona_schema.xtrabackup_history 。
--backup                                --target-dir   。
--parallel                                         ,    1。
--compress                             innodb       。
--compress-threads                       worker     。
--stream                                    ,backup          STDOUT,     tar xbstream。
--encrypt                              ENCRYPTION_ALGORITHM     innodb       ,        ASE128,AES192,AES256。
--encrypt-threads                         worker    。
--encryption-key-file                                  ,  key            :openssl rand -base64 24。
--galera-info                                            xtrabackup_galera_info  ,         PXC。

좋은 웹페이지 즐겨찾기