• ADADADADAD

    binlog 备份是怎么样的[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:11:44

    作者:文/会员上传

    简介:

    binlog server说明:有时候备份会选择全备+binlog 那么你们的binlog都是怎么备份的?mysql 5.6以后,可以利用mysqlbinlog 把远程机器的日志备份到本地目录 从而达到增量或是日志

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    binlog server

    说明:有时候备份会选择全备+binlog 那么你们的binlog都是怎么备份的?
    mysql 5.6以后,可以利用mysqlbinlog 把远程机器的日志备份到本地目录 从而达到增量或是日志安全的增量备份。
    环境:
    mysql-5.7.16
    centos 6.7

    172.16.11.187:binlog server(收集binlog的数据库服务器)
    172.16.11.188 : 需要备份binlog的数据库所在机器


    利用mysqlbinlog将远程binlog文件传到binlogserver上
    187:mysqlbinlog -R --raw --host=172.16.11.188 --user='root' --password='123456' -P 3306 --stop-never mysql-bin.000005 (执行命令是所在路径是/root)a


    188:mysql> show binary logs;
    +------------------+-----------+
    | Log_name | File_size |
    +------------------+-----------+
    | mysql-bin.000001 |177 |
    | mysql-bin.000002 |426 |
    | mysql-bin.000003 |9688778 |
    | mysql-bin.000004 |177 |
    | mysql-bin.000005 |201 |
    | mysql-bin.000006 |154 |
    +------------------+-----------+
    6 rows in set (0.00 sec)


    mysql> flush logs;
    Query OK, 0 rows affected (0.01 sec)


    mysql> flush logs;
    Query OK, 0 rows affected (0.00 sec)


    mysql> flush logs;
    Query OK, 0 rows affected (0.00 sec)


    mysql> flush logs;
    Query OK, 0 rows affected (0.00 sec)


    mysql> show binary logs;
    +------------------+-----------+
    | Log_name | File_size |
    +------------------+-----------+
    | mysql-bin.000001 |177 |
    | mysql-bin.000002 |426 |
    | mysql-bin.000003 |9688778 |
    | mysql-bin.000004 |177 |
    | mysql-bin.000005 |201 |
    | mysql-bin.000006 |201 |
    | mysql-bin.000007 |201 |
    | mysql-bin.000008 |201 |
    | mysql-bin.000009 |201 |
    | mysql-bin.000010 |154 |
    +------------------+-----------+
    10 rows in set (0.00 sec)


    在binlog server上查看在188上flush log 新增的binlog有没有过来:
    [root@ces1 ~]# ls -lrth
    total 9.4M
    -rw-r----- 1 root root 201 Aug 14 15:25 mysql-bin.000005
    -rw-r----- 1 root root 201 Aug 14 15:31 mysql-bin.000006
    -rw-r----- 1 root root 201 Aug 14 15:31 mysql-bin.000007
    -rw-r----- 1 root root 201 Aug 14 15:31 mysql-bin.000008
    -rw-r----- 1 root root 123 Aug 14 15:31 mysql-bin.000010
    -rw-r----- 1 root root 201 Aug 14 15:31 mysql-bin.000009
    -rw-r----- 1 root root 201 Aug 14 15:33 mysql-bin.000015
    -rw-r----- 1 root root 201 Aug 14 15:33 mysql-bin.000016
    -rw-r----- 1 root root 123 Aug 14 15:33 mysql-bin.000018
    -rw-r----- 1 root root 201 Aug 14 15:33 mysql-bin.000017
    发现binlog 已经过来了。
    拓展:一般的主从复制,如果主从连接停止了,会自动尝试连接,binlogserver如果停止了并不会自动尝试连接。
    利用脚本来解决这个问题:
    binlog_remote.sh
    #!/bin/sh
    BACKUP_BIN=/tmp/mysqlbinlog
    LOCAL_BACKUP_DIR=/data/db/binlog_backup
    BACKUP_LOG=/data/db/binlog_backup/backuplog
    REMOTE_HOST=172.16.11.188
    REMOTE_PORT=3306
    REMOTE_USER=root
    REMOTE_PASS=123456
    FIRST_BINLOG=mysql-bin.000001
    #time to wait before reconnecting after failure
    SLEEP_SECONDS=10
    ##create local_backup_dir if necessary
    mkdir -p ${LOCAL_BACKUP_DIR}
    cd ${LOCAL_BACKUP_DIR}
    ## 运行while循环,连接断开后等待指定时间,重新连接
    while :
    do
    if [ `ls -A "${LOCAL_BACKUP_DIR}" |wc -l` -eq 0 ];then
    LAST_FILE=${FIRST_BINLOG}
    else
    LAST_FILE=`ls -l ${LOCAL_BACKUP_DIR} | grep -v backuplog |tail -n 1 |awk '{print $9}'`
    fi
    ${BACKUP_BIN} --raw --read-from-remote-server --stop-never --host=${REMOTE_HOST} --port=${REMOTE_PORT} --user=${REMOTE_USER} --password=${REMOTE_PASS} ${LAST_FILE}
    echo "`date +"%Y/%m/%d %H:%M:%S"` mysqlbinlog停止,返回代码:$?" | tee -a ${BACKUP_LOG}
    echo "${SLEEP_SECONDS}秒后再次连接并继续备份" | tee -a ${BACKUP_LOG}
    sleep ${SLEEP_SECONDS}
    done

    binlog 备份是怎么样的.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: binlog