远程备份binlog服务

时间:2022-05-13 14:50:38

Ⅰ、bonlog server介绍

对于binlog的备份,之前文章里说的是有从机,一般不备份,那现在人家就是 要备份嘛,怎么办嘛,

写个脚本每天夜里去把前一天产生的binlog拷贝出来可以不?

行啊,没问题,你可以的,但你这个一下子整会不会有点累嘛

从5.6版本开始,我们有更好的办法了,用mysqlbinlog可以将远端的binlog时时地拉取到本地来

这可不是简单的拷贝哦,是通过Replication API去时时拉取产生的event,相当于做了一个主从。

Ⅱ、给我弄,操作起来

MySQL server

准备工作:创建rpl账号,授予replication权限

看下当前二进制文件是which one?
(root@localhost) [(none)]> show master status;
+------------+----------+--------------+------------------+---------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+---------------------------------------------+
| bin.000022 | 194 | | | d565cde8-0573-11e8-89b2-525400a4dac1:1-1747 |
+------------+----------+--------------+------------------+---------------------------------------------+
1 row in set (0.00 sec)

binlog server

[root@VM_42_63_centos backup]# pwd
/data/backup
在备份目录下弄
[root@VM_42_63_centos backup]# mysqlbinlog --read-from-remote-server --raw --host=123.207.244.133 --port=3306 --user=rpl --password=123 --stop-never bin.000022 &
[1] 17292
[root@VM_42_63_centos backup]# mysqlbinlog: [Warning] Using a password on the command line interface can be insecure. 看下binlog拉过来了没?no problem!!!
[root@VM_42_63_centos backup]# ll
total 4
-rw-r----- 1 root root 194 Mar 21 16:38 bin.000022

MySQL server 刷一刷

(root@localhost) [(none)]> flush binary logs;
Query OK, 0 rows affected (0.02 sec) (root@localhost) [(none)]> flush binary logs;
Query OK, 0 rows affected (0.02 sec) (root@localhost) [(none)]> flush binary logs;
Query OK, 0 rows affected (0.02 sec) (root@localhost) [(none)]> flush binary logs;
Query OK, 0 rows affected (0.03 sec) (root@localhost) [(none)]> show master status;
+------------+----------+--------------+------------------+---------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+---------------------------------------------+
| bin.000026 | 194 | | | d565cde8-0573-11e8-89b2-525400a4dac1:1-1747 |
+------------+----------+--------------+------------------+---------------------------------------------+
1 row in set (0.00 sec)

binlog server

[root@VM_42_63_centos backup]# ll
total 20
-rw-r----- 1 root root 235 Mar 21 16:38 bin.000022
-rw-r----- 1 root root 235 Mar 21 16:38 bin.000023
-rw-r----- 1 root root 235 Mar 21 16:38 bin.000024
-rw-r----- 1 root root 235 Mar 21 16:38 bin.000025
-rw-r----- 1 root root 194 Mar 21 16:38 bin.000026
okay ! 没毛病,都同步过来了、

Ⅲ、重要参数参数

--read-from-remote-server:从远端拉binlog,不加会在本地找
--raw:本地以二进制方式保存binlog,不指定则以文本保存
--stop-never:一直同步不断
bin.000022:从这个binlog文件开始拉
  • 指定为raw,数据不会时时落盘,而是先搞到内存里,然后每4k刷盘一次,一旦连接断开,内存中数据马上都刷到磁盘上
  • 不指定raw,则需要用--result-file参数指定数据写入某个文本,不可指定为目录,此时数据会时时刷盘

Ⅳ、问题与解决

如果mysqlbinlog断了怎么办,并不会像主从一样去尝试重连

这里我抄袭一个陈老师脚本(陈老师博客请百度搜索ivictor)

思路:将mysqlbinlog写在一个死循环里,断了就发起重新执行

#!/bin/sh
BACKUP_BIN=/usr/bin/mysqlbinlog
LOCAL_BACKUP_DIR=/backup/binlog/
BACKUP_LOG=/backup/binlog/backuplog REMOTE_HOST=192.168.244.145
REMOTE_PORT=3306
REMOTE_USER=repl
REMOTE_PASS=repl
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服务的更多相关文章

  1. 使用mysqlbinlog server远程备份binlog的脚本

    #注意,备份机到远程mysql服务器需要免密钥登录,此脚本放到计划任务中每五分钟执行一次,避免mysqlbinlog server进程长时间挂掉无人知晓   cat backup_binlog.sh ...

  2. 如何远程备份MySQL binlog

    以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中.但是这其中还是有一定风险的,因为日志的备份都是周期性的,如果在某个周期中,服务器宕机了,硬盘损坏了,就可能导致这段时间的bin ...

  3. sql server远程备份和恢复

    sql server远程备份和恢复 SQLSERVER服务实例名称:192.168.0.2需要备份的数据库名称: a备份机器名称(Client端):192.168.0.3备份机用户:zf 密码:123 ...

  4. Linux远程备份—ftp方式、NFS方式

    问题:现在项目中每天都有从其它各个系统发过来的数据文件(存放在/var/data目录下,以.txt结尾),虽然很久以前的文件很少用到,占用了很多空间,却不能删除.于是,想把一个月以前的文件都压缩了传到 ...

  5. 用rsync从Linux到Windows远程备份

    论 rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来 了——remote sync.rsync支持大多数的类Unix系统,无论是Linux.Solaris还是BSD上都经过了 ...

  6. SQL远程备份

    原文:SQL远程备份 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go   -- ====================================== ...

  7. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  8. 利用腾讯云COS云对象存储定时远程备份网站

    版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...

  9. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

随机推荐

  1. Eclipse Maven Spring MyBatis 配置

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. CANopen学习——同步

    在发送和接收之间必须相互协调和同步,为此,CANopen引入同步的概念. 同步报文:包含一个数据字节或者不含数据字节的CAN报文.数据字节中包含一个从1开始递增计数的同步计数器.溢出值可在参数(索引1 ...

  3. Java判断访问设备为手机、微信、PC工具类

    package com.lwj.util; import javax.servlet.http.HttpServletRequest; /** * 判断访问设备为PC或者手机--工具类 * * @de ...

  4. C&num; WinForm给Button按钮或其它控件添加快捷键响应

    就在这介绍三种添加快捷键的方式. 第一种Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1 ...

  5. 【转】eclipse使用git提交到osc

    转自:http://my.oschina.net/gaowm/blog/271623 目录[-] 一.Git下载 二.Git安装 三.设置用户名和密码 四.准备代码库 五.创建本地仓库 六.eclip ...

  6. HDU 1199 - Color the Ball 离散化

    [题意]现在有几个球排成一排,编号从1开始,开始时所有球为黑色,现在有n(<=2000)次操作,每次操作将l[i]至r[i](均在int范围)的球凃成颜色c[i](黑色'b'或白色'w'),然后 ...

  7. js里面&OpenCurlyDoubleQuote;&equals;&equals;&equals;”与&OpenCurlyDoubleQuote;&equals;&equals;”的区别

    首先,== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ==,不做类型转换,类型不同的一定不等.  下面分别说明: 先说 === ...

  8. jquery 插件 validate 学习

    jquery是十分方便的对于现在来说. 首先应该明白一个问题: <p> <label  for="password">Password</label& ...

  9. 小强的HTML5移动开发之路(13)——HTML5中的全局属性

    来自:http://blog.csdn.net/dawanganban/article/details/18179483 一.accssskey  快捷键 <!DOCTYPE HTML> ...

  10. Spring 事务管理案例

    事务管理简介   Spring 事务管理有两种方式:一种是编程式事务管理,即通过编写代码实现事物管理,包括定义事务的开始,程序正常执行后的事物提交,异常时进行的事务回滚.另一种是基于AOP技术实现的声 ...