MySQL 不开启slave如何完成异地复制

原创 2017年07月31日 15:57:45

1,分批次通过远程的binlog来进行数据加载

业务新需求,线上数据库数据拉到本次,但是不允许开启slave服务,不建立直接外网的数据库账号,也不能打通数据库对外网的网络,所以我们测试环境无法通过普通的slave主从复制机制来获得实时数据。


想了一个办法,将binlog放在一个可获取的安全服务器上,然后把binlog拉到测试环境,在测试环境解析binlog加载数据。



2,远程获取binlog日志记录

写一个远程能获取binlog日志记录的脚本,一个小时拉一次binlog记录

[root@db12162bright]# more get_binlog.sh 
#!/bin/bash

loadlogfile=/home/mysql/binlogs/bright/get_binlogs.log
dir=$(date +%Y%m%d%H)
echo "---- "$dir" begin-----------------------------------------------------------------------------------------">> $loadlogfile 
mkdir -p /home/mysql/binlogs/bright/$dir
echo "begin to get bright binlogs ......"  >> $loadlogfile
ftp -n<<!
open 120.132.27.91 21
user downdata RakudespuH3bAk+ruy
binary
cd bright/$dir
lcd /home/mysql/binlogs/bright/$dir
prompt
mget mysql-bin*
close
bye
!

ls -l /home/mysql/binlogs/bright/$dir >> $loadlogfile

echo $(date +%Y-%m-%d-%H:%M:%S) >> $loadlogfile
echo "get binlogs end ..." >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile



3,加载远程过来的binlog

在上个step2之后,立即加载binlog,获得数据显示

#sh load_data_frombinlog.sh $dir 



if [ ! -n "$1" ]; then
        echo -e "需输入日期参数如:2017060909\n"
        echo -e "需输入日期参数如:2017060909\n"  >> $loadlogfile

#        exit
fi

loadlogfile=/home/mysql/binlogs/bright/bright_load_data.log
filename=`date '+%Y%m%d_%H%M%S'`.txt
#find /home/mysql/binlogs/bright -amin -1300 -name mysql-bin.*.zip |sort -n> $filename
find /home/mysql/binlogs/bright/$dir -name mysql-bin.*.zip |sort -n> $filename
echo `date '+%Y-%m-%d %H:%M:%S'`  >> $loadlogfile
echo "begin to load data from binlog ......" >> $loadlogfile
echo $filename >> $loadlogfile
for binlogfile in `cat $filename`
do
    echo ""
    echo "begin to load binlog"  >> $loadlogfile
    echo $binlogfile
    chmod +x  $binlogfile
    dir_binlog=`/usr/bin/dirname $binlogfile`
    realbinlogfile=${binlogfile%.zip}
    rm -rf $realbinlogfile
    unzip $binlogfile -d  $dir_binlog
    echo "unzip binlog $binlogfile"  >> $loadlogfile
    echo "binlog file is: $realbinlogfile" >> $loadlogfile
    rm -rf $realbinlogfile.sql
    /usr/local/mysql3309/bin/mysqlbinlog $realbinlogfile > $realbinlogfile.sql
    echo "create sql file $realbinlogfile.sql from $realbinlogfile" >> $loadlogfile
    echo "begin to load data" >> $loadlogfile
    #mysqlruninfo=`/usr/local/mysql3309/bin/mysql -uroot --password="bright_yueworld" -S /usr/local/mysql3309/mysql.sock < $realbinlogfile.sql`
    #$mysqlruninfo >> $loadlogfile
    /usr/local/mysql3309/bin/mysql -uroot --password="bright_yueworld" -S /usr/local/mysql3309/mysql.sock < $realbinlogfile.sql
    #echo $mysqlruninfo >> $loadlogfile
    echo "load $realbinlogfile data end" >> $loadlogfile
    echo "" >> $loadlogfile
    echo "" >> $loadlogfile
done
echo "---- "$dir" end----------------------------------------------------------------------------------------------" >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile
echo "" >> $loadlogfile
[root@db12162bright]# 

mysql-5.6.28主从备份,异地容灾

首先在两台MySQL服务器192.168.1.89(主)和192.168.1.90(备)上安装版本一样的mysql,大家可以参照着点击打开链接去安装 安装好以后在192.168.1.89(主)上面的...
  • qq_22929803
  • qq_22929803
  • 2016年04月26日 22:08
  • 3223

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到...
  • binyao02123202
  • binyao02123202
  • 2014年02月17日 07:22
  • 40619

MySQL 不开启slave如何完成异地复制

1,分批次通过远程的binlog来进行数据加载业务新需求,线上数据库数据拉到本次,但是不允许开启slave服务,不建立直接外网的数据库账号,也不能打通数据库对外网的网络,所以我们测试环境无法通过普通的...
  • mchdba
  • mchdba
  • 2017年07月31日 15:57
  • 781

学一点 mysql 双机异地热备份—-mysql主从,主主备份原理及实践

简单介绍mysql双机,多机异地热备简单原理实战。 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样...
  • kk185800961
  • kk185800961
  • 2015年10月12日 23:22
  • 1667

mysql从库启动时怎样不自动启动复制

mysql默认启动时(service mysql start),slave也会自动启动复制。IO进程和SQL进程状态都为Yes. 怎样让从不自动启动复制呢? 在配置文件的mysqld下添加一行:s...
  • YABIGNSHI
  • YABIGNSHI
  • 2016年07月06日 08:51
  • 1219

MySQL学习笔记--复制建立新Slave的方法:克隆Master\Slave

即建立新的Slave的方法 前面已经在文章“简单配置MySQL复制”中配置Slave时,没有说明复制从哪里开始,所以Slave是从头开始读取Master的binlog日志的。 但如果Master已经运...
  • lichangzai
  • lichangzai
  • 2015年12月31日 11:06
  • 2592

数据库的异地复制和同步

  • 2009年07月10日 10:35
  • 3.54MB
  • 下载

MySQL:将远程服务器的数据库拷到本地/复制他人数据库

这本来是很久很久之前学习的笔记,一直以txt形式记录在电脑上,最近发现还是有必要写出来,方便蜜汁失忆的自己经常回顾完整命令:mysqldump -h '114.212.111.123' -uTHATU...
  • ycisacat
  • ycisacat
  • 2016年09月19日 17:13
  • 6739

slave的启动和关闭

mysql> stop slave; Query OK, 0 rows affected (0.05 sec) mysql> show slave status\G; **************...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2015年06月05日 10:18
  • 695

主从 mysql (master slave) 复制原理及配置

1 复制概述       Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slave...
  • bigtree_3721
  • bigtree_3721
  • 2016年03月29日 23:48
  • 567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL 不开启slave如何完成异地复制
举报原因:
原因补充:

(最多只允许输入30个字)