mysql 重置从库

一、主库备份
1、备份主数据库数据

./mysqldump -hlocalhost -uusername -ppassword --single-transaction --master-data=1 --databases daen_prd --ignore-table=daen_prd.biz_location_log> dbname2024-11-21.sql

备注:

--ignore-table=表名1 --ignore-table=表名2 过滤制定表

--single-transaction 启用一个事务来进行备份操作,备份过程中不会对数据库进行锁操作
--master-data=1 备份必须加上此参数。当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog

 出现source 中途 not connect 错误时 mysql -u -p -h  --default-character-set=utf8 得指定一下连接的字符集 因为默认导出的sql文件是UTF8

二、从库恢复
1、查看slave状态

MySQL [table]> show slave status;
2、停止slave状态,清除从库主从信息

MySQL [table]> stop slave; (停止从库)
MySQL [table]> reset slave all; (取消从库和主从的关系)
3、将从库已同步主库数据库删除

MySQL [table]> DROP DATABASE DBNAME;
4、登录从数据库

MySQL [table]> mysql -hip -uusername -ppasswd -Pport
5、将备份文件导入到从服务器
将备份过来的数据导入到从服务器

MySQL [table] > CREATE DATABASE DBNAME;

MySQL [table] > use DBNAME;

MySQL [table] >source /dbname.sql ;
导入之后查看数据是否导入成功

6、查看主服务器备份数据MASTER_LOG_FILE地址及MAST_LOG_POS位置

cat dbname.sql |grep "MASTER_LOG_FILE"
-- CHANGEMASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=7334223423;

7、执行同步语句,这里填写的binlog日志文件及偏移量位置为第6步中的MASTER_LOG_FILE地址MAST_LOG_POS的值

CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='rep',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.000015',MASTER_LOG_POS=7334223423;
8、启动slave

MySQL [table] > start slave;
9、查看slave状态

MySQL[table]> show slave status \G ;
查看slave两个线程是否为YES状态

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

 

 

 

查看占用CPU高的SQL,top –H –p <mysql进程id>,然后使用mysql内部的表问题定位sql:

SELECTa.THREAD_OS_ID,b.user,b.host,b.db,b.command,b.time,b.state,

FROMperformance_schema.threads a,information_schema.processlist b

WHEREb.id = a.processlist_id;

select *from performance_schema.threads where THREAD_OS_ID = '2749';

 

 

-d, --database=name      仅显示指定数据库的转储内容。

-o, --offset=#           跳过前N行的日志条目。
-r, --result-file=name   将输入的文本格式的文件转储到指定的文件。
-s, --short-form         使用简单格式。
--set-charset=name       在转储文件的开头增加'SET NAMES character_set'语句。
--start-datetime=name    转储日志的起始时间。
--stop-datetime=name     转储日志的截止时间。
-j, --start-position=#   转储日志的起始位置。
--stop-position=#        转储日志的截止位置。

 .\mysqlbinlog.exe --start-datetime="2021-10-29 13:00:00" --stop-datetime="2021-10-29 14:30:00"   D:\dingFiles\mysql-5.6.45-winx64\mysql-5.6.45-winx64\bin\log_bin.000170  --result-file=C:\Users\xpc\Desktop\111.txt 

 

posted @ 2020-12-09 12:41  粗鲁师太  阅读(795)  评论(0编辑  收藏  举报