MySQLbinlog远程备份方法详解
此外,使用脚本来备份远程服务器的方式有一个缺点:无法备份MySQL服务器的二进制日志文件目前正在写的。所以,你只能等到MySQL服务器才可以备份完成。写一binlog时间不固定,导致备份周期的不确定性。
从mysql5.6,mysqlbinlog支持binlog到远程服务器上的本地服务器的实时复制。
对mysqlbinlog实时二进制复制功能不是简单的复制远程服务器的日志。它是由MySQL 5.6.in本质API发布复制二进制事件的实时采集,它相当于MySQL服务器,类似于普通的服务器,当主服务器时,它通常会被备份在0.5 ~ 1秒。
备份命令
复制代码代码如下所示:
mysqlbinlog --读--原--从远程服务器主机= 192.168.244.145端口= 3306 =复制密码= repl用户--永不停止mysql-bin.000001
解释如下:
从远程服务器读取:它是用来备份远程服务器的binlog。如果未指定该选项,当地binlog将抬头。
--原料:binlog日志存储在磁盘上的二进制格式,如果不指定选项,将它保存为文本形式。
-用户:复制的MySQL用户只需要授予复制从属权限。
——永不停止:mysqlbinlog只能从远程服务器获得一些指定的binlog,或保存到本地不断产生binlog。通过指定这个选项,mysqlbinlog不断在远程服务器上复制binlog,只要远程服务器没有关闭或连接不中断。
mysql-bin.000001:代表开始复制,binlog。
除了上述选项外,还有几个选项值得注意:
——永不停止的从属服务器ID:当备份远程服务器的binlog,mysqlbinlog本质上是一个从服务器,它是用来指定从服务器ID。默认值为1。
——最后登录:代表mysqlbinlog,不仅能够获得指定的binlog,但它也可以产生binlog,终止的,直到它完成。如果停止不指定选项,--最后日志选项将被隐式地打开。
——结果文件的binlog用来设置远程服务器,并将其保存到本地前缀。例如,对于mysql-bin.000001,如果结果文件= /测试/备份指定的文件名保存后的地方叫做/测试/ backup-mysql-bin.000001.note:如果你设置——结果文件作为一个目录,你必须采取一个目录分隔符 /。例如,--结果文件= / /测试,没有结果文件= /测试,或文件保存到本地的名字是 / testmysql-bin.000001。
不足:
这样就有问题了。对于常规主从复制,如果直接连接断开,它将再次自动连接。对于mysqlbinlog,如果是断开的,它不会自动连接。
解uff1a
这个缺点可以由剧本来弥补。
# /斌/ SH!
backup_bin = / usr /斌/ mysqlbinlog
local_backup_dir = / / / binlog备份
backup_log = / / / backuplog binlog备份
remote_host = 192.168.244.145
remote_port = 3306
remote_user =复制
remote_pass =复制
first_binlog = mysql-bin.000001
#之前重新连接失败后等待时间
sleep_seconds = 10
# #创建local_backup_dir如果必要
mkdir -p $ { local_backup_dir }
镉local_backup_dir } {
# #而运行周期,连接到指定的等待时间断开后,重新连接
而:
做
如果{ ` ls -$ { local_backup_dir }| WC L ` -情商0 };然后
last_file = $ { first_binlog }
其他的
last_file = ` ls - L $ { } grep -v local_backup_dir backuplog |尾| -N 1 | awk {打印9美元的` }
FI
$ { backup_bin } --原--读--永不停止——从远程服务器主机= { }美元remote_host端口= $ { },{ remote_port用户=美元remote_user },{ remote_pass密码=美元美元last_file } { }
回声`日期+ Y / % M / %% % H:M:%smysqlbinlog、停止、返回代码:$ T恤$ { backup_log } |
回声{ }秒sleep_seconds美元再次连接,继续回到了| T恤$ { backup_log }
美元sleep_seconds } {睡眠
多恩
脚本解释:
1。实际上定义了一个死循环,如果备份失败,然后10s的连接。
2。第一次运行的时候需要指定first_binlog的价值,它是指binlog开始复制,一般mysql-bin.000001.when你跟进,你得到的最新binlog在备份目录和最新的binlog开始复制。
总结:
1。如果原是指定的,mysqlbinlog不会降盘实时获取事件后,但它被保存在本地服务器的第一记忆,每个4K是刷一次,这也降低了频繁的日志写操作。如果mysqlbinlog和主服务器之间的连接断开,此时,记忆中的binlog将立即被刷新到磁盘。
2,虽然mysqlbinlog类似于从服务器,从服务器的relaylog保存在真正的时间,即得到事件从服务器的主服务器生成后,它将被写入relaylog实时。
三.如果不指定,原,这个时候一个文本格式的磁盘,然后--结果文件= /测试/无法为指定的目录,必须明确文件名写,如--结果文件= /测试/ 1.sql,mysqlbinlog到此时,事发后,实时关闭磁盘,并不是每一个4K刷板。
以上是MySQL binlog远程备份教程的相关知识,我想帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。