数据库主从恢复

发现数据库主从异常,从库与主库数据不一致,现无法正常复制,需备份主库数据更新到从库

目录

一.执行

1.数据库备份(主从)

2.停止从库并删除数据库

3.修改从库偏移量,指定数据库主库

二.测试

三.回滚方案

1,清空从库业务数据库:

2.通过从库数据备份恢复从库数据


一.执行

1.数据库备份(主从)

注:全量,默认不备份数据库的默认4个库

## 通过定时任务在凌晨作远程备份(可以写一个shell)

~]# crontab  -2 

* 24 * * *   xxxx(下面这条命令)       # 由于我是测试环境使用人所以直接导出,从库可以直接执行,但是主库尽量在晚上

## 备份主库

~]# /usr/local/mysql/bin/mysqldump -uroot -pxxx(密码) --default-character-set=utf8mb4 --single-transaction --master-data=2 --insert-ignore --force -q --all-databases > dbdump_202292.sql

## 备份从库

~]# /usr/local/mysql/bin/mysqldump -uroot -pxxx(密码) --default-character-set=utf8mb4 --single-transaction --master-data=2 --insert-ignore --force -q --all-databases > slave_202292.sql

--default-character-set 指定导出数据时采用何种字符集

--single-transaction   当前版本的MySQL只可以对innodb 引擎保证一致性,导出过程中不会锁表

#--master-data=2       是把change log 那行注释掉,=1 是没有注释

#--insert-ignore        在插入行时使用INSERT IGNORE语句.

#--force            在导出过程中忽略出现的SQL错误

#-q --all-databases       导出全部数据库

# 注:把sql备份文件拷贝到从上

2.停止从库并删除数据库

注:由于是一键部署的所以不知道密码

~]# mysql -uroot -pxxx(密码)

stop slave; 

drop database xxx(库名);   # 注意不要删除4个默认库

xxxx

change master to master_auto_position=0;

3.修改从库偏移量,指定数据库主库

~]# cat dbdump_202292.sql | grep MASTER_LOG_FILE | grep mysql-bin.000

 ##查看数据库备份文件中的bin_long日志名 偏移量参数

-- CHANGE MASTER TO MASTER_LOG_FILE='xxxxxx(binlog名)', MASTER_LOG_POS=xxxxx(偏移量); 

## 先启动主从的配置

> reset slave;

## 修改主从配置

~]# mysql -uroot -pmysql_P@s5

change master to

master_host="ipxxx.xxx.xxx",

master_user="xxx(用户)",       # 注意该用户必须能够远程连接(主库必须存在)

master_password="xxx(密码)",

master_log_file="mybinlog.000010", # binlog名

master_log_pos=944713719;      # 偏移量

##启动主从

> start slave;

二.测试

1.查看从库slave状态:

~]# mysql -uroot -pxxx(密码)

mysql> show slave status\G;

......

     Slave_IO_Running: Yes  ##IO和SQL线程显示OK 说明主从连接建立成功

     Slave_SQL_Running: Yes

......

三.回滚方案

1,清空从库业务数据库:

~]# mysql -uroot -pmysql_P@s5

stop slave; 

drop database  archive;   ##依次删除从库数据库

drop database common;

drop database ds_job;

drop database feedcenter;

drop database iam;

drop database open_tapd_v2;

drop database stat;

drop database sys_tapd3;

drop database tapd_common;

drop database tapd_log;

drop database tapd_oss;

drop database tcloud_100001;

change master to master_auto_position=0;

2.通过从库数据备份恢复从库数据

~]# mysql -uhost -p'xxxx' < slave_202292.sql

你可能感兴趣的:(mysql,数据库,mysql,sql)