iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 主从的一些基础知识
  • 630
分享到

MySQL 主从的一些基础知识

2024-04-02 19:04:59 630人浏览 八月长安
摘要

本篇文章给大家分享的是有关Mysql 主从的一些基础知识,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql复制原理1. 主库修改时会把数

本篇文章给大家分享的是有关Mysql 主从的一些基础知识,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

mysql复制原理

1. 主库修改时会把数据变更作为event记录在binlog中,主库上的sync_binlog参数控制binlog日志刷新到磁盘.

2. 主库推送binlog 中的事件到从库的中继日志relay log,之后从库根据中继日志relay log重做数据变更操作。通过逻辑复制达到主从同步。

Mysql通过3个现成来完成主从数据库之间的复制:

1.binlog dump 跑在主库上,负责读取数据库事件并发送给I/O线程

2.I/O线程 跑在从库上,当从库start slave时 创建I/O线程 链接到master 将主库的事件写入到relaylog

3.SQL线程跑在从库上,负责读取relay log并更新从库。

4.Master.inf and relay-log.info 用来保存复制的进度。

三种复制方法, MIX,STATEMENT,ROW

1.  statement

基于语句的复制,可能会因为存储过程或触发器,时间函数导致主备不一致,数据量小。

2. row

行级数据复制,缺点是数据量较大,但是不会因为触发器等外在条件影响数据

3.   Mix

默认采用statement模式 如果语句中包含更新时间,用户相关的函数等

Mysqlbinlog –vv logfilename –base64-output=DECODE-ROWS –start-pos=number 才能解析row模式的内容。

双主复制架构

由master1 作为读写库,master2 作为只读库。

同时双向作为对方的slave。

当维护时

1.       先停掉master1上的slave。免得当master2 做维护时影响到master1.

2.       停掉master2 上的slave。 开始维护操作,比如创建索引

3.       打开master2上的slave 让master2 与master1 同步。

4.       将读写操作转移到master2 ,确保master1 上无写入操作

5.       将master1 的slave打开, 让其与salve2 同步完成。

搭建mysql复制:

1.       建立一个用于replication的账号:

Create replac slave on *.* TO ‘repl’@’192.168.7.200’ identified by ‘1234test’;

2.       修改my.cnf 开启binlog 并且设置server-id的值
log-bin = xxxxx.log
server-id=1

3.       住所有的表,lock tables with read lock

4.       检查当前日志偏移量 show master status

5.       备份或者通过直接shutdown数据库 拷贝数据文件的方式到slave库。

6.       Unlock tables;

7.       修改slave的my.cnf  server-id=2

8.       使用延迟复制开启salve ./bin/mysql_safe –skip-slave-start&

9.       对数据库服务做响应设置
mysql>change master to master_host=’’,master_user=’’,master_passWord=’’,master_logfile=’’,master_log_pos=’’;

10.   从库上输入:start slave;

11.   show process\G检查slave进程

12.   show variables like ‘%sync_binlog%’ 0的表示mysql不控制binlog的刷新,由文件系统控制。

13.   最后注意的几点就是MHA架构可以通过自动抽取缺失的log进行catchup。也可以通过mysqlbinlog工具来抽取之前主库为宕机时未抽取的log 传送到备库上去。

半同步复制:

在mysql 5.5之前,由于主备库之间都处于异步复制的状态,如果主库在commit了之后而崩坏,此时binlog尚未传到slave的库上。则会丢失数

而5.5之后mysql推出了半同步复制状态。在默认状态下mysql需要保证有任意一台备库的relaylog 接收到的更改之后才会确认commit已经成功。如果中途断网的话 则会再自动切换回半同步复制模式。

安装:
1.首先需要确认mysql是否可以使用该功能,select @@have_dynamic_loading =>YES

2到$MYSQL_HOME/lib/plugin/下找到主库/从库插件semisync_master/slave.so

3.主备库上安装该插件 install plugin rpl_semi_sync_master/salve soname ‘semisync_master/slave.so’

4.select * from mysql.plugin

5.在主备库上设置全局参数打开半同步set global rpl_semi_sync_master_enabled=1;

         Set global rpl_semi_sync_master_timeout=3000;

         从库上
         set global rpl_semi_sync_slave=1;

6如果已经启动了异步复制 需要停止一下io_thread. Stop slave io_thread; start slave io_thread;

Show status like ‘%semi_sync%’

需要注意的几个结果有:

rpl_semi_syc_master_status   ON 代表打开;

rpl_semi_syc_master_yes/no_tx 表示 同步或非同步的transaction次数

rpl_semi_syc_master_timeout 标示等待多久会判断slave超时。

如果从库断开后重新连接上了,会自动转回半同步状态。

Mysql replication 一些有用的参数:

1.  Log-slave-updates 从库是否需要记binlog  这个对于从库传从库是比较有帮助的

2.  Master-connect-retry 在从库和主库失去连接时的重试间隔 默认60秒

3.  ./bin/Mysqld_safe –read-only 让以避免超级用户以外的人修改从库的数据

日常维护命令:

1.       查看从库状态 show slave status.比较关心的2状态一个是SLAVE_IO_Running和Slave_SQL_Running.

2.       有时候主备库差距越来越大,可以在空闲的时候使用flush tables with read lock.
show master status 查看binlog的position。接下来使用select master_pos_wait(‘logiflename’,’log_pos’); 这个语句会阻塞直到从库同步到该点。 然后再解锁表。

3.       从库出错:

a)         如果需要跳过某些导致replication失败的语句可以使用set global SQL_SLAVE_SKIP_COUNTER=N. N=1|2. 当主库没有自增长时使用1 自增长用2.

b)         Log event entry exceeded max_allowed_packet 一般是因为有长字符串或blob无法传输。 此时需要增加主库上该参数的大小。

c)         多主复制时自增长变量冲突的话 在双主上需要设置auto_increment_increment=2,auto_increment_offset=1;(1,3,5,7….) auto_increment_increment=2,auto_increment_offset=0;(2,4,6,8….)

一些简单的提高从库性能的架构

1.通过master1 传给master2  master2使用blackhole 引擎开始slave-log-update。
  另外的slave 通过 replace-do-db的方式只复制部分数据库。这种方法的缺点是一旦master1宕机之后会比较麻烦需要提前商量好异常处理方案。

2.mysql 5.6之后有多线程复制,允许从库并行更新。Slave_parallel_works=2. Percona分支的mysql还可以用淘宝丁奇的mysql transfer来实现从主库多线程应用中继日志来解决。

Http://dinglin.iteye.com/blog/188640.

切换主从:

1.先确保所有从库都执行了relay log中的全部更新。 在每个从库上执行 stop slave io_thread。 然后用show process \G 直到看到 state: has read all relay log之后标志更新全都执行完毕。

2. S1上Stop slave.打开log-bin模式。 同时关闭log-slave-updates.

3. Reset master.

4. S2上执行stop slave 然后 change master to master_host=S1. Start slave.

5. 删除S1上的master.info 和relay-log.info 否则下次还是按照从库启动

6.主库修复后 可以按照s2的配置方法 重置到S1。

以上就是MySQL 主从的一些基础知识,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 主从的一些基础知识

本文链接: https://www.lsjlt.com/news/62070.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 主从的一些基础知识
    本篇文章给大家分享的是有关MySQL 主从的一些基础知识,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQL复制原理1. 主库修改时会把数...
    99+
    2024-04-02
  • 【MySQL】MySQL基础知识详解(一)
    MySQL select列的别名去除重复行空值参与运算着重号查询常数显示表结构过滤数据 排序使用 ORDER BY 对查询到的数据进行排序操作。使用列的别名,进行排序二级排序 分页LI...
    99+
    2023-09-04
    mysql 数据库 SQL
  • mysql基础知识有哪些
    本篇内容介绍了“mysql基础知识有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一章 mysql的...
    99+
    2024-04-02
  • mysql有哪些基础知识
    这篇文章将为大家详细讲解有关mysql有哪些基础知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:连接mysql关于mysql的下载和安装我在这里就不说了,第一步我们...
    99+
    2024-04-02
  • MySQL中的基础知识有哪些
    小编给大家分享一下MySQL中的基础知识有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL基础启动MySQL   net start mysql关闭MySQL &nb...
    99+
    2024-04-02
  • Mysql基础知识点有哪些
    这篇文章主要介绍Mysql基础知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据库的特点?数据结构化 ,数据之间具有联系,面向整个系统;数据的共享性高,冗余度低,易扩充;...
    99+
    2024-04-02
  • 一、PyQt基础知识
    一、基础知识 (一)简介 1. 什么是PyQt5 PyQt是基于Digia公司强大的图形程序框架Qt的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Th...
    99+
    2023-09-11
    pyqt qt python
  • MYSQL中基础知识有哪些
    这篇文章主要介绍了MYSQL中基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基础概念与基础命令1)基础概念① 数据库按照一定数据结构,存储和管理数据的仓库。...
    99+
    2023-06-25
  • Python基础知识(一)
      #Python中开始那个Hello World挺简单的。  #!user/bin/env python3  #这一行是shebang,用以指示用哪个解释器来执行,如果有的话,必须在程序第一行  print("Hello World!")...
    99+
    2023-01-31
    基础知识 Python
  • mysql基础知识-3
    一、mysql修改用户密码方法:    方法一:mysqladmin -u username -h host -p password 'new_password';    方法二:mysql>set password for 'use...
    99+
    2023-01-31
    基础知识 mysql
  • 【MySQL】基础知识(二)
    MySQL基础知识(二) 文章目录 MySQL基础知识(二)01 表操作1.1 创建表1.2 查看所有表1.3 查看指定表的结构1.4 删除表练习 02 CURD2.1 新增2.1.1 ...
    99+
    2023-09-06
    mysql adb android
  • MySQL中的基础知识点有哪些
    这篇文章主要为大家展示了“MySQL中的基础知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的基础知识点有哪些”这篇文章吧。一、SQL简述...
    99+
    2024-04-02
  • 一些前端基础知识整理
    这篇文章主要讲解了“一些前端基础知识整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“一些前端基础知识整理”吧!Call, bind, apply实现//&...
    99+
    2024-04-02
  • MYSQL中基础知识点有哪些
    这篇文章给大家分享的是有关MYSQL中基础知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据库概述Database:数据库,用于永久的存储数据的软件,海量存储、高效存...
    99+
    2024-04-02
  • MySQL必备基础知识有哪些
    这篇文章给大家分享的是有关MySQL必备基础知识有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、SQL的概念    结构化查询语言...
    99+
    2024-04-02
  • MySQL基础知识要点有哪些
    本篇内容主要讲解“MySQL基础知识要点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL基础知识要点有哪些”吧! 1...
    99+
    2024-04-02
  • (3)Powershell基础知识(一)
    上节介绍了Windows自带的Powershell开发工具:命令行行窗体和集成开发环境ISE的启动及一些配置注意事项,具体细节使劲戳Powershell开发工具。这一节介绍Powershell的基础知识,包含以下知识点Powershell的...
    99+
    2023-01-31
    基础知识 Powershell
  • mysql基础知识汇总
    本篇内容介绍了“mysql基础知识汇总”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL基础知识整理:s...
    99+
    2024-04-02
  • MySql入门--基础知识
    一、Mysql 物理文件组成 (一)日志文件 1、错误日志:Error Log 错误日志记录了MyQL Server 运行过程中所有较为严重的警告和错误信息,以及MySQLSer...
    99+
    2024-04-02
  • 虚拟主机基础知识点有哪些
    今天小编给大家分享一下虚拟主机基础知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么叫虚拟主机?  虚拟主机,是...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作