binlog Server收集binlog日志
Write by lyc at 2020-8-20
binlog备份服务——binlog server
binlog_server
1.binlog Server
原理
mysqlbinlog
会伪装成一个slave连接读取,请求指定的binlog file,主库获取接收到这个请求之后就创建一个binlog dump线程推送binlog给mysqlbinlog server。
进程启动后可以根据show processlist;
查看到
注意点
- mysql master进程退出后,binlog server进程也会退出
- mysql5.6 在mysqlbinlog命令执行结束时追加rollback语句 但是5.7没有这个问题需要注意下
优点
最好准备一台机器进行线上binlog的统一收集,这样有几个好处:
- 易于管理部署,包括日志本身和进程管理
- 利用开源工具进行binlog解析时可以减少dump时间
- 统一进行收集时要做好之前binlog与日期对应的记录,这样在恢复之前,能找到对应的binlog
- 做好binlog_server的进程监控
2.binlog Server 参数解析
1 | $ mysqlbinlog --read-from-remote-server --raw --host=${MYSQL_HOST} --port=${MYSQL_PORT} --user=${MYSQL_SLAVE_USER} --password=${MYSQL_SLAVE_PASSWORD} --stop-never-slave-server-id=${MYSQL_SERVER_ID} --stop-never ${LAST_BINLOG} & |
-R
,--read-from-remote-server
从远端拉binlog,不加会在本地找--raw
本地以二进制方式保存binlog,若不指定则会以文本形式保存- 指定了
--raw
数据不会时时落盘,而是先 保存到内存里,然后每4k刷盘一次,一旦连接断开,内存中数据马上都刷到磁盘上 - 不指定
--raw
,则需要用--result-file
参数指定数据写入某个文本,不可指定为目录,此时数据会时时刷盘
- 指定了
--stop-never
持续连续从主节点拉取binlog,持续备份到当前最后一个,并继续下去。--stop-never-slave-server-id
默认值65535,用于在多个mysqlbinlog进程或者从服务器的情况下,避免SERVER_ID冲突。${LAST_BINLOG}
从master上的哪一个binlog文件开始同步,在主库上执行show binary LOGS;
查看binlog日志列表,测试的时候可以在主库执行FLUSH LOGS;
切割binlog日志,查看是否被同步成功。
3.binlog Server 脚本
binlogServer_192.168.xxx.xxx_3306.sh
1 | $ cat binlogServer_192.168.xxx.xxx_3306.sh |
开机自启动
1 | $ chmod +x /etc/rc.d/rc.local |