发现数据库主从异常,从库与主库数据不一致,现无法正常复制,需备份主库数据更新到从库
目录
一.执行
1.数据库备份(主从)
2.停止从库并删除数据库
3.修改从库偏移量,指定数据库主库
二.测试
三.回滚方案
1,清空从库业务数据库:
2.通过从库数据备份恢复从库数据
一.执行
注:全量,默认不备份数据库的默认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备份文件拷贝到从上 |
注:由于是一键部署的所以不知道密码
~]# mysql -uroot -pxxx(密码) stop slave; drop database xxx(库名); # 注意不要删除4个默认库 xxxx change master to master_auto_position=0; |
3.修改从库偏移量,指定数据库主库
##1.查看数据库备份文件中的bin_long日志名 偏移量参数 ~] # cat dbdump_202292.sql | grep MASTER_LOG_FILE | grep mysql-bin.000 -- CHANGE MASTER TO MASTER_LOG_FILE='xxxxxx(binlog名)', MASTER_LOG_POS=xxxxx(偏移量); # 2.导入主库数据 ~] # mysql -uroot -pmysql_P@s5 #3.先启动主从的配置 > reset slave; #4.修改主从配置 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 |