mysql 未找到命令_MySQL主从复制配置说明,一文教你搞懂数据库主从复制

一,MySQL主从配置原理

1. mysql支持的复制格式

基于语句复制(STATEMENT)

  • (优点)基于statement复制的优点很明显,简单的记录执行语句同步到从库执行同样的语句,占用磁盘空间小,网络传输快,并且通过mysqlbinlog工具容易读懂其中的内容 。
  • (缺点)并不是所有语句都能复制的比如:insert into table1(create_time) values(now()),取的是数据当前时间,不同的数据可能时间不一致,另外像存储过程和触发器也可能存在问题。

基于行复制(ROW)

  • (优点)从MySQL5.1开始支持基于行的复制,最大的好处是可以正确地复制每一行数据。一些语句可以被更加有效地复制,另外就是几乎没有基于行的复制模式无法处理的场景,对于所有的SQL构造、触发器、存储过程等都能正确执行。
  • (缺点)主要的缺点就是二进制日志可能会很大,比如:update table1 set name='admin' where id<1000,基于行复制可能需要复制1000条记录,而基于语句复制只有一条语句,另外一个缺点就是不直观,所以,你不能使用mysqlbinlog来查看二进制日志。

混合类型的复制(MIXED)

  • 混合复制是借用语句复制和行复制的有点进行整合,MIXED也是MySQL默认使用的二进制日志记录方式,但MIXED格式默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。比如用到UUID()、USER()、CURRENT_USER()、ROW_COUNT()等无法确定的函数。

2. mysql主从复制作用

  • 数据分布
  • 主从分摊负载。
  • 高可用性和故障切换。
  • 数据备份。
  • 利用从服务器做查询。

3. mysql主从复制原理

  • binlog Events 我们知道binlog日志用于记录所有对MySQL的操作的变更,而这每一个变更都会对应的事件,也就是Event。index文件记录了所有的binlog位置 每个binlog会有heade, event,rotate三个event,binlog的结构如下。

60645d2b4200e935e89a9bc8da5d8585.png

常见event如下:

  • Format_desc:一个全新的binlog日志文件event信息
  • Rotate :日志分割时结束event。
  • Table_map:表,列等元数据的event。
  • Query:查询,就是DDL这类的Event,如果binlog格式为STATEMENT格式,增删改都属于Qeury event。
  • Write_rows:Binlog为ROW格式时的插入event。
  • Update_rows:Binlog为ROW格式时的更新event。
  • Delete_rows:Binlog为ROW格式时的删除event。

我们也可以通过binlog 看到这些事件,通过mysql提供的工具查看binlog日志,如下:

abca06cf82cf8f0b5c94d110a58c2b43.png

主从复制流程

43d6f0ce8bab860853652eca636d5800.png
  • 当从库发出 start slave命令时,从库会创建I/O线程和SQL thread(SQL线程)
  • 从库的IO和主库的dump线程建立连接 并监听binlog二进制日志事件
  • 从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求
  • 主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程
  • 从库IO线程接收binlog evnets,并存放到本地relay-log中,传送过来的信息,会记录到http://master.info中。
  • 从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info,默认情况下,已经应用过的relay会自动被清理purge。

二,MySQL只从配置缺陷

MySQL的复制(replication)功能配置简单,深受开发人员的喜欢,基于复制的读写分离方案也非常流行。而MySQL数据库高可用大多也是基于复制技术,但是MySQL复制本身依然存在部分缺陷,最为主要的问题如下:
复制代码
  • 数据丢失问题(consistency)
  • 数据同步延迟问题(delay)
  • 扩展性问题(scalability)
从MySQL 5.7的lossless semi-sync replication已经解决了主从数据丢失的问题,MySQL 5.7的multi-thread slave也很大程度地解决了数据同步延迟的问题,MySQL 5.7的Group replication也很大程度地解决了扩展性问题。另外,MySQL 5.7.22 backlog了MySQL 8.0中的基于WriteSet的并行复制,可以说完全解决了主从数据延迟的问题。可以看出,MySQL正在朝着一个非常好的方向发展

三,准备工作

准备3台服务器分别为:

Master 192.168.1.234

Slave 192.168.1.235

Slave 192.168.1.236

四,MySQL安装配置

下载MySQL安装包

下载地址:cdn.mysql.com//Downloads/…

解压安装文件:

[root@localhost ~]# cd /software[root@localhost software]# tar -zxzf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
复制代码

拷贝安装文件到指定文件夹:

[root@localhost ~]# cp /software/mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql -r
复制代码

添加系统mysql组和mysql用户

[root@localhost ~]# groupadd mysql[root@localhost ~]# useradd -r -g mysql mysql
复制代码

进入安装mysql软件目录:执行命令 cd /usr/local/mysql

eea6e3a9fed0e340061fe955f51598cf.png

修改当前目录拥有者为mysql用户:执行命令 chown -R mysql:mysql ./

61e0d507836c97b92e1eaf6ca4074069.png

安装数据库:

5.6以及之前版本安装数据库

/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

cd09466684242a5a99fd8ae4c2612635.png

5.7版本安装数据库:

/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize

d440b784f0ca609125cc6dde2f8b4451.png

拷贝配置文件到指定文件夹

[root@localhost mysql]# cp -a ./support-files/my-default.cnf /etc/my.cnf

[root@localhost mysql]# cp -a ./support-files/mysql.server /etc/init.d/mysqld

1a1f41b76e878f24d70aff069c1deb81.png

后台启动mysql

[root@localhost mysql]# ./bin/mysqld_safe --user=mysql &

758e1abc81821d57854a40a41a9f5ce6.png

重启mysql

执行命令: /etc/init.d/mysqld restart

096893f192e09001218059804e11e239.png

设置为开机启动:

执行命令:chkconfig --level 35 mysqld on

f633b30a091520602441bdb271b8da8a.png

初始化密码:

依据官方说明5.6以后版本,第一次启动时会在root目录下生产一个随机密码文件名.mysql_secret。

cat /root/.mysql_secret

0d53ac2e8bd975ecd96720598f2d56d0.png

修改root密码:

/usr/local/mysql/bin/mysqladmin -u root -h localhost password '123456' -p

Enter password处输入输入.mysql_secret里第二行内容

2f1e00ac0c1cfb2b36667387731d9271.png

遇上-bash: mysql: command not found(未找到命令)的情况别着急,这个是因为/usr/local/bin目录下缺失mysql导致,只需要一下方法建立软链接,即可以解决

ln -s /usr/local/mysql/bin/mysql /usr/bin

ef15e0942a359056e69013261dd234bd.png

1173b3c08c792488f497b0b68370d91e.png

五,MySQL主从复制配置

下载MySQL安装包

Master服务器my.cnf增加配置:

#GTID:server_id=234              #服务器id,一般为IP末位gtid_mode=on                 #开启gtid模式enforce_gtid_consistency=on  #强制gtid一致性,开启后对于特定create table不被支持 #binloglog_bin=/usr/local/mysql/binlogs/master-binloglog-slave-updates=1    binlog_format=row            #强烈建议,其他格式可能造成数据不一致 #relay logskip_slave_start=1
复制代码

Slave服务器my.cnf增加配置:

#GTID:gtid_mode=onenforce_gtid_consistency=onserver_id=235 #binloglog-bin=/usr/local/mysql/binlogs/slave-binloglog-slave-updates=1binlog_format=row      #强烈建议,其他格式可能造成数据不一致 #relay logskip_slave_start=1read-only = ON   #这项功能只对非管理员组以为的用户有效
复制代码

在Master服务器上创建用于同步的账号:

create user 'cspmslave'@'192.168.1.%' identified by 'cspm-slave';

对账号进行Slave授权:

grant replication slave on . to cspmslave@'192.168.1.%';

bd39384d750a2764c2e47ff022e09511.png

从库连接主库

mysql> change master to master_host='192.168.1.234', master_port=3306, master_user='cspmslave', master_password='cspm-slave', master_auto_position=1;

mysql> start slave;

a56534cc1a689f4cd48bfede6fe53468.png

查看从服务器连接状态(下图所示,两个Yes表示连接成功):

mysql> show slave status G;

8e60edfc3e38f902f6ddd0f134d2a15d.png
作者:小林啊
链接:https://juejin.cn/post/6907499323810906126
来源:掘金
侵删

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

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

相关文章

.NET 5.0即将不再提供服务更新,请升级到.NET 6.0

5 月 8 日更新之后&#xff0c;微软将不再为 .NET 5.0 提供服务更新&#xff0c;包括安全修复或技术支持&#xff0c;用户需要将 .NET 版本更新到受支持的版本 (.NET 6.0 ) 才能继续接收更新。.NET 5.0 不是 LTS 版本&#xff0c;因此将在发布 18 个月或下一个版本发布后的 6 个…

关于PHP默认Expires: Thu, 19 Nov 1981...的故事

为何PHP不设置Expires头的时候, 默认输出如下的缓存头呢&#xff1f;: Expires: Thu, 19 Nov 1981 08:52:00 GMT 答案来自stackoverflow : Its an attempt to disable caching. 这是用于尝试禁用浏览器缓存PHP请求的 The date is the birthday of the developer Sascha Schuman…

认识与入门:Markdown

原文&#xff1a;http://www.jianshu.com/p/22ba695a7ce3 Markdown 是一种轻量级的「标记语言」&#xff0c;它的优点很多&#xff0c;目前也被越来越多的写作爱好者&#xff0c;撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑&#xff0c;Markdown 的语法十分简单…

游戏开发Camera之Cinematic Camera-深度

人的视觉系统是二维的&#xff0c;它通过生理和心理的暗示来感知图像的深度&#xff0c;在现实世界中视觉系统会自动用深度线索depth cue来确定对象之间的距离游戏画面也是二维的&#xff0c;用x&#xff0c;y轴来定义&#xff0c;画面深度用z轴来定义&#xff0c;可以通过创造…

hibernate注解方式来处理映射关系

在hibernate中&#xff0c;通常配置对象关系映射关系有两种&#xff0c;一种是基于xml的方式&#xff0c;另一种是基于annotation的注解方式&#xff0c;熟话说&#xff0c;萝卜青菜&#xff0c;可有所爱&#xff0c;每个人都有自己喜欢的配置方式&#xff0c;我在试了这两种方…

DB2 SQL 递归实现多行合并

最终效果 原始数据&#xff1a; 转换脚本&#xff1a; WITH post_a AS ( SELECT DISTINCT T.EMP_NO,S.CODE_ FROM inscndb.DTFMA000_EMP_POST T ,VIEW_BI_POST S WHERE T.POST||-||POST2 S.POST ), post_b AS (SELECT emp_no,code_,ROW_NUMBER() OVER(PARTITION BY EMP_NO ORD…

mysql逻辑结构设计_数据库设计:逻辑结构设计

概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式&#xff0c;它独立于任何一种具体的数据模型&#xff0c;因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统&#xff0c;还需要将概念结构进一步转化为某一DBMS所支持的数据模型&#xff0c;然后…

.NET6之MiniAPI(二十五):Dapper

注&#xff1a;如果你使用Dapper一段时间了&#xff0c;这篇你可以跳过去了。在第十二篇中&#xff0c;我们聊过官方的ORM——EntityFramework&#xff0c;它可以把SQL细节都隐藏&#xff0c;这对于一些标准化的关系数据库项目非常便捷。今天&#xff0c;介绍另外一个流行的ORM…

LeetCode Implement Queue using Stacks (数据结构)

题意&#xff1a; 用栈来实现队列。 思路&#xff1a; 一个栈是不够的&#xff0c;至少要两个。 &#xff08;1&#xff09;插入。永远只插入到stack1中&#xff08;插到栈顶&#xff09;。 &#xff08;2&#xff09;弹出。如果stack2不为空&#xff0c;直接弹出stack2的栈顶&…

直角三角形知道两边求角度_每日一讲:解直角三角形(3.21)

考点一、直角三角形的性质 1、直角三角形的两个锐角互余&#xff1a;可表示如下&#xff1a;∠C90∠A∠B902、在直角三角形中&#xff0c;30角所对的直角边等于斜边的一半。3、直角三角形斜边上的中线等于斜边的一半4、勾股定理&#xff1a; 如果直角三角形的两直角边长分别为…

Blazor University (4)组件 — 单向绑定

原文链接&#xff1a;https://blazor-university.com/components/one-way-binding/单向绑定源代码[1]此时我们在页面内显示了一个组件&#xff0c;但内容是静态的。我们真正想要的是能够动态输出内容。如果我们更改 /Components/MyFirstComponent.razor 的内容&#xff0c;我们…

Java Web项目开发流程

2019独角兽企业重金招聘Python工程师标准>>> 1.Web项目开发流程图解 2.Web项目开发的细节&#xff08;转载&#xff09; 任何一个项目或者系统开发之前都需要定制一个开发约定和规则&#xff0c;这样有利于项目的整体风格统一、代码维护和扩展。由于Web项目开发的分…

OpenGL中shader使用

引自&#xff1a;http://blog.csdn.net/wl_soft50/article/details/7916720 http://blog.sina.com.cn/s/blog_923fdd9b0102vbe0.html 与OpenGL ES1.x渲染管线相比&#xff0c;OpenGL ES 2.0渲染管线中“顶点着色器”取代了OpenGL ES 1.x渲染管线中的“变换和光照”&#xff1b;…

贪心算法之最短路径问题(Dijkstra算法)

1、问题 一个求单源最短路径的问题。给定有向带权图 G =(V, E ), 其中每条边的权是非负实数。此外,给定 V 中的一个顶点, 称为源点。现在要计算从源到所有其他各顶点的最短路径长 度,这里路径长度指路上各边的权之和。 2、分析 3、代码实现 1、普通C++实现 #include &l…

Centos实现svn本地认证apache认证

本文系统&#xff1a;Centos6.5_x64 本地lamp环境 ip:192.168.184.129一、搭建svn&#xff0c;实现svn方式访问、本地用户认证二、实现http方式访问、apache本地文件认证subversion目录说明&#xff1a;*dav目录&#xff1a;是提供apache与mod_dav_svn使用的目录&#xff0c;让…

ASP.NET Core 6.0对热重载的支持

.NET 热重载技术支持将代码更改&#xff08;包括对样式表的更改&#xff09;实时应用到正在运行的程序中&#xff0c;不需要重启应用&#xff0c;也不会丢失应用状态。一、整体介绍目前 ASP.NET Core 6.0 项目都支持热重载。在以下情况下支持应用的热重载&#xff1a;1. 仅运行…

vscode搜索文件_VS Code 新图标来临 —— 侧边栏、文件管理器、搜索、调试等区域的图标迎来全新设计...

今天(北京时间 2019 年 7 月 9 日)&#xff0c;微软 Visual Studio Code 团队的高级设计师 Miguel Solorio 在 Twitter 上宣布了全新的图标已经来到了 VS Code Insiders 版本&#xff01;这意味着&#xff0c;全新的图标将会在下个月发布的 VS Code 1.37 正式版中出现。此次图标…

[活动 3.30]MAUI 跨平台应用开发实战

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;4 分钟&#xff09;活动介绍▌MAUI 跨平台应用开发实战前端应用开发往往需要面对 iOS、Android、Windows 等多平台开发的问题。如能用一种开发工具进行多平台的开发&#xff0c;可以跨平台共享 UI 布局和设计&#xf…

python爬虫企业级技术点_Python爬虫必备技术点(一)

爬虫必备技术面向具有Python基础的Python爬虫爱好者&#xff0c;urllib和requests两个库在实际的项目中应用也非常广泛&#xff0c;不仅用于爬虫技术也可以应用在API接口调用方面。如果需要相关的案例可以加我QQ(610039018)&#xff0c;另外我在B站上已发布了相关的爬虫视频(ht…

Citrix桌面及应用虚拟化系列之二:XenServer补丁

安装好XenServer之后&#xff0c;可以找一台管理机器&#xff08;目前主流系统都支持&#xff09;安装XenCenter&#xff0c;通过XenCenter来实现对XenServer的管理。安装XenCenter: 安装.NET Framework3.5 然后可以下载安装中文版的XenCenter&#xff0c;下载地址&#xff1…