首页 > 数据库 >MySQL主从数据恢复

MySQL主从数据恢复

时间:2023-08-29 14:36:33浏览次数:46  
标签:数据恢复 -- 导出 master MySQL 从库 data 主从

主要步骤: 导出主库数据,恢复到从库,重新开启主从同步。

 1. 先停止从库

从库上执行 stop slave;

 2  在从库mysql bin目录下导出主库数据

./mysqldump -h192.168.174.201 --port=3359 -uroot -p'pwd' --default-character-set=UTF8MB4 --single-transaction --events --triggers --routines --master-data=2 --all-databases > /data/bak.sql

-h192.168.174.201  指定主库的服务器地址(也可以不加这个参数,在主库上导出数据再scp到从库服务器)

--port=3359   数据库端口

--default-character-set 指定导出字符集

--single-transaction  开启单个事务,导出过程不加锁。确保导出的数据就是截止到执行导出命令的时间点。此选项会将隔离级别设置为:REPEATABLE READ。需没有下列语句ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,因为一致性读不能隔离上述语句。所以如果在dump过程中,使用上述语句,可能会导致dump出来的文件数据不一致或者不可用

--events --triggers --routines   导出所有的事件, 触发器,存储过程

--master-data=1   2以注释的形式写出导出时间点的binlog名字及位置。1不注释,恢复数据的时候会直接执行

--all-databases    导出所有库, 如果单个库直接最后面写库名字,如果是某个表在库名后面写表名, 如果是多个库则--databases后面写多个库,空格隔开

--set-gtid-purged=off   再介绍下这个参数,开启GTID时有用。如果是on会设置导出的数据库GTID和主库一致,导入的数据不会改变binlog。如果不是全库导出设成off,因为会导出所有GTID。如果导出的数据库有可能作为主库则必须设成off, 因为on不生成binlog, 从库无法同步导入的数据。如果作为从库恢复数据,建议设成on,off导入的数据会重新生成一套GTID。

 3.  恢复从库数据,mysql bin目录下执行

mysql -uroot -p'pwd' < /data/bak.sql

如果是恢复到某个库就在后面加上库名   mysql -uroot -p'pwd' databasenamexxx < /data/bak.sql

4.  重新开启主从同步

如果导出时--master-data=1则直接开启主从同步即可, start slave;

如果导出时--master-data=2则head -n 100 bak.sql   查看前几行有binlog文件名和位置。在从库上执行如下步骤

reset slave all;  //重置从库binlog等信息

change master to master_host='192.168.174.210', master_port=3306, master_user='root',master_password='bwt4567', master_log_file='mysql-bin.000006',master_log_pos=157; //指定主从同步

change master to master_host = '192.168.174.210', master_port = 3306, master_user = 'root',master_password='bwt4567',master_auto_position = 1; //如果开启GTID,则更简单,不需要指定binlog同步位置

start slave;

查看从库状态, 如果这俩个线程运行状态都是yes, 则代表主从启动成功。

show slave status;

 

标签:数据恢复,--,导出,master,MySQL,从库,data,主从
From: https://www.cnblogs.com/brook0366/p/17661373.html

相关文章

  • 服务器数据恢复-RAID6磁盘重组RAID5导致原RAID6数据丢失的数据恢复案例
    服务器数据恢复环境:一台存储设备中有一组由12块硬盘组建的RAID6磁盘阵列,上层采用EXT3文件系统,共划分3个LUN。服务器故障&分析:存储设备在运行过程中RAID6阵列突然不可用,管理员对故障存储进行了重新分配RAID的操作并进行了初始化。初始化一段时间后,管理员察觉有异,于是强行终止初始......
  • mysql报错:The last packet successfully received from the server was 51,384,505 mi
    这个报错是MySQL连接超时导致的。当MySQL客户端在一段时间内没有收到来自服务器的数据包时,会触发这个错误。产生这个错误的可能原因有:1.网络问题:可能是网络连接不稳定或延迟过高,导致数据包在传输过程中丢失或延迟。2.MySQL服务器负载过高:如果MySQL服务器负载过高,无法及......
  • Mysql查询性能优化相关
    慢查询基本原因访问的数据太多分析是否检索了过多的数据。mysql服务器是否在分析大量超过需要的数据。注意事项尽量不用select*分页查询(mysql从设计上让连接和断开连接都是很轻量级的。运行多个小查询不是大问题)缓存效率高减少锁竞争查询的执行基础查询执行......
  • mysql索引失效的几种情况
    1.在索引字段上使用函数2.在索引字段上使用运算3.索引字段使用了类型转换,即原本是字符串类型,查询时用的数字类型4.范围条件右边的列索引失效,比如>,<,between等,in不属于范围条件5.!=或者<>索引失效6.isnu11可以使用索引,isnotnu11无法使用索引7.like以通配符号开头索引......
  • Kafka - 为什么 Kafka 不像 MySQL 那样允许追随者副本对外提供读服务?
    几个原因:1,kafka的分区已经让读是从多个broker读从而负载均衡,不是MySQL的主从,压力都在主上;2,kafka保存的数据和数据库的性质有实质的区别就是数据具有消费的概念,是流数据,kafka是消息队列,所以消费需要位移,而数据库是实体数据不存在这个概念,如果从kafka的follower读,消费端offset控制......
  • MySq之一条mysql语句来更新(插入)查询结果
    想起之前没问人家自己那213的做法,想起来都想怎么笑(记录之前困惑的问题解决了的)非常的简单要插入teble1表中的id>100的字段name,address 到table2表insertintotable2(name,address)(selectname,addressfromtable1whereid>100)要查询teble1表中的name=阿呜......
  • MySql之 replace 用法
    mysqlreplace实例说明: UPDATEtb1SETf1=REPLACE(f1,'abc','def'); REPLACE(str,from_str,to_str) 在字符串str中所有出现的字符串from_str均被to_str替换,然后返回这个字符串 这个函数用来批量替换数据中的非法关键字是很有用的!如下例子: 例1:UPDATEBBSTo......
  • MYSQL如何从文件中把数据复制进数据库表中
    。至少有两种修正方法:·编辑文件“mysql.txt”改正错误,然后使用DELETE和LOADDATA清空并重新装载表:·mysql>DELETEFROMpet;·mysql>LOADDATALOCALINFILE'pet.txt'INTOTABLEpet;注:‘***’->是你的文件路径地址然而,如果这样操做,......
  • Mysql之数据库设计
    一、三大范式1、第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF。2、第二范式:消除部分依赖性即可转化为2NF。部分依赖性表示一个记录中包括的字段只依赖于主键的一部分。解决部分依赖性的最简单方法是将复合主键分成两部分,每......
  • MySQL借助ibd文件恢复数据技巧?
    还记得我们之前写过的《只需一招,让失控的研发爱上你》吗?前文提到过我们日常使用的比较多的两种数据库恢复方法是:以上两种方法都可以实现实时性的回档,但是你会认为有了这两种技能就够了吗?不….!在线上这种错综复杂的架构中,其实还有很多未知的原因,我们是没法预知的。例如以下这......