【MySQL命令】RESET MASTER;RESET SLAVE;RESET SLAVE ALL详细解释

目录

一 RESET MASTER

1 所需权限

2 RESET MASTER 会做什么操作

3 RESET MASTER 与 PURGE BINARY LOGS

4 举例

二 RESET SLAVE [ALL]

1 RESET SLAVE会做什么操作

2 目的

3 注意点

4 所需权限与前提

5 RESET SLAVE 与 RESET SLAVE ALL区别

6 举例


一 RESET MASTER

1 所需权限

RESET MASTER需要RELOAD权限

2 RESET MASTER 会做什么操作

对于启用了二进制日志记录的服务器(log_bin is  on),RESET MASTER删除所有现有的二进制日志文件并重置二进制日志索引文件,将服务器重置为启动二进制日志记录之前的状态。将创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。

对于正在使用 GTID 的服务器(gtid_mode is on ),发出命令RESET MASTER 会重置 GTID 执行历史记录。

  • 系统变量的值 gtid_purged 被设置为空字符串(''
  • 系统变量gtid_executed的全局值(但不是会话值)被设置为空字符串
  • 并且 mysql.gtid_executed表被清除

3 RESET MASTER 与 PURGE BINARY LOGS

区别一 

RESET MASTER 删除索引文件中列出的所有二进制日志文件,只留下一个带有数字后缀.000001的空二进制日志文件,而二进制日志的编号不会由 PURGE BINARY LOGS 重置;

区别二 

打算在任何副本运行时使用RESET MASTER,副本运行时使用RESET MASTER的行为 未定义(因此不受支持),而PURGE BINARY LOGS 副本运行时可以安全使用。

4 注意

使用命令会丢失binlog文件 和 GTID的执行历史记录,要谨慎使用

5 举例

执行RESET MASTER 前

执行RESET MASTER 后

二 RESET SLAVE [ALL]

1 RESET SLAVE会做什么操作

  • RESET SLAVE命令会清空 从副本复制的位点 
  • 清空从库复制的元数据仓库
  • 删除所有的中级日志文件 ,并重新生成一个全新的中级日志
  • 会把从副本中设置的从库延迟(MASTER_DELAY) 重置为0

2 目的

会使副本忘记其在Master的二进制日志中的复制位置,该语句旨在用于干净启动从副本

3 注意点

所有的中级日志文件都会被删除,即使这些中级日志还没有被从副本的SQL 线程执行完(这种场景存在于你在从库上执行了stop slave 或者 从库目前正在高负载)

对于正在使用GTID模式的从副本(gtid_mode = ON ),发出 对GTID的执行历史没有影响。该语句不会更改gtid_executed或 gtid_purged或 表mysql.gtid_executed的值 。如果您需要重置 GTID 执行历史记录,需要使用 RESET MASTER 命令,

4 所需权限与前提

执行RESET SLAVE需要RELOAD权限

执行RESET SLAVE命令 ,复制线程必须停止。在执行RESET SLAVE命令前需要执行STOP SLAVE命令

在组复制的成员上执行RESET SLAVE命令,该成员的状态必须是OFFLINE;意味着 组件被加载了但是目前该成员不属于该组。组成员可以执行STOP GROUP REPLICATION 命令进行下线。

5 RESET SLAVE 与 RESET SLAVE ALL区别

RESET SLAVE不会更改任何复制连接参数,例如master的主机名和端口,或者复制用户帐户名及其密码。

如果想要删除连接信息 ,需要执行RESET SLAVE ALL,它会清除连接参数。如果你想重新建立主从,需要在change  master to 中指定新的连接信息。

6 举例

必须先执行 停止主从复制的命令 stop slave;

reset slave 之前 

中继日志还存在

 

 reset slave 之后

变化1 

 

变化2 中继日志被清空 并 重新生成一个全新

 

reset slave all 之后

所有信息都被清空了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
最近一个项目需要做I2C的slave,在opencores.org上面找到了一个I2C的代码,不过是master的。 下载来看看,发现里面有一个I2C slave的行为级代码。 于是自己根据这个代码改写了一个I2C slave RTL的代码,并修改了原来那个设计的testbench,将rtl的Slave替换了原来的behavior的Slave,在modelsim里面作了前仿,完全通过。还有一个myram.v文件,是一个register file,和slave相连,存储数据用的。 用synplify做综合,使用x3s400-4的器件,占用LUT<100,速度接近200MHz。性能比较优化。 代码做了详尽的注释,语言采用verilog,并且写了仿真的脚本。解压了直接运行simbehav.bat就可以了。如果modelsim安装的时候注册了环境变量(path),脚本调用modelsim,输入run -all即可看到仿真结果。 虽然不是很复杂,不过对于广大需要做I2C的RTL slave的工程师来说,还是很有参考价值的。 1、 设计流程 将I2C slave的行为模型改为rtl模型。 进行等效仿真,直到波形一致,通过timing check,数据正确。 再进行rtl优化设计 2、 注意要点 a) 时钟的设计 b) 对于restart condition的时序是否正确 c) 3、 进度 a) 11-12:initial状态的bitcnt不对,需要认真比对/设计 b) 11-13:initial基本解决(sda_in的问题)。Sda三态冲突,原因不明。比对原设计 c) 11-14:sda三态冲突解决,原因为sda在初始化时没有将sda_oen赋值(由sm赋值,但是sm没有做async reset)。同时注意verilog的大小写敏感。 d) 11-15:仿真出现错误:read出来的数据非期望值。写入逻辑完全正确。Read时由于sda_oe在sm中有一个cycle_pulse的延迟,导致了mem_do[7]串行移出时错位。在更改了sm的代码风格后再研究解决方法。 e) 11-16:仿真完全匹配波形。计划:优化结构,提高稳定性sm改为每个时钟打一下。 关于I2C的SDA三态转换: Master在发送完第8个bit后随后将sda释放(posedge后大概1/4 scl周期),此时slave需要在第九个bit对应的scl的posedge拉低sda。
As an AI language model, I don't have the ability to physically reset a MySQL master server, but I can provide the general steps that can be followed to reset a MySQL master server: 1. Stop the MySQL service on the master server using the command "systemctl stop mysql" (for systems using systemd) or "service mysql stop" (for systems using init.d). 2. Edit the MySQL configuration file (usually located at /etc/mysql/my.cnf) and add the following lines under the [mysqld] section: skip-slave-start log-bin = /var/log/mysql/mysql-bin.log server-id = 1 These lines will disable the replication (skip-slave-start), enable binary logging (log-bin), and set the server ID to 1. 3. Delete the binary log files and the relay log files from the data directory (usually located at /var/lib/mysql). You can do this by running the command "rm -rf /var/lib/mysql/*-bin.*". 4. Start the MySQL service using the command "systemctl start mysql" or "service mysql start". 5. Connect to the MySQL server using the command "mysql -u root -p" and run the following commands: RESET MASTER; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; These commands will reset the binary log, flush the tables, and show the current master status. 6. Take note of the file name and position from the output of the SHOW MASTER STATUS command. 7. Exit the MySQL shell by running the command "exit". 8. Update the slave servers with the new master information by running the following command on each slave server: CHANGE MASTER TO MASTER_HOST='master_hostname', MASTER_USER='replication_user', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_file_position; Replace the values inside the single quotes with the appropriate values for your setup. 9. Start the replication on each slave server using the command "START SLAVE;". That's it! Your MySQL master server should now be reset and ready for replication.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值