我们最近对我们的基础设施进行了一些更改,现在我无法保持 MySQL 复制运行。奴隶抱怨二进制日志损坏,重置它无济于事。我一直在我的主日志中看到这样的条目:
二进制日志' WFxKTRNJAAAAPwAAAKY/YwAAABsAAAAAAAEACHdlYmVkaTMwAA1QYXJ0bmVyQ29uZmlnAAQICA8P BC0AYwAA WFxKTRhJAAAAXAAAAAAJAYwAAABsAAAAAAAEABP//8BoSAAAAAAAAAAggMAAAAAAAAJUEFDS0NPVU5U Azc3MfAaEgAAAAAAAIIDAAAAAAAACVBBQ0tDT1VOVAM3NzI= '/*!*/;
在从属日志中,这只是作为“未知事件”出现,并且复制在该位置失败。
这是我给主人的 my.cnf:
[mysqld] datadir=/data/mysql-data 套接字=/tmp/mysql.sock 用户=mysql 日志错误=/var/log/mysqld.log binlog-do-db = db1 binlog-do-db = db2 binlog-do-db = db3 binlog-do-db = db4 binlog_format = '混合' log-bin = /data/mysql-binlogs/mysql-bin.log 服务器 ID=73 报告主机=thisserver.mydomain.com 线程缓存大小 = 30 key_buffer_size = 700M myisam_sort_buffer_size = 300M table_cache = 256 sort_buffer_size = 4M read_buffer_size = 1M innodb_data_home_dir = /data/mysql-data/ innodb_data_file_path = InnoDB:100M:autoextend 设置变量 = innodb_buffer_pool_size=500M 设置变量 = innodb_additional_mem_pool_size=10M 设置变量 = max_connections=500 innodb_log_group_home_dir = /data/mysql-data 设置变量 = innodb_log_file_size=20M 设置变量 = innodb_log_buffer_size=8M …
我有一个生产数据库,我通常每周运行一次完整备份。我为增量备份打开了 bin 日志。
生产服务器在西海岸,而营业时间在东海岸。
当我执行全备份时,我会查询主服务器的日志和位置。我将这些值放在我将数据库压缩到的 zip 文件名中。
我在使用 mysqlbinlog 从我知道备份已经结束的某个位置创建增量 sql 文件时遇到了困难。
运行Show Master Status然后运行mysqldump --flush-logs --single-transaction...就足以获得准确的信息以进行恢复。
我知道理想的设置是备份从属数据库,因为锁定不会损害生产环境,但目前我还没有进行切换。
因为我没有锁定所有表,所以我没有得到理想的结果吗?
提前致谢
编辑
在 RolandoMySQLDBA 的帮助下,我意识到我没有指向适当的 binlog 文件。我改为指向整个目录binlog/bin-log.[0-9]* > sql.txt。因此,仅使用该位置,我就可以击中比预期更早开始的日志。所以我更改了我的脚本以提取适当的 binlog 文件以及位置,这就像一个魅力。
谢谢