MySQL RESET命令对数据库的影响

原创
2024/11/12 15:00
阅读数 43

白驹过隙数据库运维在多元混合数据库时代迎来了崭新的挑战。厚积薄发,墨天轮从乐知乐享的数据库技术社区蓄势出发,全面升级,提供多类型数据库管理服务墨天轮数据库管理服务旨在为用户构建信赖可托付的数据库环境,并为数据库厂商提供中立的生态支持。



以下文章来源于墨天轮数据库管理服务 技术顾问 崔虎龙


MySQL里RESET命令行用于清除各种MySQL的服务的状态。可以说RESET命令是FLUSH语句的更强版本,同时也属于高危谨慎执行命令。
目前支持的RESET命令行如下:

01

RESET MASTER

删除binlog_index文件列表里的binlog文件,同时创建新的binlog文件。当然同时也会重置GTID。
对于复制存在的节点上执行,其实非常致命。
  • binlog被清除,GTID被重置:


  • 这个动作也会影响主从复制,后续的同步就需要重新配置:


  • 同时binlog被清除,操作记录被丢失。
到了MySQL8.4版本可以指定binlog文件的index, 到MySQL9.0版本。命令行取消,改成RESET BINARY命令。使用上更细节,更方便。

          
          
          
# RESET MASTER [TO binary_log_file_index_number]
mysql> SHOW BINARY LOGS;
+-------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+-------------------+-----------+-----------+
| source-bin.001234 | 154 | No |
+-------------------+-----------+-----------+

mysql> RESET MASTER TO 1234;

02

RESET SLAVE/REPLICA

删除复制进程配置,清除复制源数据存储信息。同时对应的Relay日志文件会被删除,即使Relay尚未被复制SQL线程完全执行。需要先停止复制进程STOP SLAVE/REPLICA,之后执行。在多个复制源中也可以指定频道,进行清除动作。

          
          
          
mysql> RESET SLAVE ALL
#或
mysql> RESET SLAVE FOR CHANNEL channel
在my.cnf配置 master_info_repository=TABLE ,master_info_repository=FILE 下更改mysql.slave_master_info,mysql.slave_relay_log_info相关的复制信息。

03

RESET PERSIST

删除持久化全局变量,同时清除数据目录中的mysqld-auto.cnf文件中的参数设置。只是存的去除配置参数,不会更改运行环境中的设置值。

          
          
          
mysql> RESET PERSIST;

mysql> RESET PERSIST system_var_name;

mysql> RESET PERSIST IF EXISTS system_var_name;

04

RESET BINARY LOGS AND GTIDS(MySQL9.0)

到了MySQL9.0版本可以指定binlog文件和 GTID
RESET BINARY LOGS AND GTIDS [TO binary_log_file_index_number]

          
          
          
mysql> SHOW BINARY LOGS;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 | 205 | No |
| mysql-bin.000002 | 158 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)

mysql> RESET BINARY LOGS AND GTIDS to 2;
Query OK, 0 rows affected (0.01 sec)

 总结 

MySQL中RESET命令行在一些复制故障案例能起到很好的作用。但使用还需要谨慎。建议做好一些常规备份,以备不时之需。




点击下方进入作者专栏


本文分享自微信公众号 - 墨天轮(enmocs)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部