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

企业多语言网站开源牌子网官网

企业多语言网站开源,牌子网官网,销售管理系统业务处理流程,云平台网站建设MySQL 主从复制和读写分离#xff1a; 主从复制#xff1a;主MySQL上的数据#xff0c;新增#xff0c;修改库#xff0c;表#xff0c;表里的数据#xff0c;都会同步到从MySQL上。 MySQL的主从复制的模式#xff1a;#xff08;面试题#xff09; 1#xff0c;异…MySQL 主从复制和读写分离 主从复制主MySQL上的数据新增修改库表表里的数据都会同步到从MySQL上。 MySQL的主从复制的模式面试题 1异步复制MySQL的默认复制就是异步复制最常用。只要执行完之后客户端提交事务主MySQL会立即把结果返回给从服务器主服务器并不关心从服务器是否已经接受并且处理。 问题主一旦崩溃主MySQL的事务可能没有传到从MySQL这个时候强行的把从提升为主可能到新的主服务器数据不完整。很少见。 2全同步复制主库执行完成一个事务所有的从库都执行了该事务之后才会返回客户端。 因为需要等待所有从库全部执行完成性能必然下降。对数据一致性和数据完整性要求很好的场景。 3半同步复制介于异步和全同步复制之间。主库执行完一个客户端提交的事务之后至少等待一个从库接受并处理完成之后才会返回给客户端。半同步在一定程度上提高了数据的安全性。也会有一定延迟。 这个延迟一般是一个tcp/ip的时间从发送到接受的时间单位是毫秒ms 时间1ms: round-trip time RTT 架构主从复制和读写分离 mysql1 主 mysql2 从 mysql3 从 test1 读写分离的服务器 test2 客户端 实验 主从复制 主从服务器之间的时间也要同步 安装 ntp工具 yum -y install ntp 改ntp配置文件 数字越小时间的精确度越高设置fudge 8 时间层级是8 最高到15。 从本地获取时间源不从网络获取 从服务器执行同步命令 生成中会加一个定时任务 每30分钟同步一次 查看时间 改主配置文件 log-binmaster-bin #添加主服务器开启二进制日志 binlog_format MIXED log-slave-updatestrue #添加允许slave从master复制数据时可以写入到自己的二进制日志 进入服务器新建一个用户并授权 GRANT REPLICATION SLAVE ON . TO myslave192.168.176.% IDENTIFIED BY 123456; FLUSH PRIVILEGES; show master status; 靠位置点进行同步 修改从数据库配置文件 每个id不能一样 server-id 2 relay-logrelay-log-bin relay-log-indexslave-relay-bin.index relay_log_recovery 1 relay_log_recovery1 默认是01开启中继日志的复制。从服务器出现异常或者崩溃时从服务器会从主服务器的二进制 server-id 3 relay-logrelay-log-bin relay-log-indexslave-relay-bin.index relay_log_recovery 1 重启数据库 从服务器分别进入数据库 mysql -u root -p123456 和主进行同步 CHANGE master to master_host192.168.176.30,master_usermyslave,master_password123456,master_log_filemaster-bin.000001,master_log_pos604; 启动同步 start slave; 查看 show slave status\G; Slave_IO_Running: Yes #负责与主机的io通信 Slave_SQL_Running: Yes #负责自己的slave mysql进程 在主数据库创建库表 从库也会跟着改变 面试题如果slave io running no 1,网络问题 2my.cnf 配置文件写错了 3 4防火墙和安全机制。 主从复制是单向的只能从主复制到从服务器。 面试题主从复制的延迟问题 1网络延迟 2主从硬件设备CPU主频内存IO硬件IO。 3同步复制而不是异步复制。 解决方案 1硬件方面主库一般来说不需要动的太多从库硬件配置要更好。提升随机写的性能。硬盘可以换成固态的升级cpu的核数扩容内存。尽量使用物理机不要用云服务器。4核8G硬盘。 2网络层面主从服务器配置在一个局域网内尽量避免跨网段和跨机房。 3架构方面读写分离把写入控制在主库从库负责读降低从库的压力 4配置方面 mysql配置。从配置文件的角度实现性能最大化 追求安全性的配置 innodb_flush_log_at_trx_commit1 每次事务提交时都会刷新事务日志。已确保持久性最高级别的数据安全性但是会响应性能默认就是1 0就是事务提交时不会立刻刷新而是每秒刷新一次。可以提高性能但是发生故障会导致数据丢失。 2 事务提交时事务日志不会写入硬盘而是保持在系统缓存不会进行刷新。一定的安全性和性能。内存要求比较高。 sync_binlog1 1也是默认值每次提交事务之后直接把二进制日志刷新以确保日志的持久性。占用比较高的性能。但是安全性高。 0二进制日志写入到缓存也不会刷新日志。故障发生也会丢失数据内存的要求也提高了 3每3个事务执行一次刷新磁盘。提高性能但是一旦崩溃数据会大量丢失。 追求性能化 sync_binlog0 innodb_flush_log_at_trx_commit2 logs-slave-updates0 从库的更新不会写入二进制日志不建议 innodb_buffer_pool_size 300M 500G innodb存储引擎的缓冲池大小设置的s值越高可以提高innodb的性能。 更多的数据和索引都可以缓存在内存中。减少磁盘的访问次数。对系统内存要求比较高。 主从复制的一个工作过程 1主节点是数据记录发生变化都会记录在二进制日志。 2slave节点会一定时间内对主库的二进制文件进行探测看其是否发生变化如果有变化从库会开启一个I/O线程请求主库的二进制事件。 3主库会给每一个I/O的线程启动一个dump。用于发送二进制事件给从库从库通过I/O线程获取更新slave_sql负责将更新写入到从库本地。实现主从一致。 主从复制的问题 1只能在主库上发生变化任何同步到从。 2复制过程是串行化过程在从库上复制是串行的主库的并行更新不能在库上并行操作。 3主从复制的设计目的就是为在主库上写在从库上查看。读写分离实现高可用 mysql主从复制 若主从版本不一致从的版本一定要高于主保证可以向下兼容 因为若主的版本更新低版本的从无法兼容的 读写分离 要实现读写分离必须要实现主从复制。 读写分离所有的写入操作在主库从库只负责读。select。如果有更新是从主库复制到从库。 为什么要有读写分离 1数据库在写入数据时比较耗时mysql写一万条数据 3分钟 2数据库在读的时候速度很快读一万5秒 读写一旦分离数据库的写入和读取是分开的哪怕写入的数据量比较大但是不影响查询的效率。 在什么场景下需要读写分离 只有在某些程序在使用数据库过程中更新少但是查询比较多这种情况可用考虑读写分离。 读和查的需求差不多也可以考虑读写分离。 生产库一般都会做读写分离 测试库一般不管。 在工作中数据库的读写不会在同一个库中完成。即不安全也不能满足高可用也不能实现高并发。工作中读会做读写分离。 mysql读写分离的原理 1根据脚本实现。在代码中实现路由分类。select insert 进行路由分类。这种方式是最多的。 性能好在代码中可用实现不需要额外的硬件设备 缺点开发实现的跟我们无关。如果大型的复制的应用设计改动的代码非常多。 2基于中间代理层实现 mysql-proxy自带的开源项目基于自带的lua脚本。这些lua脚本不是现成的要自己写不熟悉他的内置变量写不出来的 atlas 360内部做自己代理工具。每天的读写请求承载量可用到几十亿条。支持事务支持存储过程。 3Amoeba 陈思儒之前在阿里就职。是由java开发的一个开源团建。不支持事务也不支持存储过程。但是Amoeba还是用的最多的功能比较强大的软件。 实验 mysql1 主 mysql2 从 mysql3 从 test1 读写分离的服务器 Amooeba test2 客户端 修改java环境 查看java环境java -version 基于 jdk1.5开发的官方推荐的 更换java环境 cd /opt/ cp jdk-6u14-linux-x64.bin /usr/local/ cd /usr/local/ chmod x jdk-6u14-linux-x64.bin ./jdk-6u14-linux-x64.bin //按yes按enter mv jdk1.6.0_14/ /usr/local/jdk1.6 vim /etc/profile 在最后一行添加 export JAVA_HOME/usr/local/jdk1.6 export CLASSPATH$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin export AMOEBA_HOME/usr/local/amoeba export PATH$PATH:$AMOEBA_HOME/bin 使文件立即生效source /etc/profile java -version 安装amoeba 在opt目录下创建amoeba目录 mkdir /usr/local/amoeba 解压 tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ 赋权 chmod -R 755 /usr/local/amoeba/ 执行 /usr/local/amoeba/bin/amoeba 显示 amoeba start|stop说明安装成功 在三台数据库给用户amoeba赋权 grant all on *.* to amoeba192.168.176.% identified by 123456; flush privileges; 在amoeba服务器修改配置文件 cd /usr/local/amoeba/conf/ 配置用户信息 配置数据库信息 备份 cp amoeba.xml amoeba.xml.bak 改配用户信息 vim amoeba.xml --30行-- amoeba --32行-- 123456 --115行-- master --117-去掉注释- master slaves 修改数据库信息 cp dbServers.xml dbServers.xml.bak vim dbServers.xml --23行--注释掉 作用默认进入test库 以防mysql中没有test库时会报错 --26--修改 amoeba --28-30--去掉注释 123456 --45--修改设置主服务器的名Master --48--修改设置主服务器的地址 192.168.233.21 --52--修改设置从服务器的名slave1 --55--修改设置从服务器1的地址 192.168.233.22 --58--复制上面6行粘贴设置从服务器2的名slave2和地址 192.168.233.23 --65行--修改 --71行--修改 slave1,slave2 启动Amoeba软件 /usr/local/amoeba/bin/amoeba start 查看8066端口是否开启 netstat -anpt | grep java 测试读写分离 客户端安装 mariadb yum install -y mariadb-server mariadb systemctl start mariadb.service 修改三台mysql生成日志文件 最后一行添加 general_logON general_log_file/usr/local/mysql/data/mysql_general.log 三台库打开日志 tail -f /usr/local/mysql/data/mysql_general.log 在客户端对表进行写入时三个日志都会有显示 查看表只有一台从库有记录而且会轮询记录
http://www.zqtcl.cn/news/378312/

相关文章:

  • 中小微企业服务平台seo怎么提升关键词的排名
  • 优秀企业网站欣赏店名设计wordpress文章列表添加字段
  • 有哪些做软件的网站服务器安装WordPress没有权限访问
  • app开发和网站开发公司网站怎么做百度竞价
  • 医疗机构网站备案网站建设面试常见问题
  • 建设网银登录网站国内欣赏电商设计的网站
  • 自适应网站优点缺点网站上的在线答题是怎么做的
  • 查询单位信息的网站免费学编程的网站有哪些
  • 建设企业网站进去无法显示wordpress 在线课程
  • 博客型网站建设广州网站建设如何做
  • 网站导航栏全屏怎么做万年网站建设
  • flash源码网站百度关键词价格
  • 个人网站如何发布怎么做记步数的程序到网站
  • 石家庄网站制作公司排名前十可视化网站开发工具有哪些
  • 网站个人博客怎么做杭州网站改版公司电话
  • 烟台北京网站建设公司中国建筑信息资讯网
  • 硬盘做网站空间高端网站设计杭州
  • 南昌网站建设方案网站建设需求分析班级
  • 汉阳做网站关键词站长工具
  • 做海报图片的网站营销软件
  • 能先做网站再绑定域名吗石家庄公司建设网站
  • 设计网站的收费图是怎么做的公司网站简介怎么做
  • 医院网站案例结合七牛云做视频网站
  • wordpress数据库缓存插件aso优化吧
  • 网站二维码代码国贸汽车网站建设
  • 医疗网站建设多少钱信息查询类网站是怎么做的
  • 网站开发辅助工具搜索引擎推广实训
  • 如何用手机制作网站比价网站
  • 商城类网站备案四川全网推网络推广
  • 好设计购物网站wordpress 公网访问不了