MySQL的主从复制云栖社区_MySQL-主从复制

前言

前篇说了作为运维在数据库块最起码要会两大技能,今天来说说第二技能--主从复制

随着业务的增长,一台数据库服务器以满足不了需求了,负载过重,这时候就需要减压,实现负载均衡读写分离,一主一从或一主多从

主服务器只管写,从服务器管读,从而提高效率减轻压力。

主从复制分类:

主从同步:当用户写数据主服务器必须和从服务器同步一致了才告诉用户写入成功,等待时间太长

主从异步:只要用户访问写数据主服务器写入立马返回给用户成功

主从半步同步:当用户访问写数据主服务器写入并同步其中一个从服务器就返回给用户成功

备注:通常都是使用的主从异步,根据环境需求来选择,想要数据更安全选择半步同步

主从复制注意事项

注意:selinux策略、防火墙

1、开启二进制日志

2、设置二进制记录格式为ROW(推荐)

3、设置唯一server-id

4、设置datadir中日志名称(可选)

5、创建有复制权限的用户账号

6、如果要启用级联复制,需要在从服务器启用

7、限制从服务器为只读

8、禁止主机名解析

9、高可用从服务器要加上

10、如何保证主从复制的事务安全(根据需求添加)

1)在master节点启用参数:

2)如果用到的为InnoDB存储引擎:

3)在slave节点启用参数:

主从复制原理

如图

a483dc5f48c8f1ad7aebc82159a47a23.png

备注:

主从同步有延迟,为什么?因为它时是单线程传送日志

实战-实现主从复制+高可用

准备工作

准备4台主机67、17、37、57,分别充当角色为管理主机、主服务器、2个从服务器

安装包:和主服务器同版本的mysql数据库包、和高可用安装包

mha4mysql-manager

mha4mysql-node

比如主服务器已经运行了1年了,发现满足不了需求了,需要搭建从服务器,我们先从搭建从服务器开始

备注:首先确保主服务器开启了二进制日志

确认二进制文件已启动

MariaDB [(none)]> show variables like '%log_bin%'

确认server-id

MariaDB [(none)]> show variables like 'server%';

主服务器设置

1、创建可用于复制的账号

2、完全备份数据(用于在从服务器上来还原)

备注:备份时的某表的状态

51a7adfddc7b0df8dfe47175d9634b80.png

为了下面的实验测试在这里我们备份玩再增加一条记录

insert hellodb.students (name,age)values('gaoda001',20);

e1aee6d5a71933b6874a0eb0b885616f.png

3、传送到从服务器37、57上

scp…

37、57(从)服务器设置

1、配置文件

1)开启二进制日志

2)设置server-id(要和主服务id区分开)

备注:57设置为3 只要他们不相同就可

3)从服务器设置为只读

4)禁止主机名解析

5)数据和索引分开存放

6)重启或启动服务

备注:以防万一可以查看下最重要的两项开启了没有

2、实现复制

1)进入数据库查找同步代码

13eca81dd4eea295aac5e4d3f9626dd9.png

2)根据情况编辑上图上的信息

注:起始位置可以在完全备份文件里查看

两种方式:

① 先还有完全备份数据再拿以上信息编辑下,在数据库中执行

② 直接把上面的信息添加到完全备份文件里

下面用第二种方式来操作如图

70171b2ad9b4ad0a1ee216118b9f9dd8.png

3)37主机还原并查看

mysql < all-2018-08-08.sql

6e3abddb449a482f2e3f59743e1d25d4.png

备注:以还原到备份时的状态

主服务器备份完有用户新加数据对吧,下面开启主从复制看看能不能复制过来最新的数据

4)查看复制状态

MariaDB [(none)]> show slave status\G

*************************** 1. row ***************************

Slave_IO_State:

Master_Host: 192.168.43.17

Master_User: repluser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 385 #从主服务器读取到的位置

Relay_Log_File: centos7_05-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: No #表示还没开启

Slave_SQL_Running: No #表示还没开启

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 385

Relay_Log_Space: 256

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL ##注意这个 表示同步时间差

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 0

Master_SSL_Crl:

Master_SSL_Crlpath:

Using_Gtid: No

Gtid_IO_Pos:

Replicate_Do_Domain_Ids:

Replicate_Ignore_Domain_Ids:

Parallel_Mode: conservative

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

1 row in set (0.03 sec)

5)开启主从复制并查看状态

start slave;

MariaDB [(none)]> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.43.17

Master_User: repluser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 608

Relay_Log_File: centos7_05-relay-bin.000003

Relay_Log_Pos: 778

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 608

Relay_Log_Space: 1092

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_SSL_Crl:

Master_SSL_Crlpath:

Using_Gtid: No

Gtid_IO_Pos:

Replicate_Do_Domain_Ids:

Replicate_Ignore_Domain_Ids:

Parallel_Mode: conservative

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

1 row in set (0.00 sec)

6)查看表确认有没有从主服务器同步最新的数据

08af9a31a0173319acd91f2fe77b3632.png

7)57(从服务器同样的设置)

备注:目前现实了异步同步复制,下面来看半同步设置

半同步设置

主服务器设置

1、首先在主服务器上安装插件

备注:

show plugins; ##查看当前系统中的插件列表

UNINSTALL PLUGIN rpl_semi_sync_master;##卸载插件

2、查看插件状态

37d61e81a414f689688ca9d1a8440440.png

3、开启

备注:最好写在配置文件中

291170c4156ddcc40e9bd30610bc1fc3.png

4、查看插件变量状态

SHOW GLOBAL STATUS LIKE '%semi%';

0f0a2b9a4811159210ef6faae674f64e.png

备注:这里记录有几个半同步主机

从服务器设置

1、安装插件

2、启动插件

备注:同样建议写在配置文件中

81dfade2ce01dd7bf4b801f1fe6b1491.png

3、从服务器查看改插件是否开始工作

SHOW GLOBAL STATUS LIKE '%semi%';

cfc1c85b62f5d02530c410bca1816af1.png

为什么没有开始工作?

因为是先开启的主从复制再安装的次插件

所以这种情况下,先停止从服务器的主从复制功能

1)停止:

2)再次开启主从复制

3)再去查看

d926dd959c05a0175536a08452aa51c3.png

备注:现在就启用了半同步功能,下面开始搭建高可用,实现主服务器宕机自动提升从服务器当主

MHA高性能

备注:四台主机之间必须是ssh基于key验证登陆,所以要先实现ssh互相链接

步骤:

ssh-keygen

cd .ssh

ssh-copy-id 192.168.43.67

把.ssh目录考到其他主机

1、在主服务器上创建管理者账号

2、在67管理主机上安装以下包

3、在17、37、57安装如下包

mha4mysql-node

4、在管理主机创建管理节点

根据上面创建的信息填写

[

备注:

candidate_master=1:是说主服务器宕机了带有这项的主机有机会当主

5、测试

1)ssh协议

2、检查复制

3、启动(默认前台执行)

212ae0ff548880046d02d707ba908a4f.png

备注:如果你是编译安装在/etc/mastermha/app1.cnf配置文件中指定日志路径,最好主从服务器数据库设置的位置都是一致的。

846c1a7d1d1012eb379f85d5664d854e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 数据分析的步骤_数据分析8个主要步骤

# 在对数据进行分析时&#xff0c;主要细分为明确目标、应用思维和如下8个具体步骤&#xff1a;1、读取数据2、清洗数据3、操作数据4、转换数据5、整理数据6、分析数据7、展现数据8、总结报告接下来将介绍使用python来具体处理数据&#xff0c;包括上面几个步骤的实现&#xff…

一、win7下安装yii2

作者&#xff1a;PHP学习网 出处&#xff1a;http://www.viphper.com/?p1159 本文版权归作者&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;否则保留追究法律责任的权利。 之前在liunx上安装过yii…

vs dll必须和exe在同一个目录_Win10系统丢失 .dll 文件的三种解决方案教程

有时候开机或打开一个软件时&#xff0c;系统会提示无法启动程序&#xff0c;这是怎么回事呢&#xff1f;这是因为计算机丢失某个或某些dll文件&#xff0c;由于系统本身不存在这些运行库文件&#xff0c;需要进行添加才能使用该软件。方法一&#xff1a;下载丢失的.dll文件&am…

datagrid页面获取表单一条数据的例子

【问题背景】 最近在做ITOO考评的时候想从页面获取表单选中的数据&#xff1a; 【代码】 在数据网格&#xff08;datagrid&#xff09;组件包含两种方法来检索选中行数据&#xff1a; getSelected&#xff1a;取得第一个选中行数据&#xff0c;如果没有选中行&#xff0c;则返回…

Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建

前言 前面一篇文章讲了一下版本控制&#xff0c;但其实这一篇并没有打算讲细节的&#xff0c;感觉应该自己去动手弄一下&#xff0c;后来考虑了一下&#xff0c;版本控制真的挺重要的&#xff0c;如果自己实在搭建不好反而不去使用的话&#xff0c;真的有点可惜&#xff0c;当然…

串口数据波形显示_【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传可飙到500KB/S...

【专题教程第6期】SEGGER的J-Scope波形上位机软件&#xff0c;RTT模式波形上传速度可狂飙到500KB/S左右说明&#xff1a;1、在实际项目中&#xff0c;很多时候&#xff0c;我们需要将传感器或者ADC的数值以波形的形式显示。通常的解决办法是用串口上位机&#xff0c;USB接口上位…

JavaScript-基础入门.0014.JavaScript内置对象

2019独角兽企业重金招聘Python工程师标准>>> 简单介绍: 说明: 内置对象就是不依赖宿主环境在程序执行之前已经存在的对象,不必显式的实例化内置对象,前面已经介绍了大部分内置对象,而Global和Math两个单体内置对象比较特殊,所以单独讲. Global对象: 说明: Js中不属于…

Java中字符串连接符(+)和append的区别

参考链接&#xff1a;https://www.jianshu.com/p/849f1d443b3a 文章结构&#xff1a; 第一部分&#xff1a;对的原理进行分析 第二部分&#xff1a; 和 append 循环对比&#xff08;贴出代码&#xff0c;以及分别循环后的反编译字节码&#xff0c;来对两者进行对比&#xff09;…

百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击

原出处&#xff1a;超级排名系统原文链接&#xff1a;SEO整站优化思路 - 超级排名系统整站优化的大体思路包括哪些&#xff1f;下面超级排名系统小编详细给大家讲解下&#xff1a;一、建站优化我们在建立网站之前与建立网站的时候需要做的优化&#xff0c;包括标题优化、描述关…

unity 天空盒_Unity自定义可编程渲染管线(SRP)(二)——编写第一个自定义SRP

一句话描述&#xff0c;我们可以把SRP分解成两个部分&#xff0c;分别是SRP Asset&#xff0c;SRP Instance。SRP AssetSRP Asset是一个Unity Asset文件&#xff0c;用来存储渲染管线的特定配置信息&#xff0c;包含的信息有&#xff1a;游戏物体是否应该投射阴影&#xff1b;使…

【design pattern】工厂方法模式和抽象工厂模式

前言 设计模式分为三大类&#xff1a; 创建型模式&#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式&#xff1b; 结构型模式&#xff1a;适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式&#xff1b; 行为型模式&#xff1…

弹簧触摸开关原理图_10年老电工经验之谈:常见的开关电源那些事儿

随着电控系统中对控制回路安全性要求提高&#xff0c;控制回路的工作电压是越来越趋于直流低压化。由此&#xff0c;控制回路内各种使用直流电源的传感器、中小微型直流继电器等电器装置是日益增多。也正因如此&#xff0c;电控系统内不同品牌的开关电源也相应地多了起来。因牵…

erlang mysql连接超时_Erlang数据库-(一)Erlang与Mysql的连接

下载&#xff1a;http://download.csdn.net/detail/hjhjava/7088277把该文件的东西全部编译好&#xff0c;然后根据下面的解释就可以操作Mysql的。很简单~-record(row,{a1 0, a20}).%% 第一个参数是该链接的名字(根据它来操作Mysql)&#xff0c;第二参数是本机号(ip地址)%% &a…

管理活动目录域服务实训_管理学院学生党支部开展实践教育基地服务活动

红星E校有态度 有温度 可关注为进一步加强党的建设&#xff0c;深化管理学院学生党支部与实践基地的互动性&#xff0c;2020年9月11至12日&#xff0c;管理学院学生党支部协助白鹤村村委实践基地完成第七次人口普查相关工作&#xff0c;共计6名预备党员参与。工作开始前的培训会…

mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql

peewee连接mysql中文数据编码系统是win7 x64python 2.7.6的site.py里面编码设定为 utf-8py文件首行指定 #coding:utf-8mysql 5.5.38安装时指定代码为utf-8peewee的连接数据库代码为&#xff1a;db MySQLDatabase(host 127.0.0.1, user root, passwd 1, database mz, chars…

配置windows失败,还原更新,请勿关机

最近给同事装系统&#xff0c;偶尔会出现如下问题&#xff1a; 如果是这种情况&#xff0c;只能耐心等待了&#xff0c;因为关机也没用&#xff01; 转载于:https://www.cnblogs.com/lijy/p/5327844.html

使用uicollectionView时需要注意的问题

1.UICollectionView使用流水布局——UICollectionViewFlowLayout时&#xff0c;需要满足条件&#xff1a; 每个item(即cell)的大小是一样的&#xff0c;不仅是宽度&#xff0c;还有高度。这样&#xff0c;当collectionview的宽度发生变化时&#xff0c;item能将其动态填充。ite…

swift 从手机选照片_19元起!定制专属手机壳!还可免费打印照片...

△剧透&#xff1a;文末有福利现在的年轻人体内涌动的都是追求有趣有特色的灵魂希望自己是这条gai最独一无二的仔撞衫撞包撞手机壳可以说是当代年轻人三大时尚忌讳尤其是手机壳极为重要毕竟换壳≈换机只需要几十元买新壳就可以拥有换新机般的仪式感不过作为手机壳老手都知道在某…

新手也能学会本地调试微信,natapp 官网映射

本地调试微信的新手指引~ 照着配置&#xff0c;一定可以配置成功&#xff0c;实现本地调试微信&#xff0c;公司好几个同事按照我写的步骤&#xff0c;都独立配成功了。 1.首选在natapp注册一个账号&#xff0c;申请免费隧道或者购买隧道&#xff0c;我买了一个月9元的付费隧道…

c实现三角形角度大于一个值_初中数学三角形知识点小结

▊ 三角形两边定理&#xff1a;三角形两边的和大于第三边。推论&#xff1a;三角形两边的差小于第三边。▊ 三角形中位线定理三角形的中位线平行于第三边&#xff0c;并且等于它的一半。▊ 三角形的重心三角形的重心到顶点的距离是它到对边中点距离的2倍。在三角形中&#x…