msyql 5.6 主从故障恢复过程

#msyql 5.6 主从故障恢复过程

###################故障模拟
###主库

#1 建库建表
mysql -e "drop database class;
create database class;
USE class;
create table student(
name char(20) not null,
age int(2) not null);"

##2  插入数据#  不用等命令执行完,敲了回车就可以在从库上执行第3项命令
for i in {1..10};do mysql -e "USE class;insert into student values ('aaabbb$i',$i);" ; done

mysql -e "select * from class.student;"

/etc/init.d/mysqld stop

####3  从库执行  
mysql -e 'stop slave;show slave status\G;' |grep Slave

####主库执行跑完以后  执行下面命令

mysql -e 'show slave status\G;' |grep Slave



###############################从升主 操作过程
##1
##查看master.info文件,对比选择pos最大的作为新的主库
mysql -e 'show slave status\G;' |grep Read_Master_Log_Pos

head /usr/local/mysql/data/master.info
###数据库目录,删除master.info和relay-log.info文件, 配置my.cnf文件,开启log-bin,如果有log-slaves-updates和read-only则要注释掉,执行reset master

mv -f /usr/local/mysql/data/master.info{,bak}
mv -f /usr/local/mysql/data/relay-log.info{,bak}

mysql -e "grant replication slave on *.* to 'repl'@'%' identified by 'replpwd';
flush  privileges;
select  User,Host from mysql.user;"

sed -i 's/^log-slave-updates=/#log-slave-updates=/g' /etc/my.cnf
sed -i 's/^read-only=/#read-only=/g' /etc/my.cnf

egrep -v '^#|^$' /etc/my.cnf


/etc/init.d/mysqld restart


mysql -e  "stop slave;
reset slave;
reset master;"

mysql -e  "show master status\G"

###############



##########其它从库上操作 更新  


mysql -e "stop slave;
reset slave;
CHANGE MASTER TO
MASTER_HOST='192.168.11.41',
MASTER_USER='repl',
MASTER_PASSWORD='replpwd',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=149976,
MASTER_CONNECT_RETRY=10;
start slave;"

mysql -e 'show slave status\G;' |grep Slave


#############################################################通过旧主库上的 binlog恢复数据 
#################1。先通过 新主库上 找到旧的/usr/local/mysql/data/master.info文件  找到  binlog文件名 和MASTER_LOG_POS的值  应该是文件的第二行和三行

head /usr/local/mysql/data/master.info
#23
#mysql-bin.000002
#65428
#192.168.11.43
#repl
#replpwd
#3306
#10
#0
#
##########2. 通mysqlbinlog 命令把数据提取到sql文件中,并同步到新主库上去 
##-b test1 为数据库名
mysqlbinlog -b test1 --start-position=65428  mysql-bin.000002 >test.sql

scp test.sql root@192.168.11.41:~/

###########3.在新主库中导入test.sql文件
msyql -e "source /root/test.sql"


##########检查数据恢复情况
mysql -e "select * from test.student;"



#######################宕机主库恢复  


###1。
mysql -e  "stop slave;
reset slave;
reset master;"

#####2。
####在/etc/my.cnf  [mysqld]下面添加一行  read-only=1


sed -i '/\[mysqld\]/ a read-only=1' /etc/my.cnf
/etc/init.d/mysqld restart


#########3   ##MASTER_LOG_FILE='mysql-bin.000001',  MASTER_LOG_POS=149976,  为新主库中查到的 文件和节点

mysql -e "stop slave;
reset slave;
CHANGE MASTER TO
MASTER_HOST='192.168.11.41',
MASTER_USER='repl',
MASTER_PASSWORD='replpwd',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=149976,
MASTER_CONNECT_RETRY=10;
start slave;"

mysql -e 'show slave status\G;' |grep Slave


猜你喜欢

转载自www.cnblogs.com/blog-lhong/p/12692810.html
5.6
今日推荐