本文作者:kris

详解MySQL主从复制读写分离搭建-mysql 主从复制模式

kris 2025-01-22 12:24:05 2
详解MySQL主从复制读写分离搭建-mysql 主从复制模式摘要: mysql主从挂了以后怎么自动切换?1、可以通过使用MHA(MySQL High Availability)工具实现MySQL主从自动切换。2、MHA可以通过对MySQL主从复制过...

mysql主从挂了以后怎么自动切换?

1、可以通过使用MHA(MySQL High Availability)工具实现MySQL主从自动切换。
2、MHA可以通过对MySQL主从复制过程进行监控,一旦发现主库出现故障无法正常工作时,MHA会快速地将从库提升为新的主库。
同时,MHA还能对MySQL集群进行配置管理、切换控制、监控报警等功能。
3、除了MHA,还有Pacemaker等其他一些工具可以实现主从自动切换,这些工具的选择和应用还需要根据实际情况进行综合评估。
同时,为避免不必要的故障发生,也应该对MySQL主从挂掉后的自动切换进行必要的预案设计和测试。

mysql如何做实时的备份,也就是主从?

实现两个Mysql数据库之间同步同步原理: MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。

MySQL 的bin log 二 进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete...

什么情况会导致MySQL主从复制延迟?

1.网络的延迟由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。

2.主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。

3.max_allowed_packet设置不一致主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。

4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。

如何使用mysql主从配置?

头条回答是拼字数么?哈哈。

1、原理:mysql开启binlog日志记录功能,然后主mysql上的操作都会记录到binlog,其他mysql同步这个binlog 就行了。

2、具体实施,看头条问答不行的。找专业的博客,看看。

是说怎么使用吗,主库只负责写,更新,删除,从库负责读,这样从库可以减轻主库压力,当然,虽然运维层面做好了主从,代码上怎么实现就需要开发来做了,不过,当前的大部分框架都实现了数据库主从分离

01前言

文章一切从简是米兜的一贯作风,太长的文章阅读起来感觉就费劲。如何使用mysql主从配置?我们就从简单的例子看一看,更加详细的配置可以自行google,这里过一下主从配置且能你快速上手。

MySQL主从复制工作原理图,过一下:

详解MySQL主从复制读写分离搭建-mysql 主从复制模式

主服务器上面的任何修改都会保存在二进制日志Binary log里面,从服务器上面启动一个I/O thread(实际上就是一个主服务器的客户端进程),连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log里面。从服务器上面开启一个SQL thread定时检查Realy log,如果发现有更改立即把更改的内容在本机上面执行一遍。

02实验环境

  • 两台服务器做配置测试:虚拟机中的 ubuntu (192.168.128.131) 和宿主机 xp (192.168.128.1)

  • 分别安装有 mysql。最好版本一样(我的不一样)

  • 机子都 ping 得通


03主服务器配置(ubuntu)

配置 mysql

#vi /etc/mysql/my.cnf

[mysqld]

log-bin=mysql-bin #[必须]启用二进制日志

server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段

检查 mysql 是否允许远程连接

bind-address = 0.0.0.0 #这样表示允许所有网段连接

进入 mysql 终端

#mysql -uroot -proot

新建 mysql 用户(从服务器用到此账号配置)backup

mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';

刷新一下权限表

mysql> flush privileges;

重启 mysql

#service mysql restart

进入 mysql 终端查看 master 状态

mysql> show master status;

详解MySQL主从复制读写分离搭建-mysql 主从复制模式

记录 file 和 position 的值,从服务器配置用到。这个时候不要去动主数据库,会影响 position 的值。


04从服务器配置(xp)

配置 mysql 的 my.ini 并重启

[mysqld]

log-bin=mysql-bin #[可选]启用二进制日志

server-id=2

登录 mysql 终端后执行

mysql> change master to master_host='192.168.128.131',

master_user='backup',

master_password='backup',

master_log_file='mysql-bin.000002',

master_log_pos=612;

启动 slave 从库

mysql> start slave;

查看 slave 从库

mysql> show slave status\G;

详解MySQL主从复制读写分离搭建-mysql 主从复制模式

Slave_IO_Running 和 Slave_SQL_Running 必须都为 Yes 才算成功。


05测试

ubuntu mysql

mysql> create database test_repl;

然后查看 xp mysql 如果出现 test_repl 库则说明主从复制配置成功

mysql> show databases;


06总结

这只是最基本的配置,还有很多配置命令就不折腾了。测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库 slave 会报错,执行这个命令后重启从库就可以跳过这个错误。

#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过一个事务

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/26053.html发布于 2025-01-22 12:24:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享