MariaDB 10.2.26 xtrabackup 중요 절차 기록
14772 단어 MariaDBxtrabackup중요 절차 기록
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。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PHP-AJAX-CRUD 게시판 구현하기maria db 데이터베이스 기반으로 php 게시판을 제작한다. 기본 CRUD 기능은 AJAX를 활용해 별도 새로 고침 없이 값을 넘겨줄 수 있도록 한다. 기본 디렉토리 구조는 다음과 같다. 테이블 구조는 tbl 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.