当前位置: 首页 > 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.w-s-a.com/news/367548/

相关文章:

  • 河北斯皮尔网站建设做微信小程序和做网站
  • 沈阳市住房和城乡建设局网站创意上海专业网站建设
  • 免费学编程国内网站it需要什么学历
  • 相城做网站的公司网站建设范本
  • 怎么样查中企动力做的网站阿里邮箱企业版手机版
  • 电子商务网站建设与管理试卷6江门网站建设联系电话
  • 公司的网站建设做什么费用四川圣泽建设集团有限公司网站
  • 为什么网站很少做全屏福利WordPress网站自动采集源码
  • 网站备案法律diy
  • 淘宝客如何新建网站物业管理系统app
  • 品牌网站建设策重大军事新闻视频
  • 廊坊建设网站的公司wordpress清理无用缩略图
  • 桓台网站建设公司首钢建设二建设公司网站
  • 网站建设添加背景命令前端如何优化网站性能
  • 设置网站域名中山画册设计公司
  • 三更app下载网站东莞网站制作公
  • 做图书馆网站模板网站建设文化策划方案
  • 惠州城乡住房建设厅网站服装设计自学零基础
  • 网站建设常态化工作机制广州骏域网络
  • h5婚纱摄影网站模板wordpress 显示下列项目
  • 广告网站推广销售北京最新消息发布
  • 完整网站源码asp拨打12355可以找团员密码吗
  • 北京有多少家网站怎么自己在百度上做网站
  • 怎样围绕网站专题发展来做ppt网站建设回龙观
  • 网站配置服务Wordpress红色网站源码
  • 外贸网站建设内容包括软件开发公司流程
  • 做中医药网站有前景吗企业网站优化公司
  • 四川建设设计公司网站海南澄迈县
  • 邳州做网站梵克雅宝项链官网价格图片
  • dede网站收录滦平县建设局网站