1、主从复制:架构一般是一主二从。
1、主从复制模式:
mysql默认的模式是异步模式:主库更新事务后会立即返回结果给从服务器,并不关心从库是否收到以及从库是否处理成功。缺点:网络问题、无法同步、防火墙等因素导致同步失败。优点:快速、高效。
全同步模式:主库更新事务后,立即将结果返回给从库。只有所有从库执行完毕后才能继续下一次同步。优点:安全。缺点:性能受到影响。
半同步模式:介于异步和全同步之间。主库更新事务后,也同步到从库。同步完成后有一段等待时间。等待时间是TCP/IP的往返时间,一般在5毫秒左右。 。也就是说,一定程度上保证了效率,一定程度上保证了数据完整性。
2、主从复制的特点:只有可以复制到slave,永远不能复制到。如果都是高手,就可以互相抄袭。
3、主从复制的延迟问题及解决方案:
网络延迟
主从硬件设备(CPU主频、内存读写性能IO、硬件IO)
同步复制而不是异步复制
解决方案:
硬件:一般来说,主库不需要搬动太多,从库的硬件配置应该更好。提高随机写入性能。可以考虑给硬盘加固态缓存,升级CPU核心数,扩大内存。尽量使用物理机(不要使用云服务器)
网络层面:主从服务器均配置在一个局域网内,尽量避免跨网段、跨机房。
架构:读写分离,主库控制写入,从库负责读取,减轻从库压力
配置MySQL:从配置文件角度最大化性能
4.MySQL安全和性能配置:
追求安全配置:数据库的存储引擎是
双一配置:=1
每次事务提交时都会刷新事务日志。为了确保持久性和最高级别的数据安全性,它会影响性能。默认值为 1
0表示事务提交时不会立即刷新,而是每秒刷新一次,这样可以提高性能,但失败会导致数据丢失。
2表示事务提交时,事务日志不会写入硬盘而是保存在系统缓存中,不会刷新。有一定的安全性和性能水平。但对内存的要求比较高。生成时默认设置一般为1。
双一配置:sync =1
#1 也是默认值。每个事务提交后,二进制日志都会直接刷新到磁盘,以保证日志的持久性。它具有高性能但安全性高。
0表示二进制日志写入缓存,日志不会刷新。如果发生故障,数据将会丢失,并且内存需求也会增加。
自定义编号N:表示每N个事务只刷新到磁盘一次。提高性能,但崩溃时会丢失大量数据。一般设置为10。
5、追求性能配置:
sync =10: 笔试题要点
=1
日志从站-=0
#来自库的更新不会写入二进制日志(不推荐)
300M 500G
#控制存储引擎缓冲池的大小。设置的值越高,其性能越好。更多的数据和索引可以缓存在内存中。减少磁盘访问次数。对系统内存的要求比较高。
6、如何实现主从复制:基于mysql的二进制日志,根据主库二进制文件的flag进行主从同步;主从服务器之间的服务器时间必须同步。
主从复制实验:
主线:192.168.127.10
从 1:192.168.127.80
从 2:192.168.127.90
1、关闭主从服务器的防火墙和安全机制
2.在主从上安装ntp
3、检查主从服务器时间是否同步:
如果时间不同步,则输入命令行:使主从时间一致。
4.配置主服务器:vim /etc/f
5.配置好主服务器文件后,重启主数据库并进入数据库
6、为从服务器创建用户名并设置密码,赋予从服务器连接主服务器的权限,最后检查主服务器的同步位置点()。 -垃圾桶。为二进制同步文件,857为同步位置点。
6、配置两台从服务器 vim /etc/f.从机1的配置文件和从机2的配置文件的区别在于-id是从1到2和从2到3。
来自 1 台服务器
来自 2 台服务器
7、重启两台从服务器的数据库,进入数据库
8. 进入两台从服务器的数据库并同步配置。
9. 实施
2、读写分离:基于主从架构,主库负责写,从库只负责读。
1、读写分离方式:由代码完成,性能好,不需要额外的硬件设备。
中间层代理服务器是基于客户端和主从架构之间的代理服务器。代理服务器收到客户端的请求后,通过客户端的SQL语句进行判断,将读转给slave,写转给。
2、最常见的读写分离的客户端代理软件,用java代码开发的软件:
3.读写实验:用于实现读写分离
1.关闭防火墙和安全机制
2.代理服务器安装及jdk环境
vim /etc/
在三台Mysql服务器上设置权限并允许访问
主服务器
返回代理服务器:修改vim.xml和vim.xml配置文件,修改前请备份。
取消注释第 30、31、115、117 和 120 行
23 号线、26 号线及以下、46 号线及以下、66 号线及以下
启动代理服务器并在后台运行
检查java是否启动
客户端服务器:
安装完成后,重启客户端,检查端口是否启动。
回到数据库:三个都需要改
返回客户端连接代理服务器
创建数据库xy105
返回客户端连接代理服务器,创建表并插入数据
4.总结+面试题
1、主从同步复制原理
(1)节点将数据变化记录到二进制日志(bin log)中。当节点上的数据发生变化时,变化会写入二进制日志中。
(2)Slave节点会在一定的时间间隔内检测二进制日志是否发生变化。如果它发生变化,它将启动 I/O 线程请求的二进制事件。
(3)同时,节点为每个I/O线程启动一个dump线程,向其发送二进制事件,并保存到Slave节点本地的中继日志(Relay log)中。 Slave节点会启动一个SQL线程从relay log中读取relay log。读取二进制日志并在本地重放,即将其解析为SQL语句并一一执行,使数据与节点一致。最后,I/O线程和SQL线程将进入睡眠状态,等待下次调用。
2.你用什么方法来分离读写?
代理mycat代码
通过代理服务器,可以在主服务器上只写,在从服务器上只读;
主库处理事务查询,从库处理查询;
数据库复制用于将事务查询引起的更改同步到集群中的从数据库。
3、如何查看主从同步状态是否成功
在从服务器上输入\G即可查看主从信息。检查IO线程的状态信息,以及服务器的IP地址和端口事务起始号。
当 和 都为YES时,表明主从同步状态成功。
4. 如果I/O不正确,如何排除故障?
首先排查网络问题,使用ping命令检查从服务器是否可以与主服务器通信。
然后检查防火墙和核心防护是否关闭(增强功能)
然后检查slave服务slave是否启用
是不是两台从服务器的-id相同,导致只有一台能连接?
值与 的值是否一致
5、show Slave可以看到哪些信息(比较重要)
IO线程状态信息
服务器IP地址、端口和交易起始位置
最近的错误信息和错误位置
最新的I/O错误消息和ID
最近的 SQL 错误消息和 ID
6、主从复制慢(延迟)有哪些可能?怎么解决呢?
主服务器负载过重,被多个睡眠或僵尸线程占用,导致系统负载过重。从库硬件比主库差,导致复制延迟。
主从复制是单线程的。如果主库的写并发太高,来不及传输到从库,就会造成延迟。
慢sql语句过多
网络延迟
如果主从版本不一致,则从版本必须高于主版本,以保证向下兼容。
因为如果主版本更新了,低版本的从版本就会不兼容。
扫一扫在手机端查看
-
Tags : mysql主从复制
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。