当前位置: 首页 > news >正文

柳州网站建设哪家公司好建设与管理局网站

柳州网站建设哪家公司好,建设与管理局网站,智能建站,wordpress播放列表目录 一、前言 二、mysql主从架构简介 2.1 mysql主从复制架构概述 2.2 为什么使用主从架构 2.2.1 提高数据可用性 2.2.2 提高数据可靠性 2.2.3 提升数据读写性能 2.3 主从架构原理 2.4 主从架构扩展 2.4.1 双机热备#xff08;AB复制#xff09; 2.4.2 级联复制 2…目录 一、前言 二、mysql主从架构简介 2.1 mysql主从复制架构概述 2.2 为什么使用主从架构 2.2.1 提高数据可用性 2.2.2 提高数据可靠性 2.2.3 提升数据读写性能 2.3 主从架构原理 2.4 主从架构扩展 2.4.1 双机热备AB复制 2.4.2 级联复制 2.4.3 并联复制一主多从 三、搭建mysql主从 3.1 环境准备 3.2 搭建mysql主节点 3.2.1 配置yum源 3.2.2 安装mysql源 3.2.3 检查mysql源是否安装成功 3.2.4 安装mysql 3.2.5 启动mysql服务 3.2.5 mysql目录介绍 3.2.6 修改root账户密码 3.2.7 修改配置文件 3.3 搭建mysql从节点 3.4 主从节点配置 3.4.1 master配置 3.4.2 slave配置 3.5 创建同步账号 3.6 slave开启同步 3.7 测试与验证 四、搭建半同步复制 4.1 主从复制架构问题 4.2 什么是半同步复制 4.3 半同步复制搭建流程 4.3.1 前置准备 4.3.2 安装mysql插件 4.3.3 激活插件 4.3.4 slave节点重启IO线程 4.4 半同步复制效果测试 4.4.1 master插入一条数据 4.4.2 slave模拟发生故障 4.4.3 重新启动半同步复制 4.4.4 修改master等待时间 4.4.5 卸载半同步复制插件 4.4.6 补充说明 五、写在文末 一、前言 mysql主从架构对很多同学来说并不陌生mysql主从模式是很多集群架构的基础基于mysql主从模式可以衍生出更复杂的集群架构从而解决大规模甚至超大规模的数据问题因此是每个学习者必须掌握的技能。但在实际业务中单一的主从复制并不能很好的满足业务因为mysql主从模式的数据同步是异步的这就造成从节点可能会同步失败于是就有了半同步复制模式。但是在开始学习半同步复制模式之前让我们全面深入的了解下经典的mysql主从模式吧。  二、mysql主从架构简介 2.1 mysql主从复制架构概述 MySQL主从复制是指将一个MySQL数据库数据同步到另一个MySQL数据库的过程。其中一个数据库是主库另一个或多个数据库作为从数据库。主数据库负责写入和更新数据而从数据库则复制主数据库的数据。 2.2 为什么使用主从架构 使用mysql主从架构可以提高数据的可用性、可靠性和性能。 2.2.1 提高数据可用性 主从复制可以提高数据可用性。 如果主数据库出现故障从数据库可以接管并提供服务从而保障业务正常运行。主从复制还可以帮助实现数据备份和恢复从而避免数据丢失和损坏。 2.2.2 提高数据可靠性 主从复制可以提高数据可靠性。 当主数据库发生故障时从数据库可以接管并提供服务从而避免数据的丢失和损坏。主从复制还可以实现数据的近实时同步从而避免数据的不一致性和错误。 2.2.3 提升数据读写性能 主从复制可以提高数据性能。 当主数据库处理大量的并发请求时可以通过配置读写分离的方式将一部分读请求分给从库从而缓解主数据库压力提高整个系统的性能。 2.3 主从架构原理 简单来说master将数据库的改变写入二进制日志slave同步这些二进制日志并根据这些二进制日志进行数据重演操作实现数据异步同步。如下图所示为主从复制的过程。 结合上图其详细的执行流程如下 slave端的IO线程发送请求给master端的binlog dump线程master端binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的IO线程salve端IO线程获取到的内容依次写到slave端relay log(中继日志)里并把master端的bin-log文件名和位置记录到master.info里salve端的SQL线程检测到relay log中内容更新就会解析relay log里更新的内容并执行这些操作从而达到和master数据一致 relay log 中继日志 relay log 作用记录从(slave)服务器接收来自主(master)服务器的二进制日志 2.4 主从架构扩展 由主从架构结合实际业务还可以扩展出更多的架构模式下面列举几种由主从复制扩展出来的架构。 2.4.1 双机热备AB复制 在这种模式下master 接受读写请求而slave只接受读请求以减轻master的压力。 2.4.2 级联复制 即多个slave互相串联成一个链条的模式后面的slave从前面的一个slave复制数据 优点可进一步分担读压力 缺点slave1或中间某个slave 出现故障后面的所有级联slave服务器都会同步失败 2.4.3 并联复制一主多从 即一个master下面挂载多个slave节点 特点 从命名来看两台master好像都能接受读、写请求但实际上往往运作的过程中同一时刻只有其中一台master会接受写请求另外一台接受读请求。 基于这种思想如果想要实现多节点数据强一致性业界也产生了其他成熟的解决方案比如PXC集群模式MGR集群模式都属于多主模式即多个节点均作为master同时对外提供读写服务。 三、搭建mysql主从 3.1 环境准备 本文使用云服务器最低配置 2核2G带宽4mb/s 编号IP地址角色操作系统配置1101.34.111.131主节点(Master)centos7.62核4G2101.34.111.132从节点(Slave)centos7.62核2G 3.2 搭建mysql主节点 下面基于rpm方式搭建mysql版本为5.7主从两个节点安装的过程基本相同只在最后配置主从关系时有所不同后面会重点说明先演示在主节点使用rpm的方式安装mysql。 3.2.1 配置yum源 下载rpm包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 如果出现-bash: weget: command not found需要yum install -y wget 如果安装不了就使用wget配置镜像仓库阿里云、网易云等具体操作步骤如下 1备份CentOS-Base.repomv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2下载阿里云镜像wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3清理缓存yum clean all 4生成缓存yum makeache 5更新最新源设置yum update -y 3.2.2 安装mysql源 yum localinstall mysql57-community-release-el7-8.noarch.rpm 3.2.3 检查mysql源是否安装成功 yum repolist enabled 3.2.4 安装mysql yum -y install mysql-community-server --nogpgcheck 3.2.5 启动mysql服务 与mysql启停相关的命令如下  systemctl start mysqld systemctl stop mysqld systemctl restart mysqld 执行启动命令之后查看启动状态 systemctl status mysqld 3.2.5 mysql目录介绍 yum安装mysql默认文件路径在my.cnf不做其他配置的情况下 默认配置文件路径 配置文件/etc/my.cnf 日志文件/var/log/mysqld.log 服务启动脚本/usr/lib/systemd/system/mysqld.service socket文件/var/run/mysqld/mysqld.pid 插件目录/usr/lib64/mysql/plugin 3.2.6 修改root账户密码 mysql安装完后在文件中给生成一个默认密码如果后续需要在其他客户端登录需要重新修改密码并授权通过下面的方式找到这个密码 grep temporary password /var/log/mysqld.log 找到这个密码之后使用命令登录进去但是从mysql5.7之后的某个版本开始登录之后使用下面的命令直接修改的话可能会报下面的错误 set passwordpassword(123456); 这个意思是说mysql5.7默认安装了密码安全检查插件默认密码检查策略要求密码必须包含大小写字母、数字和特殊符号并且长度不能少于8位。通过下面的命令可以查看密码策略的相关信息 show variables like %password%; 关于参数具体含义可以查阅相关的资料网上比较丰富为了简化后续的操作这里提供一种比较简单的修改方式 密码修改策略 在/etc/my.cnf文件添加validate_password_policy配置指定密码策略配置如下 validate_password_policy0 # 选择0LOW1MEDIUM2STRONG其中一种选择2需要提供密码字典文件 如果不需要密码策略添加my.cnf文件中添加如下配置禁用即可 validate_passwordoff 上面的配置完成之后最后重启mysql服务再次登录到mysql客户端重新修改mysql的root密码 set passwordpassword(123456); grant all on *.* to root% identified by 123456; flush privileges; 3.2.7 修改配置文件 mysql主从的配置中主节点必不可少的配置一个是开启二进制日志另一个是主从节点的server-id不能一样首先在主节点添加下面的配置信息 log-binmysql-bin binlog-formatROW server_id1 修改完成后重启主节点服务然后在mysql安装目录下就可以看到bin-log的文件了 3.3 搭建mysql从节点 整个搭建的过程基本相同执行步骤一直到启动mysql从节点的服务即可这里就不再赘述了参考上面的步骤执行即可 3.4 主从节点配置 分别在master节点和slave节点的my.cnf中做如下配置 3.4.1 master配置 参照上面步骤如果配置过了可忽略 3.4.2 slave配置 在/etc目录下找到my.cnf添加下面的配置确保主从节点的server-id不同 server-id2 3.5 创建同步账号 在master节点上面执行创建slave用于同步数据的账号 create user master从数据库IP identified with mysql_native_password by master_pass; grant replication slave on *.* to master从数据库IP identified by master_pass; flush privileges; 查看master状态 show master status; 3.6 slave开启同步 从服务器登录进客户端之后依次执行下面的命令 #停止本机的同步 stop slave;#配置从服务器连接主服务器的配置项 change master to master_hostmaster 的IP,master_usermaster,master_password123456,master_log_filemysql-bin.000001,master_log_pos864;#刷新 flush privileges;查看同步状态 show slave status\G;#开启slave状态 start slave;show slave status\G; 当看到下面的这两个位置都为 Yes的时候说明主从环境配置完成 3.7 测试与验证 在master上面创建一个数据库创建一张表并写入几条数据检查是否能在从节点完成同步 create database test; use test; CREATE TABLE tb_user (id int(12) NOT NULL,name varchar(32) DEFAULT NULL,age int(12) DEFAULT NULL,subject varchar(32) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8; insert into tb_user values (1,liubei,33,java); 到这里主从复制的环境就基本上搭建完成接下来我们将基于该环境搭建出半同步复制的环境。 四、搭建半同步复制 4.1 主从复制架构问题 深入了解过主从模式的同学应该知道在主从模式下数据写入master时并不关注后续数据是否成功写入到slave即这是一个异步的过程这样的一个比较明显的问题就是假如数据同步过程中发生什么问题master是无感知的这样就造成了数据的不一致此时假如请求发到slave上可能造成读取数据失败的问题。有没有什么机制可以保证同步数据的准确性呢可以考虑使用半同步复制的模式。 4.2 什么是半同步复制 所谓的半同步复制就是master每commit一个事务(简单来说就是做一个改变数据的操作,要确保slave接受完主服务器发送的binlog日志文件并写入到自己的中继日志relay log里然后会给master信号告诉对方已经接收完毕这样master才能把事物成功commit。 这样就保证了master-slave的数据绝对一致但是以牺牲master的性能为代价)不过由于slave的同步写入数据需要一定时间所以整个过程的时间会拉长但等待slave响应的时间也是可以调整的。可以结合下面这张半同步复制的流程图进行理解。 4.3 半同步复制搭建流程 4.3.1 前置准备 完成mysql主从架构的搭建上面已经完成 4.3.2 安装mysql插件 半同步复制模式的实现需要借助mysql插件其实在安装完成mysql之后就默认带了一些插件工具基于上述rpm的方式安装插件的目录位置/usr/lib64/mysql/plugin master节点安装如下插件进入客户端命令行执行下面的语句 install plugin rpl_semi_sync_master soname semisync_master.so; 检查是否安装成功安装成功后就能看到该插件相关的选项信息 show global variables like rpl_semi_sync%; slave节点安装如下插件进入客户端命令行执行下面的语句 install plugin rpl_semi_sync_slave soname semisync_slave.so; show global variables like rpl_semi_sync%; 4.3.3 激活插件 上面在master和slave节点分别安装了半同步复制的插件此时状态均为OFF接下来需要对插件进行激活 master节点执行如下命令激活在上一步的基础上执行激活后再次确认状态 set global rpl_semi_sync_master_enabledon; show global variables like rpl_semi_sync%; slave节点执行如下命令激活在上一步的基础上执行激活后再次确认状态 set global rpl_semi_sync_slave_enabledon; show global variables like rpl_semi_sync%; 4.3.4 slave节点重启IO线程 在上面的基础上即slave客户端窗口执行下面的语句重启IO线程 stop slave IO_THREAD; start slave IO_THREAD; 4.4 半同步复制效果测试 从上文关于半同步复制原理了解到当slave从库的IO_Thread 线程将binlog日志接受完毕后要给master一个确认如果超过10s未收到slave的接收确认信号那么就会自动转换为传统的异步复制模式。接下来看具体的操作步骤。 4.4.1 master插入一条数据 基于上面环境master中test库下给tb_user表插入一条数据 insert into tb_user values (2,zhaoyun,23,flink); 如果插入成功使用下面的语句查看slave是否有成功返回 show global status like rpl_semi_sync%_yes_tx; Value为1表示这次事物成功从slave返回一次确认信号 ,以后每成功一次数字会依次递增 同时检查slave这边可以看到数据同步写入成功 4.4.2 slave模拟发生故障 假如环境中此时slave发生故障会怎么样呢停止slave的mysql systemctl stop mysqld 再次向master插入一条新数据 insert into tb_user values (3,guanyu,35,go); 从效果不难发现sql语句执行等待了10秒钟这就是在半同步复制模式下master等待slave响应默认的等待时间此时再次在master插入一条数据 insert into tb_user values (5,zhangliao,28,hadoop); 这一次很快就执行完成了因为基于 这种模式下在上一步master这边发现slave挂掉了于是就自动转成了原来的异步模式。 4.4.3 重新启动半同步复制 重新启动slave的mysql服务并开启半同步复制依次执行下面的语句 systemctl restart mysqld set global rpl_semi_sync_slave_enabledon; stop slave IO_THREAD; start slave IO_THREAD; 当上面的步骤完成后主从半同步复制又开启了同时slave服务停掉期间在master上面插入的两条数据也再次同步过来了 master需要等到slave确认后才能提交如果等不到确认消息master等待10s种后自动变成异步同步;slave启起来后master上改变的数据还是会自动复制过来数据又回到一致。 此时再次在master节点上再次插入一条数据slave中能够查到说明数据同步功能也恢复正常 insert into tb_user values (6,zhangfei,38,python); 4.4.4 修改master等待时间 在上面的故障模拟中第一次master默认的等待时间为10s如果觉得太长可以通过执行下面的语句调整 set global rpl_semi_sync_master_timeout5000; show global variables like rpl_semi_sync%; 4.4.5 卸载半同步复制插件 如果不想再使用该插件了可以通过下面的命令进行卸载 #查看系统中的插件 select plugin_name,load_option from information_schema.plugins; #卸载某个插件 uninstall plugin 插件名称; 4.4.6 补充说明 在某些情况下当使用上面的命令先停止slave的mysql服务然后再重新启动登录到客户端之后使用 show slave status命令的时候发现下面两个参数的状态均为NO Slave_IO_Running NO Slave_SQL_Running: NO 这种情况表明mysqld重启后主从同步也会随之关闭需要手动重新开启执行下面的命令即可重新建立slave与master的关系 start slave; 五、写在文末 本文通过较大的篇幅详细阐述了mysql主从复制的相关技术以及基于mysql主从复制基础上如何搭建和配置mysql半同步复制模式在生产实践中具有一定的参考性希望对看到的你有用哦本篇到此结束感谢观看。
http://www.w-s-a.com/news/795229/

相关文章:

  • 商业网站网站建设wordpress关闭前端公共库
  • 打开山东城市建设职业学院网站下载了wordpress后
  • 四川网站建设设计城乡建设网站证件查询系统
  • 企业邮箱哪里买栾城seo整站排名
  • 长沙网站建设zh68网页制作技术实训报告
  • 电商网站的功能手机广告设计与制作软件
  • 做网站前端需要编程基础吗杭州市住房和城乡建设局
  • 网站开发一般学多久网站建设投标方案
  • 北京网站建设报价表制作短视频的软件有哪些
  • 长沙企业网站开发西安建设公司网站
  • 做图的兼职网站网站开发用了哪些知识要点
  • php网站怎么做静态化微慕wordpress插件
  • 电商营业执照wordpress利于seo
  • 那些网站主做玄幻小说营销策略都有哪些方面
  • 同一源代码再建设一个网站建立网站免费
  • 网站更换服务器影响做seo必须有网站吗
  • 免费网页模板网站php微信微网站怎么做
  • 网站的优点和缺点腾讯企点是什么软件
  • 谷歌英文网站推广网页设计好看的网站
  • 衡水网站建设集团各大网站注册
  • 违法网站开发做注册任务网站源码
  • 帝国cms仿站工具淮南寿县
  • 深圳网站建设方案外包手机怎样使用域名访问网站
  • 安陆市建设局网站磐安做网站
  • 梧州市建设局官方网站商旅100网页版
  • 好的宝安网站建设中企动力的网站开发语言
  • flash网站模板怎么用怎么套模板 网站
  • 建设二手商品网站总结石景山安保服务公司电话
  • 网站建设对于企业的重要性龙岗企业网站设计公司
  • 网站搭建在线支付数码产品网站模板