mysql 删除 relay log 方法

2018-08-27 21:014660原创mysql编辑删除

本文链接:https://www.cndba.cn/leo1990/article/2970

方法1 :自动 设置参数 relay_log_purge = 1

mysql> SET GLOBAL relay_log_purge = 1;
Query OK, 0 rows affected (0.00 sec)
或者在/etc/my.cnf [mysqld]模块下面增加以下内容
relay-log-purge = 1
这个参数需要重启数据库才可生效。默认情况下relay-log-purge 是开启的。
如果你对从数据库要求不高,可以将relay_log_purge = 1。
如果数据库要手动删除relay log请执行 SET GLOBAL relay_log_purge=0。
或者在/etc/my.cnf [mysqld]模块下面增加以下内容
relay-log-purge = 0
模拟场景:
1)从库查看relay log情况
[root@cndba data]# ll
total 5255240
-rw-r----- 1 mysql mysql         56 Aug 18 15:40 auto.cnf
-rw-r----- 1 mysql mysql        207 Aug 23 16:06 cndba-relay-bin.000032
-rw-r----- 1 mysql mysql        344 Aug 23 18:14 cndba-relay-bin.000033
-rw-r----- 1 mysql mysql        207 Aug 23 18:14 cndba-relay-bin.000034
-rw-r----- 1 mysql mysql        321 Aug 23 18:14 cndba-relay-bin.000035
-rw-r----- 1 mysql mysql        100 Aug 23 18:14 cndba-relay-bin.index
2)从库执行以下操作:
mysql> SET GLOBAL relay_log_purge = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'relay_log_purge';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| relay_log_purge | ON    |
+-----------------+-------+
1 row in set (0.00 sec)
3)主库执行flush logs;
mysql> flush logs;
Query OK, 0 rows affected (0.12 sec)
生成新的binlog
4)从库查看relay log 情况
[root@cndba data]# ll
total 5255232
-rw-r----- 1 mysql mysql         56 Aug 18 15:40 auto.cnf
-rw-r----- 1 mysql mysql        255 Aug 26 03:16 cndba-relay-bin.000036
-rw-r----- 1 mysql mysql        369 Aug 26 03:16 cndba-relay-bin.000037
-rw-r----- 1 mysql mysql         50 Aug 26 03:16 cndba-relay-bin.index
可以看到从库的relay log 自动删除只保留最近的两个relay log。说明下如果从库同步出现问题,没有应用的relay log 也不会自动删除relay log。直到解决掉错误,否则relay log 会越挤越多。

方法2:手动 rm -rf 删除reloy log

1)查看从库
[root@cndba data]# ll
total 5255256
-rw-r----- 1 mysql mysql         56 Aug 18 15:40 auto.cnf
-rw-r----- 1 mysql mysql        255 Aug 26 03:16 cndba-relay-bin.000036
-rw-r----- 1 mysql mysql        422 Aug 26 03:27 cndba-relay-bin.000037
-rw-r----- 1 mysql mysql        255 Aug 26 03:27 cndba-relay-bin.000038
-rw-r----- 1 mysql mysql        683 Aug 26 03:27 cndba-relay-bin.000039
-rw-r----- 1 mysql mysql        255 Aug 26 03:27 cndba-relay-bin.000040
-rw-r----- 1 mysql mysql        683 Aug 26 03:27 cndba-relay-bin.000041
-rw-r----- 1 mysql mysql        255 Aug 26 03:27 cndba-relay-bin.000042
-rw-r----- 1 mysql mysql        369 Aug 26 03:27 cndba-relay-bin.000043
-rw-r----- 1 mysql mysql        200 Aug 26 03:27 cndba-relay-bin.index
2)从库执行以下操作:
[root@cndba data]# rm -rf cndba-relay-bin.000036 cndba-relay-bin.37 cndba-relay-bin.38
[root@cndba data]# ll
total 5255244
-rw-r----- 1 mysql mysql         56 Aug 18 15:40 auto.cnf
-rw-r----- 1 mysql mysql        683 Aug 26 03:27 cndba-relay-bin.000039
-rw-r----- 1 mysql mysql        255 Aug 26 03:27 cndba-relay-bin.000040
-rw-r----- 1 mysql mysql        683 Aug 26 03:27 cndba-relay-bin.000041
-rw-r----- 1 mysql mysql        255 Aug 26 03:27 cndba-relay-bin.000042
-rw-r----- 1 mysql mysql        369 Aug 26 03:27 cndba-relay-bin.000043
-rw-r----- 1 mysql mysql        200 Aug 26 03:27 cndba-relay-bin.index
从库操作系统层面rm relay log 主库更新数据从库可以继续同步:
主库操作:
mysql> insert into test values(13,'ff');
Query OK, 1 row affected (0.44 sec)
从库可以看到数据被同步
mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | abc  |
|  4 | cc   |
|  5 | dd   |
|  6 | ee   |
|  7 | ee   |
|  8 | ee   |
|  9 | ff   |
| 10 | ff   |
| 11 | ff   |
| 12 | ff   |
| 13 | ff   |
+----+------+
如果此时 stop slave
然后在执行start slave ,会提示以下错误:
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
此时要执行步骤3
3)编辑文件cndba-relay-bin.index 删除刚才删除的relay log cndba-relay-bin.000039之前的。
[root@cndba data]# vi cndba-relay-bin.index 
./cndba-relay-bin.000039
./cndba-relay-bin.000040
./cndba-relay-bin.000041
./cndba-relay-bin.000042
./cndba-relay-bin.000043
再次启动start slave
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
还是会报错。
此时必须重启从库mysql 数据库
[root@cndba ~]# service mysql restart
Shutting down MySQL..                                      [  OK  ]
Starting MySQL....                                         [  OK  ]
查看从库状态正常。
mysql> show slave status/G;
......
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

你可能感兴趣的:(mysql,Mysql,基本操作)