本文作者:kris

MySQL主从搭建(多主一从)的实现思路与步骤-mysql 多主一从原理

kris 2025-01-20 08:42:05 3
MySQL主从搭建(多主一从)的实现思路与步骤-mysql 多主一从原理摘要: mysql主备和主从区别?mysql 主从 主备区别mysql中集群和主从的区别:主从之间是通过mysql的replication来保证数据的一致性;相对mysql集群的数据同步方...

mysql主备和主从区别?

mysql 主从 主备区别

mysql中集群和主从的区别:主从之间是通过mysql的replication来保证数据的一致性;相对mysql集群的数据同步方式来讲是异步的。因为异步,所以主从之间复制数据可能会有一点微小的延时,就会出现不一致。

主从之间是通过mysql的replication来保证数据的一致性。相对mysql cluster的数据同步方式来讲是异步的。

mysql临时设置主从?

主从同步的详细过程如下:

1. 主服务器验证连接。

2. 主服务器为从服务器开启一个线程。

3. 从服务器将主服务器日志的偏移位告诉主服务器。

4. 主服务器检查该值是否小于当前二进制日志偏移位。

5. 如果小于,则通知从服

mysql如果出现主从数据不一致情况怎么弄?

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

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

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

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

5.mysql异常宕机情况下,如果未设置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出现binlog或者relaylog文件出现损坏,导致主从不一致。

6.mysql本身的bug引起的主从不同步。

7.版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库上面不支持该功能。

mysql主从复制是定时任务吗?

不是。

MySQL主从复制是为了实现数据库冗余备份,将master数据库数据定时同步至slave库中。一旦master数据库宕机,可以将web应用数据库配置快速地切换到slave数据库,确保web应用的。

如何使用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/25078.html发布于 2025-01-20 08:42:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享