• Linux7_MySQL5.7_主从复制_scripts


    # cat my_full_backup.sh 
    #!/bin/bash 
    BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"` 
    format_time=`date +"%Y-%m-%d_%H:%M:%S"` 
    week=`date +%w` 
    port=3306 
    ip=192.168.1.101 
    backdir=/tmp/xtrabackup 
    file_cnf=/app/mysqldata/3306/my.cnf 
    user_name=xtrabk
    password=onlybackup
    out_log=$backdir/Xtrabackup_log_$format_time 
    time_cost=$backdir/Xtrabackup_time.txt
    mysql_path=/usr/bin
    
    mkdir -p $backdir
    
    #full 
    if [ ! -d "$backdir/full" ];then
            echo "#####start full backup at $BEGINTIME to directory full" >>$time_cost
            ${mysql_path}/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel=4 --throttle=200 --kill-long-queries-timeout=300 --kill-long-query-type=select --user=$user_name --password=$password   --host=$ip --port=$port  $backdir/full 1> $out_log 2>&1
    fi
    ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
    begin_data=`date -d  "$BEGINTIME" +%s`
    end_data=`date -d  "$ENDTIME" +%s`
    spendtime=`expr $end_data - $begin_data`
    echo "it takes $spendtime sec for packing the data directory" >>$time_cost
    # cat my_full_recover_slave.sh 
    #NOTE:恢复开始前请确保mysql服务停止以及数据和日志目录清空,如
    rm -rf /app/mysqldata/3306/data/*
    rm -rf /app/mysqldata/3306/binlog/*
    rm -rf /app/mysqldata/3306/redolog/*
    rm -rf /app/mysqldata/3306/tmp/*
    rm -rf /app/mysqldata/3306/undolog/*
    #rm -rf /app/mysqldata/3306/error.log /app/mysqldata/3306/slow-queries.log
    
    INNOBACKUPEX=innobackupex
    INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX
    TMP_LOG="/tmp/restore.$$.log"
    MY_CNF=/etc/my.cnf
    BACKUP_DIR=/tmp/xtrabackup # 你的备份主目录
    FULLBACKUP_DIR=$BACKUP_DIR/full # 全库备份的目录
    MEMORY=2048M # 还原的时候使用的内存限制数
    ERRORLOG=`grep -i "^log_error" $MY_CNF |cut -d = -f 2`
    SLOWLOG=`grep -i "^slow_query_log_file" $MY_CNF |cut -d = -f 2` MYSQLD_SAFE
    =/usr/local/mysql/bin/mysqld_safe MYSQL=/usr/local/mysql/bin/mysql MYSQL_PORT=3306 SOCK_FILE=/app/mysqldata/3306/mysql.sock MASTER_DB_IP=192.168.1.101 MASTER_DB_PORT=3306 master_user=xtrabk master_password=onlybackup check_innobackupex_fail() { if [ -z "`tail -2 $TMP_LOG | grep 'completed OK!'`" ] ; then echo "$INNOBACKUPEX命令执行失败:"; echo echo "---------- $INNOBACKUPEX的错误输出 ----------" cat $TMP_LOG #保留一份备份的详细日志 logfiledate=restore.`date +%Y%m%d%H%M`.txt cat $TMP_LOG>/tmp/$logfiledate rm -f $TMP_LOG exit 1 fi } echo "*****************************" echo "Prepare:使用完整备份进行恢复..........." echo "*****************************" $INNOBACKUPEX_PATH --defaults-file=$MY_CNF --apply-log --redo-only --use-memory=$MEMORY $FULLBACKUP_DIR > $TMP_LOG 2>&1 check_innobackupex_fail echo "*****************************" echo "Copyback:数据库还原中 ...请稍等" echo "*****************************" $INNOBACKUPEX_PATH --defaults-file=$MY_CNF --copy-back $FULLBACKUP_DIR > $TMP_LOG 2>&1 chown -R mysql:mysql /app/mysqldata/3306 check_innobackupex_fail rm -f $TMP_LOG echo "1.恭喜,还原成功!." echo "*****************************"
    touch $ERRORLOG
    touch $SLOWLOG
    chown mysql:mysql $ERRORLOG
    chown mysql:mysql $SLOWLOG #自动启动mysql INIT_NUM=1 if [ ! -x $MYSQLD_SAFE ]; then echo "mysql安装时启动文件未安装到$MYSQLD_SAFE或无执行权限" exit 1 #0是执行成功,1是执行不成功 else echo "启动本机mysql端口为:$MYSQL_PORT的服务" $MYSQLD_SAFE --defaults-file=$MY_CNF > /dev/null & while [ $INIT_NUM -le 10 ] do PORTNUM=`netstat -lnt|grep ${MYSQL_PORT}|wc -l` echo "mysql启动中....请稍等..." sleep 10 if [ $PORTNUM = 1 ]; then echo -e "e[32m mysql****启动成功**** e[m" GTID_PURGED=`cat $FULLBACKUP_DIR/xtrabackup_binlog_info | awk '{print $3}'` SQL1="reset master;SET @@GLOBAL.GTID_PURGED='$GTID_PURGED';" SQL2="change master to master_host='$MASTER_DB_IP',master_port=$MASTER_DB_PORT,master_user='$master_user',master_password='$master_password',master_auto_position=1;" SQL3="set global read_only=on;set global super_read_only=on;" SQL4="start slave;" $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL1" $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL2" $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL3" $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL4" sleep 2 $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "show slave statusG" echo -e "e[32m mysql 从库配置成功 e[m" exit 0 fi INIT_NUM=$(($INIT_NUM +1)) done echo -e "e[31m mysql启动失败或启动时间过长,请检查错误日志 `echo 'cat ' ${ERRORLOG}` e[m" echo "*****************************************" exit 0 fi exit 0
  • 相关阅读:
    python json 访问与字符串截取
    python 12306 车次数据获取
    12306 城市代码 切片技巧
    python 9*9 乘法表
    python 列表转为字典的两个小方法
    python 三种遍历列表里面序号和值的方法
    虚拟机中访问连接在物理机上的摄像机(使用桥接)
    C++程序调用python3
    Notepad++编写运行python程序
    查看进程被哪台电脑的哪个进程连接(netstat)
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11316723.html
Copyright © 2020-2023  润新知