在使用Binlog前,首先需要确认是否开启了Binlog,此时,我们可以使用下面的命令:
SHOW VARIABLES LIKE ‘LOG_BIN’;
如果可以看到下面的结果,则表示Binlog功能已开启。
如果Binlog没有开启怎么办呢?此时,就需要我们手动来开启,为此我们需要修改MySQL的my.conf文件,通常情况下,该文件位于/etc/my.cnf路径,在[mysqld]下写入如下内容:
# 设置Binlog存储目录
log_bin = /var/lib/mysql/bin-log
# 设置Binlog索引存储目录
log_bin_index = /var/lib/mysql/mysql-bin.index
# 删除7天前的Binlog
expire_logs_days = 7
# 集群内MySQL服务器的ID
server_id = 0002
# 设置Binlog日志模式
binlog_format = ROW
除此之外,我们还可以设置下面这些选项:
# 设置Binlog文件最大的大小
max_binlog_size
# 设置当前多少个事务缓存在内存中
binlog_cache_size
# 设置当前多少个事务暂存在磁盘上
binlog_cache_disk_use
# 设置最大有多少个事务缓存在内存中
max_binlog_cache_size
# 设置选取或者忽略的数据库
binlog_do_db/binlog_ingore_db
设置完以后,通过下面的命令重启MySQL即可:
service mysql restart 或者 service mysqld restart
通常,我们可以通过下面的命令来获取Binlog的当前状态,请注意,该命令必须要在主库上执行:
SHOW MASTER STATUS;
此时,我们会得到下面的结果:
mysqldump全量备份(例子):
mysqldump -uroot -p —single-transaction —master-data=1 db1 > db1.sql
mysqldump会导致锁表,innodb需加上 —single-transaction 选项: