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

远程教育网站建设方案网站开发做美工

远程教育网站建设方案,网站开发做美工,公司做个网站多少钱,网站的企业风采怎么做一 什么是读写分离MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询#xff0c;而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。当然#xff0c;主服务器也可以提供…一 什么是读写分离MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。当然主服务器也可以提供查询服务。使用读写分离最大的作用无非是缓解服务器压力。可以看下这张图二 读写分离的好处1.增加冗余2.增加了机器的处理能力3.对于读操作为主的应用使用读写分离是最好的场景因为可以确保写的服务器压力更小而读又可以接受点时间上的延迟。三 读写分离提高性能之原因1.物理服务器增加负荷增加2.主从只负责各自的写和读极大程度的缓解X锁和S锁争用3.从库可配置myisam引擎提升查询性能以及节约系统开销4.从库同步主库的数据和主库直接写还是有区别的通过主库发送来的binlog恢复数据但是最重要区别在于主库向从库发送binlog是异步的从库恢复数据也是异步的5.读写分离适用与读远大于写的场景如果只有一台服务器当select很多时update和delete会被这些select访问中的数据堵塞等待select结束并发性能不高。对于写和读比例相近的应用应该部署双主相互复制6.可以在从库启动是增加一些参数来提高其读的性能例如--skip-innodb、--skip-bdb、--low-priority-updates以及--delay-key-writeALL。当然这些设置也是需要根据具体业务需求来定得不一定能用上7.分摊读取。假如我们有1主3从不考虑上述1中提到的从库单方面设置假设现在1分钟内有10条写入150条读取。那么1主3从相当于共计40条写入而读取总数没变因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此虽然写入没变但是读取大大分摊了提高了系统性能。另外当读取被分摊后又间接提高了写入的性能。所以总体性能提高了说白了就是拿机器和带宽换性能。MySQL官方文档中有相关演算公式官方文档 见6.9FAQ之“MySQL复制能够何时和多大程度提高系统性能”8.MySQL复制另外一大功能是增加冗余提高可用性当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务因此不能光看性能也就是说1主1从也是可以的。四 读写分离示意图五 读写分离模拟实验环境简介serv01代理服务器 192.168.1.11 serv01.host.comserv08主服务器(主要写数据可读可写) 192.168.1.18 serv08.host.comserv09从服务器(主要读数据) 192.168.1.19 serv09.host.com操作系统版本RHEL Server6.1 64位系统使用到的软件包版本mysql-5.5.29-linux2.6-x86_64.tar.gzmysql-proxy-0.8.2-linux-glibc2.3-x86-64bit.tar.gz第一步搭建MySQL服务器清空日志。注意代理服务器中不需要装MySQL第二步拷贝mysql-proxy-0.8.2-linux-glibc2.3-x86-64bit.tar.gz文件解压文件[rootlarrywen 1005]# scp mysql-proxy-0.8.2-linux-glibc2.3-x86-64bit.tar.gz 192.168.1.11:/opt[rootserv01 opt]# tar -xvf mysql-proxy-0.8.2-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local/[rootserv01 opt]# cd /usr/local/[rootserv01 local]# mv mysql-proxy-0.8.2-linux-glibc2.3-x86-64bit/ mysql-proxy[rootserv01 local]# ll mysql-proxy/total 24drwxr-xr-x. 2 7157 wheel 4096 Aug 17 2011 bindrwxr-xr-x. 2 7157 wheel 4096 Aug 17 2011 includedrwxr-xr-x. 4 7157 wheel 4096 Aug 17 2011 libdrwxr-xr-x. 2 7157 wheel 4096 Aug 17 2011 libexecdrwxr-xr-x. 3 7157 wheel 4096 Aug 17 2011 licensesdrwxr-xr-x. 3 7157 wheel 4096 Aug 17 2011 share--可以查看帮助[rootserv01 bin]# ./mysql-proxy --help-all第三步serv08主服务器创建用户serv09从服务器创建用户注意用户名和密码一致serv08mysql grant all on *.* to larry192.168.1.% identified by larry;Query OK, 0 rows affected (0.00 sec)serv09mysql grant all on *.* to larry192.168.1.% identified by larry;Query OK, 0 rows affected (0.00 sec)第四步serv09从服务器更改设置开启slave查看slave状态。创建测试数据库插入测试数据serv09mysql change master to master_host192.168.1.18, master_userlarry, master_passwordlarry, master_port3306, master_log_filemysql-bin.000001, master_log_pos107;Query OK, 0 rows affected (0.01 sec)mysql start slave;Query OK, 0 rows affected (0.00 sec)mysql show slave status \G;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.18Master_User: larryMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 107Relay_Log_File: serv09-relay-bin.000002Relay_Log_Pos: 253Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 107Relay_Log_Space: 410Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 21 row in set (0.00 sec)ERROR:No query specifiedmysql select user,password,host from mysql.user;------------------------------------------------------------------| user | password | host |------------------------------------------------------------------| root | | localhost || root | | serv08.host.com || root | | 127.0.0.1 || root | | ::1 || | | localhost || | | serv08.host.com || rep | *0CDC8D34246E22649D647DB04E7CCCACAB4368B6 | 192.168.1.% |------------------------------------------------------------------7 rows in set (0.00 sec)mysql create database larrydb;Query OK, 1 row affected (0.00 sec)mysql use larrydb;Database changedmysql create table user(id int, name varchar(30));Query OK, 0 rows affected (0.01 sec)mysql insert into user values(1,larrywen);Query OK, 1 row affected (0.01 sec)mysql insert into user values(2,wentasy);Query OK, 1 row affected (0.00 sec)mysql select * from user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy |----------------2 rows in set (0.00 sec)serv09mysql select * from larrydb.user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy |----------------2 rows in set (0.00 sec)第五步为了查看现象serv09从服务器关闭slavemysql stop slave;Query OK, 0 rows affected (0.01 sec)第六步serv 01查看是否有MySQL用户修改rw-splitting.lua文件修改如下几个参数[rootserv01 mysql-proxy]# id mysqluid500(mysql) gid500(mysql) groups500(mysql)[rootserv01 mysql-proxy]# vim rw-splitting.lua[rootserv01 mysql-proxy]# cat rw-splitting.lua | grep -e min_idle_connections -e max_idle_connections -e is_debugmin_idle_connections 1,--最小空闲连接数为了测试这里设置为1max_idle_connections 1,--最大空闲连接数为了测试这里设置为1is_debug true--是否打开Debug调试为了查看调试信息这里设置为true第七步启动mysql-proxy[rootserv01 mysql-proxy]# /etc/init.d/mysql-proxy startStarting mysql-proxy:--先确定是否可以连接[rootserv01 ~]# mysql -ularry -plarry -h 192.168.1.18Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 6Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or \h for help. Type \c to clear the current input statement.mysql exitBye[rootserv01 ~]# mysql -ularry -plarry -h 192.168.1.19Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 8Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or \h for help. Type \c to clear the current input statement.mysql exitBye第八步查看现象[rootserv01 ~]# /etc/init.d/mysql-proxy startStarting mysql-proxy:[rootserv01 ~]# mysql -ularry -plarry -h 192.168.1.11[connect_server] 192.168.1.11:51054[1].connected_clients 0[1].pool.cur_idle 0[1].pool.max_idle 1[1].pool.min_idle 1[1].type 1[1].state 0[1] idle-conns below min-idleWelcome to the MySQL monitor. Commands end with ; or \g.[read_query] 192.168.1.11:51054current backend 0client default db client username larryquery select version_comment limit 1sending to backend : 192.168.1.19:3306is_slave : falseserver default db:server username : larryin_trans : falsein_calc_found : falseCOM_QUERY : trueYour MySQL connection id is 10Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or \h for help. Type \c to clear the current input statement.mysqlmysql use larrydb;[read_query] 192.168.1.11:51054current backend 0client default db client username larryquery SELECT DATABASE()sending to backend : 192.168.1.19:3306is_slave : falseserver default db:server username : larryin_trans : falsein_calc_found : falseCOM_QUERY : true[read_query] 192.168.1.11:51054current backend 0client default db client username larrysending to backend : 192.168.1.19:3306is_slave : falseserver default db:server username : larryin_trans : falsein_calc_found : falseCOM_QUERY : falseDatabase changedmysql select * from user;[read_query] 192.168.1.11:51054current backend 0client default db larrydbclient username larryquery select * from usersending to backend : 192.168.1.19:3306is_slave : falseserver default db: larrydbserver username : larryin_trans : falsein_calc_found : falseCOM_QUERY : true----------------| id | name |----------------| 1 | larrywen || 2 | wentasy |----------------2 rows in set (0.00 sec)mysql insert into user values(3,jsutdb);[read_query] 192.168.1.11:51644current backend 0client default db larrydbclient username larryquery insert into user values(3,jsutdb)sending to backend : 192.168.1.19:3306is_slave : falseserver default db: larrydbserver username : larryin_trans : falsein_calc_found : falseCOM_QUERY : trueQuery OK, 1 row affected (0.00 sec)serv08mysql select * from user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy |----------------2 rows in set (0.00 sec)serv09mysql select * from larrydb.user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy || 3 | jsutdb |----------------3 rows in set (0.00 sec)第九步以上的测试虽有效果但不是预期。排查原因重新配置。发现proxy-read-only-backend-addresses和proxy-backend-addresses参数配置出错proxy-read-only-backend-addresses应该配置成从服务器的IP地址proxy-backend-addresses应该配置成主服务器的IP地址。[rootserv01 ~]# vim /etc/init.d/mysql-proxy[rootserv01 ~]# cat /etc/init.d/mysql-proxy#!/bin/sh## mysql-proxy This script starts and stops the mysql-proxy daemon## chkconfig: - 78 30# processname: mysql-proxy# description: mysql-proxy is a proxy daemon to mysql# Source function library.. /etc/rc.d/init.d/functions#PROXY_PATH/usr/local/binPROXY_PATH/usr/local/mysql-proxy/binprogmysql-proxy# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ ${NETWORKING} no ] exit 0# Set default mysql-proxy configuration.#PROXY_OPTIONS--daemonPROXY_OPTIONS--proxy-read-only-backend-addresses192.168.1.19:3306 --proxy-backend-addresses192.168.1.18:3306 --proxy-lua-script/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua#PROXY_PID/usr/local/mysql-proxy/run/mysql-proxy.pidPROXY_PID/var/run/mysql-proxy.pid# Source mysql-proxy configuration.if [ -f /etc/sysconfig/mysql-proxy ]; then. /etc/sysconfig/mysql-proxyfiPATH$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH# By default its all goodRETVAL0# See how we were called.case $1 instart)# Start daemon.echo -n $Starting $prog: $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file$PROXY_PID --usermysql --log-leveldebug --log-file/var/log/mysql-proxy.log --proxy-address192.168.1.11:3306RETVAL$?echoif [ $RETVAL 0 ]; thentouch /var/lock/subsys/mysql-proxyfi;;stop)# Stop daemons.echo -n $Stopping $prog: killproc $progRETVAL$?echoif [ $RETVAL 0 ]; thenrm -f /var/lock/subsys/mysql-proxyrm -f $PROXY_PIDfi;;restart)$0 stopsleep 3$0 start;;condrestart)[ -e /var/lock/subsys/mysql-proxy ] $0 restart;;status)status mysql-proxyRETVAL$?;;*)echo Usage: $0 {start|stop|restart|status|condrestart}RETVAL1;;esacexit $RETVAL第十步测试。插入数据可以发现连接的是主服务器查询的时候也是主服务器。说明主服务器和从服务器均有读的的功能。[rootserv01 ~]# mysql -ularry -plarry -h 192.168.1.11[connect_server] 192.168.1.11:57891[1].connected_clients 0[1].pool.cur_idle 0[1].pool.max_idle 1[1].pool.min_idle 1[1].type 1[1].state 1[1] idle-conns below min-idle[read_query] 192.168.1.11:57891current backend 0client default db client username larryquery select version_comment limit 1sending to backend : 192.168.1.18:3306is_slave : falseserver default db:server username : larryin_trans : falsein_calc_found : falseCOM_QUERY : truemysql insert into user values(5,test);Query OK, 1 row affected (0.01 sec)[read_query] 192.168.1.11:57893current backend 0client default db larrydbclient username larryquery insert into user values(5,test)sending to backend : 192.168.1.18:3306is_slave : falseserver default db: larrydbserver username : larryin_trans : falsein_calc_found : falseCOM_QUERY : truemysql select * from user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy || 5 | test |----------------3 rows in set (0.00 sec)[read_query] 192.168.1.11:57893current backend 0client default db larrydbclient username larryquery select * from usersending to backend : 192.168.1.18:3306is_slave : falseserver default db: larrydbserver username : larryin_trans : falsein_calc_found : falseCOM_QUERY : trueserv08主服务器查看数据可以查询到说明主服务器可以写mysql select * from larrydb.user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy || 5 | test |----------------3 rows in set (0.00 sec)serv09从服务器查询数据发现不可查询到说明从服务器只读mysql mysql select * from larrydb.user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy || 3 | jsutdb || 4 | db |----------------4 rows in set (0.00 sec)第十一步开启slave。发现数据同步成功。mysql start slave;Query OK, 0 rows affected (0.00 sec)mysql select * from larrydb.user;----------------| id | name |----------------| 1 | larrywen || 2 | wentasy || 3 | jsutdb || 4 | db || 5 | test |----------------5 rows in set (0.00 sec)六 参考资料
http://www.pierceye.com/news/84175/

相关文章:

  • 网站建设的步骤过程视频学校网站建设工作简报
  • 专业设计网站排行榜做境外碎片化旅游的网站
  • 网站建设翻译谁提供seo网站推广软件
  • 网站都有什么类型公司门户网站建设
  • 哪有做网站公司巢湖网 网站
  • php网站开发是做什么的微信小程序注册后怎么登录
  • 网站生成静态页面工具家庭千兆网络组建方案
  • 做期货资讯网站网站登录界面源码
  • 备案个人网站名称推荐wordpress 样式
  • 桂林网站优化公司施工企业自营率怎么算
  • 常用的网站制作开发小程序的软件有哪些
  • 微信公众号如何做网站化工企业建网站
  • 企业门户网站实现百度网盘链接
  • 南通公司网站建设品牌的品牌推广设计
  • 泉州百度网站推广建程网是干嘛的
  • 网站规划与网页设计总结青岛行业网站建设电话
  • 学网站建设的专业叫什么全心代发17做网站
  • 滁州网站建设价格做公众号好还是网站好
  • 做什么网站赚钱最快三水顺德网站建设
  • 赤峰城乡建设局网站顺德外贸网站建设
  • 建网站教程视频下载网站建设公司怎样选
  • 公司怎么搭建自己网站南阳响应式网站制作
  • 网站建设栏目分级技术外包网站
  • 企业网站建设课程设计新闻发布会策划
  • 四川建设厅网上查询网站快速建站平台源码
  • 呼和浩特建设工程信息网站网页制作教程软件
  • 大气企业网站源码php网站数据流程
  • 山东官方网站栖霞市观里镇少城镇建设规划主页面设计图片
  • 建立网站用英语论文网站建设与运营
  • 洛阳建设银行网站做那个网站的图客比较好