在使用Binlog前,首先需要确认是否开启了Binlog,此时,我们可以使用下面的命令:
    SHOW VARIABLES LIKE ‘LOG_BIN’;
    如果可以看到下面的结果,则表示Binlog功能已开启。
    image.png

    如果Binlog没有开启怎么办呢?此时,就需要我们手动来开启,为此我们需要修改MySQL的my.conf文件,通常情况下,该文件位于/etc/my.cnf路径,在[mysqld]下写入如下内容:

    1. # 设置Binlog存储目录
    2. log_bin = /var/lib/mysql/bin-log
    3. # 设置Binlog索引存储目录
    4. log_bin_index = /var/lib/mysql/mysql-bin.index
    5. # 删除7天前的Binlog
    6. expire_logs_days = 7
    7. # 集群内MySQL服务器的ID
    8. server_id = 0002
    9. # 设置Binlog日志模式
    10. binlog_format = ROW

    除此之外,我们还可以设置下面这些选项:

    1. # 设置Binlog文件最大的大小
    2. max_binlog_size
    3. # 设置当前多少个事务缓存在内存中
    4. binlog_cache_size
    5. # 设置当前多少个事务暂存在磁盘上
    6. binlog_cache_disk_use
    7. # 设置最大有多少个事务缓存在内存中
    8. max_binlog_cache_size
    9. # 设置选取或者忽略的数据库
    10. binlog_do_db/binlog_ingore_db

    设置完以后,通过下面的命令重启MySQL即可:
    service mysql restart 或者 service mysqld restart
    通常,我们可以通过下面的命令来获取Binlog的当前状态,请注意,该命令必须要在主库上执行
    SHOW MASTER STATUS;
    此时,我们会得到下面的结果:
    image.png

    mysqldump全量备份(例子):
    mysqldump -uroot -p —single-transaction —master-data=1 db1 > db1.sql
    mysqldump会导致锁表,innodb需加上 —single-transaction 选项: