作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
Redis
Etcd
前面介绍了二进制日志的用途,本小节就通过实际案例来介绍他的实际用处,试想一下这个场景,你维护一个单机版的MYSQL,每天定时备份数据,如果某天这个节点宕机,数据无发找回,我们应该怎么办?
思路
1.把备份数据存储到MYSQL数据目录之外的磁盘,可避免单盘故障,还可以考虑再把他同步到异地。
2.开启Binlog日志,把Binlog日志存储到另外磁盘,可规避备份数据及时性的问题。
实操
1.MYSQL开启Binlog
我们这里复用我们前面yum安装的数据库。
#创建对应的数据目录,并设置权限
#这里的路基需要和下面配置文件对应,我这里实际是在一个分区,真实环境这里就是其他磁盘及分区
mkdir -p /data/mysql-binlogs/
chown mysql.mysql /data/mysql-binlogs/vi /etc/my.conf
#在[mysqld]下面添加
# 开启binlog,并设置基础路径和文件名
log-bin=/data/mysql-binlogs/mysql-bin
# 设置binlog索引文件路径
log_bin_index=/data/mysql-binlogs/mysql-bin.index
# 必须设置server-id
server-id=1
# 设置binlog格式(推荐ROW格式)
binlog_format=ROW
# 设置binlog过期时间(天),这里基于前面的需求设置的2天
expire_logs_days=2
# 设置单个binlog文件大小
max_binlog_size=100M
#重启服务
systemctl restart mysqld2.检查Binlog日志文件
[root@localhost ~]# ll /data/mysql-binlogs/
total 8
-rw-r----- 1 mysql mysql 154 Sep 23 23:25 mysql-bin.000001
-rw-r----- 1 mysql mysql 37 Sep 23 23:25 mysql-bin.index
[root@localhost ~]# 3.MYSQL里面检查
mysql> SHOW VARIABLES LIKE 'log_bin%';
+---------------------------------+-------------------------------------+
| Variable_name | Value |
+---------------------------------+-------------------------------------+
| log_bin | ON |
| log_bin_basename | /data/mysql-binlogs/mysql-bin |
| log_bin_index | /data/mysql-binlogs/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+-------------------------------------+
5 rows in set (0.03 sec)
mysql> SHOW VARIABLES LIKE 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)4.尝试插入大量数据
5.再次查看Binlog
可以发现Binlog日志已经开始了自动轮转。
#binlog日志列表
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 331947 |
| mysql-bin.000002 | 2589124 |
+------------------+-----------+
2 rows in set (0.02 sec)
#当前正在使用的binglog文件
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 2615876 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.11 sec)