MySQL教程学习之面试题11_MySQL主从复制配置过程与故障处理
一、详述MySQL主从复制原理及配置主从的完整步骤。
1、主:binlog线程,记录所有改变了数据库数据的语句,放进master上的binlog中
2、从:IO线程,在使用start slave之后,负责从master上拉取binlog内容,放进自己的relay log中
3、从:SQL执行线程,执行relay log中的语句。
MySQL主从复制配置步骤:
1、主库开启binlog日志功能
2、全备数据库,记录好binlog文件和相应的位置
3、从库上配置和主库的连接信息
4、将全备数据导入从库
5、从库启动slave
6、在从库上查看同步状态,确认是否同步成功
二、MySQL如何实现双向互为主从复制,并说明应用场景?
两台数据库都开启binlog功能,相互为主从配置。
风哥MySQL教程提示:如何开启从库的binlog功能?
在my.cnf文件中写入log-bin=mysql-bin
双主的实现方式主要有两种:
1、让表的ID自增,然后主1写1、3、5,主2写2、4、6
2、不让表的ID自增,然后通过web端程序去seq服务器取ID,写入双主。
双主工作场景为高并发写的场景,慎用。
三、 MySQL如何实现级联同步,并说明应用场景?
第一台数据库开启binlog功能设为主服务器,第二台数据库也开启binlog功能,设为第一台服务器的从服务器,设为其他数据库的主服务器
四、MySQL出现复制延迟有哪些原因?如何解决?
1、一个主库的从库太多,导致复制延迟
建议从库数量3-5个为宜,要复制的从节点数量过多,会导致复制延迟
2、从库硬件比主库差,导致复制延迟
查看master和slave的系统配置,可能会因为机器配置问题,包括磁盘IO、CPU、内存等各方面因素造成复制的延迟,一般发生在高并发大数据量的写入场景。
3、慢SQL语句过多
假如一条SQL语句执行时间是20秒,那么执行完毕到从库上能查到数据也至少是20秒,可以修改后分多次写入,通过查看慢查询日志或show full processlist命令找出执行时间长的查询语句或者大的事务。
4、主从复制设计问题
主从复制单线程,如果主库写并发太大,来不及传送到从库就会导致延迟。更高版本的mysql可以支持多线程复制,门户网站则会自己开发多线程同步功能。
5、主从库之间网络延迟
主从库的网卡,网线,连接的交换机等网络设备都可能成为复制的瓶颈,导致复制延迟,另外,跨公网主从复制很容易导致主从复制延迟。
6、主库读写压力大,导致复制延迟
主库硬件要搞好一点,架构的前端要加buffer。
五、MySQL主从复制故障如何解决?
解决办法1:
风哥MySQL学习提示,登陆从库上操作:
1、stop slave 临时停止同步开关
2、set global sql_slave_skip_counter=1,将同步指针向下移动一个,也可以多个,如果多次不同步,可以重复操作。
3、start slave,重启主从复制开关
解决办法2:
在my.cnf配置文件中加入参数
slave-skip-errors=1032,1062,1007
六、如何监控主从复制是否故障?
查看slave端的IO和SQL进程状态是否OK,同步延迟时间是否小于1分钟
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
七、生产一主多从从库宕机,如何手工恢复?
处理方法:重做slave
1、停止slave
2、导入备份数据
3、配置master.info信息
4、启动slave
5、检查从库状态
八、生产一主多从主库宕机,如何手工恢复?
主库宕机分为数据库宕机和服务器宕机2种,不管哪种都要进行主从切换。
1.登陆从库检查IO线程和SQL线程状态show processlist\G,确认SQL线程已读完所有relay-log
2.登陆所有从库检查master.info信息,查看哪个从库的binlog文件和位置是最新的,选择最新的从库切换为主库(或利用半同步功能,直接选择做了实时同步的从库为主库)
3.如果主库只是数据库宕了,服务器还在运行,则可以把binlog拉取到提升为主库的从库应用。
4.登陆要切换为主库的从库,进行切换操作。
stop slave;reset master;quit
5.进入要切换的从库数据目录,删除master.info和relay-log.info文件,并检查授权表,read_only等参数
6.修改my.cnf配置文件,开启binlog,注释从库参数
log-bin=/data/3307/mysql-bin
#log-slave-updates
#read-only
7、对同步用户进行提权,保证权限与主库用户权限一样
8、重启数据库提生为主库
9、其他从库操作
(1)检查运行环境和用户
(2)停止从库,修改master信息
(3)启动从库同步,检查同步状态
10、修改web程序的连接配置,从原主库指向新主库
11、维护损坏的主库,完成后作为从库使用,或切换回来
12、如果主库没有宕机,只是想按计划切换一下主库,就非常简单
(1)主库锁表
(2)登陆所有从库检查同步状态,查看是否完成同步。
(3)其他按上面步骤进行切换