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

旅游企业做网站主要目的网站建设方案书2000字

旅游企业做网站主要目的,网站建设方案书2000字,ps做网站尺寸,如何免费做网页文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置 1.6 MySQL主从复制延时问题的原因和解决办法1.6.1 故障… 文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置 1.6 MySQL主从复制延时问题的原因和解决办法1.6.1 故障现象1.6.2 原因1.6.3 解决方案1.5.5 测试 1.6 主从复制的3种同步模式1.6.1 异步复制Asynchronous replication1.6.2 全同步复制Fully synchronous replication1.6.3 半同步复制Semisynchronous replication 1.7 半同步复制1.7.1 前置准备1.7.2 配置主服务器1.7.3 配置从服务器1.7.4 测试1.7.5 什么情况下半同步和异步会互相转换 2. MySQL读写分离2.1 读写分离原理2.2 读写分离的使用场景2.3 主从复制和读写分离的关系2.4 常见的读写分离类型2.4.1 基于程序代码内部实现2.4.2 基于中间代理层实现 2.5 实现读写分离2.5.1 前置准备2.5.2 配置amoeba2.5.3 测试读写分离 1. MySQL主从复制 1.1 使用场景 在企业应用中成熟的业务通常数据量都比较大单台MySQL在安全性、高可用性和高并发方面的无法满足实际的需求 配置多台主从数据库服务器以实现读写分离 1.2 MySQL的复制类型 基于语句的复制STATEMENT,MySQL默认类型 在服务器上执行sql语句在从服务器上执行同样的语句mysql默认采用基于语句的复制执行效率高。 基于行的复制ROW 把改变的内容复制过去而不是把命令在从服务器上执行一遍。 混合类型的复制MIXED 默认采用基于语句的复制一旦发现基于语句无法精确复制时就会采用基于行的复制。 1.3 主从复制的作用 读写分离我们可以通过主从复制的方式来同步数据然后通过读写分离提高数据库并发处理能力。数据备份通过主从复制将主库上的数据复制到了从库上相当于是一种热备份机制也就是在主库正常运行的情况下进行的备份不会影响到服务具有高可用性数据备份实际上是一种冗余的机制通过这种冗余的方式可以换取数据库的高可用性也就是当服务器出现故障或宕机的情况下可以切换到从服务器上保证服务器的正常运行。 1.4 主从复制的工作过程 Master服务器更新数据并写入二进制日志Slave 开启IO线程向Master请求二进制日志事件/记录Master为每个IO线程开启dump线程向Slave发送二进制日志事件Slave保存二进制日志事件到中继日志Slave开启SQL线程读取中继日志中的二进制事件并解析成sql语句进行重发/逐一执行 注 中继日志通常会位于 OS 缓存中所以中继日志的开销很小。 复制过程有一个很重要的限制即复制在 Slave上是串行化的也就是说 Master上的并行更新操作不能在 Slave上并行操作。1.5 实现MySQL主从复制 1.5.1 前置准备 #主服务器 192.168.67.100 systemctl disable --now firewalld setenforce 0 #关闭防火墙和selinux策略#从服务器1 192.168.67.101 systemctl disable --now firewalld setenforce 0 #关闭防火墙和selinux策略#从服务器2 192.168.67.102 systemctl disable --now firewalld setenforce 0 #关闭防火墙和selinux策略#所有服务器默认已经编译安装mysql服务1.5.2 主服务器mysql配置 ntpdate ntp.aliyun.com #与阿里云进行时间同步vim /etc/my.cnf #编辑mysql配置文件#在[mysqld]项添加 server-id1 log-binmysql-bin #添加主服务器开启二进制日志 binlog_formatmixed#选配项 expire_logs_days7 #设置二进制日志文件过期时间默认值为0表示logs不过期 max_binlog_size500M #设置二进制日志限制大小如果超出给定值日志就会发生滚动默认值是1GB skip_slave_start1 #阻止从库崩溃后自动启动复制崩溃后再自动复制可能会导致数据不一致的#如果对安全性有需求 #双1设置数据写入最安全 innodb_flush_logs_at_trx_commit1 #redo log事务日志的刷盘策略每次事务提交时MySQL都会把事务日志缓存区的数据写入日志文件中并且刷新到磁盘中该模式为系统默认 sync_binlog1 #在进行每1次事务提交写入二进制日志以后Mysql将执行一次fsync的磁盘同步指令将缓冲区数据刷新到磁盘#添加完后 systemctl restart mysqld #重启服务#前往/usr/local/mysql/data/目录下查看二进制文件是否创建成功 cd /usr/local/mysql/data ls#进入数据库服务器 grant replication slave on *.* to aaa-slave192.168.67.% identified by 12323; #授权做主从复制指定所有库和所有表指定网段192.168.67使用aaa-slave用户并设定密码 flush privileges; #刷新权限 show master status; #查看主服务器二进制文件与位置点偏移量1.5.3 从服务器1 mysql配置 yum install ntp ntpdate -yservice ntpd start #开启服务 /usr/sbin/ntpdate 192.168.67.100 #与主服务器进行时间同步#设置计划任务 crontab -e */30 * * * * /usr/sbin/ntpdate 192.168.67.100 #每半小时与主服务器进行一次时间同步vim /etc/my.cnf #编辑配置文件server-id 2 #修改注意id与Master的不同两个Slave的id也要不同 relay-logrelay-log-bin #开启中继日志从主服务器上同步日志文件记录到本地 relay-log-indexrelay-log-bin.index #定义中继日志文件的位置和名称一般和relay-log在同一目录#选配项 innodb_buffer_pool_size2048M #用于缓存数据和索引的内存大小让更多数据读写内存中完成减少磁盘操作可设置为服务器总可用内存的 70-80% sync_binlog0 #MySQL不做任何强制性的磁盘刷新指令而是依赖操作系统来刷新数据到磁盘 innodb_flush_log_at_trx_commit2 #每次事务log buffer会写入log file但一秒一次刷新到磁盘 log-slave-updates0 #slave 从 master 复制的数据会写入二进制日志文件里从库做为其他从库的主库时设置为 1 relay_log_recovery1 #当 slave 从库宕机后假如 relay-log 损坏了导致一部分中继日志没有处理则自动放弃所有未执行的 relay-log 并且重新从 master 上获取日志这样就保证了 relay-log 的完整性。默认情况下该功能是关闭的将 relay_log_recovery 的值设置为 1 时 可在 slave 从库上开启该功能建议开启。systemctl restart mysqld #重启服务#登录mysql CHANGE master to master_host192.168.67.100,master_useraaa-slave,master_password123123,master_log_filemysql-bin.000002,master_log_pos777; #指定master主机地址、端口号、用户名、密码、日志文件、位置点偏移量start slave; #启动同步如有报错执行 reset slave; show slave status\G #查看 Slave 状态 //确保 IO 和 SQL 线程都是 Yes代表同步正常。1.5.4 从服务器2 mysql配置 yum install ntp ntpdate -yservice ntpd start #开启服务 /usr/sbin/ntpdate 192.168.67.100 #与主服务器进行时间同步#设置计划任务 crontab -e */30 * * * * /usr/sbin/ntpdate 192.168.67.100 #每半小时与主服务器进行一次时间同步vi /etc/my.cnf #编辑配置文件#添加 server-id 3 relay-logrelay-log-bin relay-log-indexrelay-log-bin.index systemctl restart mysqld #重启服务#登录mysql CHANGE master to master_host192.168.67.100,master_useraaa-slave,master_password123123,master_log_filemysql-bin.000002,master_log_pos777; #指定master主机地址、端口号、用户名、密码、日志文件、位置点偏移量start slave; #启动同步如有报错执行 reset slave; show slave status\G #查看 Slave 状态 //确保 IO 和 SQL 线程都是 Yes代表同步正常。#一般 Slave_IO_Running: No 的可能性 1、网络不通 2、my.cnf配置有问题 3、密码、file文件名、pos偏移量不对 4、防火墙没有关闭1.6 MySQL主从复制延时问题的原因和解决办法 1.6.1 故障现象 MySQL主从复制延时问题的故障现象通常表现为主库上的数据变更在从库上出现延迟。 这可能导致从库上的数据与主库不同步并可能对应用程序或业务产生一些问题。 一些常见的故障现象包括 从库数据延迟主库上的数据变更在从库上出现延迟通常可以通过查看从库的 Seconds_Behind_Master 参数来确定延迟的时间。 延迟逐渐增加从库上的延迟可能会逐渐增加从几秒钟到几分钟甚至更长。 复制停止复制进程可能会在某些情况下停止导致复制完全中断。 数据丢失如果出现严重的复制延迟或复制停止可能会导致从库上的数据丢失。在复制延迟问题得到解决之前从库上的数据可能无法与主库保持同步。 1.6.2 原因 master服务器高并发形成大量事务网络延迟主从硬件设备导致cpu主频、内存io、硬盘io是同步复制、而不是异步复制 1.6.3 解决方案 从库优化Mysql参数比如增大innodb_buffer_pool_size让更多操作在Mysql内存中完成减少磁盘操作。从库使用高性能主机包括cpu强悍、内存加大。避免使用虚拟云主机使用物理主机这样提升了i/o方面性。从库使用SSD磁盘网络优化避免跨机房实现同步。 1.5.5 测试 #前往主服务器create database scj; #创建新库create table scj.scj1 (id int, name varchar(10), age int, sex char(1)); #创建新表#添加数据 insert into scj.scj1 values (1, 张三, 20, 男); insert into scj.scj1 values (2, 李四, 22, 男); insert into scj.scj1 values (3, 赵四, 21, 男); insert into scj.scj1 values (4, 尼古拉斯, 24, 男); #前往从服务器查看#从服务器1#从服务器21.6 主从复制的3种同步模式 1.6.1 异步复制Asynchronous replication MySQL默认的复制即是异步的主库在执行完客户端提交的事务后会立即将结果返给客户端并不关心从库是否已经接收并处理 这样就会有一个问题主如果crash掉了此时主上已经提交的事务可能并没有传到从上如果此时强行将从提升为主可能导致新主上的数据不完整。 1.6.2 全同步复制Fully synchronous replication 指当主库执行完一个事务所有的从库都执行了该事务才返回给客户端。 因为需要等待所有从库执行完该事务才能返回所以全同步复制的性能必然会收到严重的影响。 1.6.3 半同步复制Semisynchronous replication 介于异步复制和全同步复制之间主库在执行完客户端提交的事务后不是立刻返回给客户端而是等待至少一个从库接收到并写到relay log中才返回给客户端。 相对于异步复制半同步复制提高了数据的安全性同时它也造成了一定程度的延迟这个延迟最少是一个TCP/IP往返的时间。 所以半同步复制最好在低延时的网络中使用。 1.7 半同步复制 1.7.1 前置准备 主192.168.67.100 从192.168.67.1011.7.2 配置主服务器 vim /etc/my.cnf #编辑配置文件 #在 [mysqld] 区域添加下面内容plugin-loadrpl_semi_sync_mastersemisync_master.so #加载mysql半同步复制的插件 rpl_semi_sync_master_enabledON #或者设置为1即开启半同步复制功能 rpl-semi-sync-master-timeout1000 #超时时间为1000ms即1ssystemctl restart mysqld #重启服务1.7.3 配置从服务器 vim /etc/my.cnf plugin-loadrpl_semi_sync_slavesemisync_slave.so rpl_semi_sync_slave_enabledONsystemctl restart mysqld #重启服务1.7.4 测试 #前往主服务器 #进入mysqlshow status like Rpl_semi_sync_master_status; #查看是否开启半同步复制 show variables like rpl_semi_sync_master_timeout; #查看超时时间#前往从服务器开启mysql show status like Rpl_semi_sync_slave_status;STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; #重启io进程#在主库查询半同步状态 show status like %Rpl_semi%; #参数说明 Rpl_semi_sync_master_clients #半同步复制客户端的个数 Rpl_semi_sync_master_net_avg_wait_time #平均等待时间默认毫秒 Rpl_semi_sync_master_net_wait_time #总共等待时间 Rpl_semi_sync_master_net_waits #等待次数 Rpl_semi_sync_master_no_times #关闭半同步复制的次数 Rpl_semi_sync_master_no_tx #表示没有成功接收slave提交的次数 Rpl_semi_sync_master_status #表示当前是异步模式还是半同步模式on为半同步 Rpl_semi_sync_master_timefunc_failures #调用时间函数失败的次数 Rpl_semi_sync_master_tx_avg_wait_time #事物的平均传输时间 Rpl_semi_sync_master_tx_wait_time #事物的总共传输时间 Rpl_semi_sync_master_tx_waits #事物等待次数 Rpl_semi_sync_master_wait_pos_backtraverse #可以理解为后来的先到了而先来的还没有到的次数 Rpl_semi_sync_master_wait_sessions #当前有多少个session因为slave的回复而造成等待 Rpl_semi_sync_master_yes_tx #成功接受到slave事物回复的次数1.7.5 什么情况下半同步和异步会互相转换 当半同步复制发生超时由rpl_semi_sync_master_timeout参数控制默认为10000ms即10s会暂时关闭半同步复制转而使用异步复制也就是会自动降为异步工作。 当 master dump 线程发送完一个事务的所有事件之后如果在rpl_semi_sync_master_timeout 内收到了从库的响应 则主从又重新恢复为半同步复制 注 1) 在一主多从的架构中如果要开启半同步复制并不要求所有的从都是半同步复制。 2) MySQL 5.7极大的提升了半同步复制的性能。 5.6 版本的半同步复制dump thread 承担了两份不同且又十分频繁的任务传送binlog 给 slave 还需要等待 slave 反馈信息而且这两个任务是串行的dump thread 必须等待 slave 返回之后才会传送下一个 events 事务。dump thread 已然成为整个半同步提高性能的瓶颈。在高并发业务场景下这样的机制会影响数据库整体的系统吞吐量(TPS)。 5.7 版本的半同步复制中独立出一个 ack collector thread 专门用于接收 slave 的反馈信息。这样 master 上有两个线程独立工作可以同时发送 binlog 到 slave 和接收 slave 的反馈。2. MySQL读写分离 2.1 读写分离原理 是让主数据库处理事务性增、改、删操作INSERT、UPDATE、DELETE而从数据库处理SELECT查询操作。 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2.2 读写分离的使用场景 数据库不一定要读写分离如果程序使用数据库较多时而更新少查询多的情况下会考虑使用。 利用数据库主从同步再通过读写分离可以分担数据库压力提高性能。 2.3 主从复制和读写分离的关系 在实际的生产环境中对数据库的读和写都在同一个数据库服务器中是不能满足实际需求的。 无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。 因此通过主从复制的方式来同步数据再通过读写分离来提升数据库的并发负载能力。有点类似于rsync但是不同的是rsync是对磁盘文件做备份而mysql主从复制是对数据库中的数据、语句做备份。 2.4 常见的读写分离类型 2.4.1 基于程序代码内部实现 在代码中根据 select、insert 进行路由分类这类方法也是目前生产环境应用最广泛的。 优点是性能较好因为在程序代码中实现不需要增加额外的设备为硬件开支 缺点是需要开发人员来实现运维人员无从下手。 但是并不是所有的应用都适合在程序代码中实现读写分离像一些大型复杂的Java应用如果在程序代码中实现读写分离对代码改动就较大。 2.4.2 基于中间代理层实现 代理一般位于客户端和服务器之间代理服务器接到客户端请求后通过判断后转发到后端数据库有以下代表性程序。 MySQL-ProxyMySQL-Proxy 为 MySQL 开源项目通过其自带的 lua 脚本进行SQL 判断。Atlas是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。Amoeba由陈思儒开发作者曾就职于阿里巴巴。该程序由Java语言进行开发阿里巴巴将其用于生产环境。但是它不支持事务和存储过程。Mycat是一款流行的基于Java语言编写的数据库中间件是一个实现了MySql协议的服务器其核心功能是分库分表。配合数据库的主从模式还可以实现读写分离。 2.5 实现读写分离 2.5.1 前置准备 #主服务器 192.168.67.100#从服务器1 192.168.67.101 #从服务器1 192.168.67.102#amobeba 192.168.67.103#客户端 192.168.67.1042.5.2 配置amoeba systemctl disable --now firewalld setenforce 0vim /etc/selinux/configcd /opt#所需安装包 amoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bin chmod x jdk-6u14-linux-x64.bin #给予可执行权限./jdk-6u14-linux-x64.bin #直接执行#ctrl C选择yesmv jdk1.6.0_14/ /usr/local/jdk1.6 #移动jdk主目录到/usr/local下#添加环境变量 cd /etc/profile.d vi java.shexport JAVA_HOME/usr/local/jdk1.6 #java家目录 export CLASSPATH.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib #编译路径 export PATH$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #设置java环境变量 export AMOEBA_HOME/usr/local/amoeba #设置amobeba家目录 export PATH$PATH:$AMOEBA_HOME/bin #设置amobeba环境变量source /etc/profile.d/java.sh java -version #查看当前脚本mkdir amoeba #创建amobeba工作目录tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ #解压缩软件包cd /usr/local/amoeba/bin #前往启动文件处./amoeba #以当前目录启动#在主从服务器同时操作grant all on *.* to amoeba192.168.67.% identified by 123123; #在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问#前往amoeba cd /usr/local/amoeba/conf #前往配置文件处 cp amoeba.xml amoeba.xml.bak #备份xml文件vim amoeba.xml #修改amoeba配置文件cp dbServers.xml dbServers.xml.bak #拷贝数据库配置文件vi dbServers.xml #修改数据库配置文件/usr/local/amoeba/bin/amoeba start #启动Amoeba软件在后台执行ss -natp |grep java #查看是否启动成功2.5.3 测试读写分离 #该步骤沿用主从复制配置#前往客户端 yum install -y mariadb-server mariadb #安装一个简单配置的mysql数据库 systemctl start mariadb.service #开启服务mysql -uamoeba -padmin123 -h 192.168.67.103 -P8066 #登录原先设置的账户show databases;select * from scj.scj1; #查看库和表数据内容是否同步#在表中添加数据查看同步情况 insert into scj.scj1 values (5, sakula酱, 20, 女);#前往主服务器、从服务器1、从服务器2查看 #进入数据库 select * from scj.scj1; #查看表数据#同步没有问题 #证明连接amoeba可以在三台服务器中进行写入操作#需要证明连接amoeba执行写入操作是写入哪一台服务器的#前往从服务器1-2关掉同步 stop slave;#现在前往客户端添加数据 insert into scj.scj1 values (6, 日川冈板, 28, 男);#验证能否实现读的负载均衡 #在从服务器1添加数据 insert into scj.scj1 values (7, 强者, 23, 男);#在从服务器2添加数据 insert into scj.scj1 values (8, 弱者, 20, 男);#前往客户端查看 #进入数据库 select * from scj.scj1
http://www.sczhlp.com/news/203580/

相关文章:

  • it外包抽成韶关seo
  • 《程序员修炼之道》 阅读笔记二
  • CF1977 Codeforces Round 948 (Div. 2) 游记(VP)
  • 是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk
  • 史馆
  • 社交营销可以用于网站制作行业吗如何对seo进行优化
  • 京东物流网站建设特点嘉兴 网站 制作
  • 在别人网站挂黑链seo网站建设规划
  • 做电商在什么网站吗个性化企业网站制作公司
  • 中国建筑建设通的网站海尔网站推广方法
  • 青岛做网络直播的网站wordpress文章中文版
  • 熟练做网站需要了解什么招商网站平网站平台
  • 贾汪微网站开发动态ip怎么做网站
  • 深圳建设局网站打不开试客网站程序源码
  • dede手机医院网站模板网站建设做网站好吗
  • 做网站税率网站制作公司交接网站
  • 网站运营有什么用小鱼儿网站做啥用的
  • 呢图网站场建设封面软件工程师发展前景
  • 7000元买一个域名做网站营销型网站建设系统
  • 网站建设从入门到精通 网盘做网站和服务器的大小有关吗
  • 做网站维护累吗填手机号码的广告
  • 怎么做网站赚钱放广告17173网络游戏
  • 福州企业建站程序镇江网络科技有限公司
  • 网络推广策划案格式模板和范文宁波seo智能优化
  • 网站 网络营销价值网站服务器设置
  • wordpress前后台空白搜狗整站优化
  • 网站备案审核北京造价员变更在哪个网站做
  • 太原市城乡建设局网站网站项目建设建设期
  • 2025 年焊把线厂家最新推荐榜:国标欧标铜芯软焊把线优质企业排行,优质品牌助力选购欧标/铜芯/软/耐高温焊把线厂家推荐
  • 基于MATLAB的倒立摆控制实现方案