Mysql DBA 高级运维学习笔记-一主多从宕机从库切换主继续和从库同步过程

1.主库master 宕机

登录从库show processlist\G

看两个线程的更新状态

mysql> show processlist\G
*************************** 1. row ***************************
 Id: 1
   User: system user
   Host:
 db: NULL
Command: Connect
   Time: 22997
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
 Id: 2
   User: system user
   Host:
 db: NULL
Command: Connect
   Time: 21500
  State: Slave has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
*************************** 3. row ***************************
 Id: 6
   User: root
   Host: localhost
 db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
3 rows in set (0.00 sec)

登录从库分别查看master.info

cat /data/3307/data/master.info
cat /data/3308/data/master.info

确保更新完毕,看两个从库哪个库的binlog位置最靠前更新最快,经过测试没有延迟的情况POS差距很小,甚至是一致的。

[[email protected] ~]# sed -n "2,3p" /data/3307/data/master.info
mysql-bin.000010
633

选更新最快,POS最大作为主库

或利用同步的功能直接选择做了实时同步的这个从库。

授权同步用户和主库一样

如果只是主库宕机,服务器还能起来还需要把主库的binlog拉下来,在从库补全把差距补回来。然后把这个从库作为主库。

步骤:

(1)确保所有relay log全部更新完毕

在每个从库上执行stop slave io_thread;show processlist
直到看到Slave has read all relay log 表示从库更新都执行完毕。

(2)登录从库

mysql –uroot –p123456 –S /data/3307/mysql.sock -e "Stop slave;Retset masterQuit"

Stop slave :停止同步
Retset master :删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件
Quit

(3)进到从库数据库数据根目录 删除master.info relay-log.info

cd /data/3307/data/
rm –f master.info relay-log.info

检查授权表,read-only等参数,如果配置了这些参数要清理一下

(4)3307提升从库为主库

vim /data/3307/mysql-bin

开启:

log-bin = /data/3307/mysql-bin

如果存在log-slave-updates read-only等一定注释掉
重启mysql服务/data/3307/mysql restart
到此为止。提升主库完毕

(5)如果主库服务器没宕机需要去主库拉取binlog补全提升主库的从库

(6)其他从库的操作

已检查(同步user rep局存在)

登录从库

Stop slave;
Change master to master_host =’192.168.1.115’;如果不同步就指定位置点
Start slave;
Show slave status\G

如果不同步分析新生成的主库的binlog接着往下同步。

(7)修改程序配置文件从主数据库指定从数据库

如果访问数据库用域名,直接可以修改hosts解析。

(8)修理损坏的主库完成作为从库使用或者切换

提示更多恢复信息参考mysql手册第六章的FAQ。

2.主库以外宕机,例如:我们有计划切换,怎么做呢?

a.主库锁表 ,设置同步参数change master

b.登录所有的库查看同步状态,是否完成。

3.Mysql5.5支持半同步

一个插件

一主多从主库宕机如何恢复,通过master.info确定新主库。

半同步下的一主多从恢复直接对设置半同步的从库确定为主库。
让某一个稳定从库和主库完全一致,即主库和这个从库都更新数据完毕,在返回给用户更新成功。

优点:

确保至少一个从库和主库数据一致

缺点:

主从之间网络延迟或者从库有问题时候,用户体验很差当然可以设置超时时间10秒。

4.从库slave宕机

恢复方法:重做slave

a.导入数据

mysql –uroot –p123456 –S /data/3307/mysql.sock < test.sql &

b.配置从库同步参数Change master

mysql> CHANGE MASTER TO
 -> MASTER_HOST=‘192.168.1.115‘,   主库的IP
 -> MASTER_PORT=3306, 主库的端口,从库端口可以和主库不同
 -> MASTER_USER=‘rep‘,主库上建立的用于复制的用户rep
 -> MASTER_PASSWORD=‘123456‘, 这里是rep的密码
 -> MASTER_LOG_FILE=‘mysql-bin.000036‘,这里是show master status;查看到的二进制日志文件名称注意不能有空格。
 -> MASTER_LOG_POS=335;这里也是show master status时看到的二进制日志偏移量注意不能多空格。

c. 开启从库同步开关,查看同步状态

start slave;
show slave status\G

原文地址:http://blog.51cto.com/10642812/2070867

时间: 2024-10-08 10:29:14

Mysql DBA 高级运维学习笔记-一主多从宕机从库切换主继续和从库同步过程的相关文章

Mysql DBA高级运维学习笔记-mysql数据库介绍

本文为我自己学习老男孩MySQL DBA 高级运维课程的学习笔记,内容均出自老男孩MySQL DBA 高级运维课程,老男孩老师讲的很好,非常感谢老男孩老师.我是一个菜鸟刚接触运维,如果我写的文章有不对的地方:请各位行业的精英.老师多多批评指点,呵呵~ 1.1 数据库介绍 1.1.1 什么是数据库?简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织.存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据. 1.2 数据库的

Mysql DBA 高级运维学习笔记-DQL语句之select知识讲解

9.9.8 查询数据 9.9.8.1 查询表的所有数据行 (1)命令语法:select<字段1,字段2,->from<表名>where<表达式> (2)列子:查看表wwn中所有数据 a.进入指定数据库查询 [email protected] 04:5152->use wwn Database changed [email protected] 04:5159->select * from test -> ; +----+-----------+ | i

Mysql DBA高级运维学习笔记-Mysql数据库的多种安装方法

3.1 MySQL数据库的安装 3.1.1 yum/rpm方式安装 注意:yum/rpm方式安装MySQL适合所有MySQL软件产品系列. (1)rpm包方式安装mysql我们必须安装Mysql-server和Mysql.client包,rpm安装很简单这里就不说了. (2)yum方式安装mysqlyum 安装的方式很简单,只要执行yum install mysql-server –y即可.大的门户把源码根据企业的需求制作成rpm,搭建yum仓库,yum install xxx -y. 3.1.

Mysql DBA 高级运维学习笔记-MySQL备份与恢复实战案例及生产方案

1.全量备份与增量备份 1.1 全量备份 全量数据就是数据库中所有的数据,全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p123456 -S /data/3306/mysql.sock -F -B –A gzip >/server/backup/mysq_backup_$(date +%F).sql.gz 备份一个库: mysqldump -uroot -p123456 -S /data/3306/mysql.sock -F -B linzhong

Mysql DBA 高级运维学习笔记-Mysql增量备份及数据恢复实战

大家好本文讲了mysql数据库的增量恢复.老男孩老师讲的很好很细,我自己呢整理了老师讲的部分内容,请大家将就看:文章内容比较多.比较乱,请大家认真总结知识,发现问题请及时批评指点~ 1.1 MySQL数据库的备份与恢复 1.1.1备份单个数据库练习多种参数使用 Mysql数据库自带了一个很好用的备份命令,就是mysqldump, 它的基本使用如下: 语法:mysqldump –u用户名 –p密码 数据库名>备份的文件名 范烈1:备份名字为cuizhong的库 a.查看备份前的数据 [[email

Mysql DBA 高级运维学习笔记-DML语句之insert知识讲解

9.9.7.8 往表中插入数据 (1)命令语法 Insert into<表名>[(<字段名1>[-<字段名n>])]values(值1)[,(值n)] (2)新建一个简单的测试表test1 Create Table: CREATE TABLE `test1` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT

Mysql DBA 高级运维学习笔记-Mysql插入中文乱码问题

1.1 mysql插入中文数据乱码 1.1.1MySQL中添加中文数据并查看检表语句 a.创建cuizhong测试数据库并查看建表语句 mysql> create database cuizhong; Query OK, 1 row affected (0.00 sec) mysql> show create database cuizhong\G *************************** 1. row *************************** Database:

Mysql DBA 高级运维学习笔记-Mysql数据库字符集知识

1.2 Mysql数据库字符集知识 1.2.1 MySQL数据库字符集介绍 简单的说,一套文字符号及其编码.比较规则的集合. MySQL数据库字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念.其中,字符集是用来定义MySQL数据字符串的存储方式,而校对规则则是定义比较字符串的方式.前面建库的语句中,CHARACTER SET latin1即为数据库字符集而COLLATE latin1_wedish_ci 为校对字符集,有关字符集详细内容参考mysql手册,第10张字

Mysql DBA 高级运维学习笔记-mysql双主及多主同步过程

1.Mysql双主及多主同步实战,互为主从 使用主主前提: a.表的主键自增(M库id1,3,5:M库id 2,4,6) 准备:两台机器,这里用多实例来讲解 第一台: Ip:192.168.1.115Port:3306 第二台: Ip:192.168.1.115Port:3307 1.1 第一台机器的操作 (1)配置3306的my.cnf配置文件添加打开下面参数 [[email protected] ~]# egrep "\[mysqld]|auto_increment|log-bin|log-