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

营口旅游网站开发怎样设计网站静态页面

营口旅游网站开发,怎样设计网站静态页面,专注做xp的网站,宁波男科医院哪家好MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践Mysql作为目前世界上使用最广泛的免费数据库#xff0c;相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中#xff0c;由单台Mysql作为独立的数据库是完全不能满足实际需求的#xff0c;无论是在安全…MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践Mysql作为目前世界上使用最广泛的免费数据库相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中由单台Mysql作为独立的数据库是完全不能满足实际需求的无论是在安全性高可用性以及高并发等各个方面。因此一般来说都是通过 主从复制(Master-Slave)的方式来同步数据再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。如下图所示下面是我在实际工作过程中所整理的笔记在此分享出来以供大家参考。一、MySQL的安装与配置具体的安装过程建议参考我的这一篇文章http://heylinux.com/archives/993.html值得一提的是我的安装过程都是源码包编译安装的并且所有的配置与数据等都统一规划到了/opt/mysql目录中因此在一台服务器上安装完成以后可以将整个mysql目录打包然后传到其它服务器上解包便可立即使用。二、MySQL主从复制场景描述主数据库服务器192.168.10.130MySQL已经安装并且无应用数据。从数据库服务器192.168.10.131MySQL已经安装并且无应用数据。2.1 主服务器上进行的操作启动mysql服务/opt/mysql/init.d/mysql start通过命令行登录管理MySQL服务器/opt/mysql/bin/mysql -uroot -pnew-password授权给从数据库服务器192.168.10.131mysql GRANT REPLICATION SLAVE ON *.* to rep1192.168.10.131 identified by ‘password’;查询主数据库状态Mysql show master status;------------------------------------------------------------| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |------------------------------------------------------------| mysql-bin.000005 | 261 | | |------------------------------------------------------------记录下 FILE 及 Position 的值在后面进行从服务器操作的时候需要用到。2.2 配置从服务器修改从服务器的配置文件/opt/mysql/etc/my.cnf将 server-id 1修改为 server-id 10并确保这个ID没有被别的MySQL服务所使用。启动mysql服务/opt/mysql/init.d/mysql start通过命令行登录管理MySQL服务器/opt/mysql/bin/mysql -uroot -pnew-password执行同步SQL语句mysql change master tomaster_host’192.168.10.130’,master_user’rep1’,master_password’password’,master_log_file’mysql-bin.000005’,master_log_pos261;正确执行后启动Slave同步进程mysql start slave;主从同步检查mysql show slave status\G**************** 1. row *******************Slave_IO_State:Master_Host: 192.168.10.130Master_User: rep1Master_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000005Read_Master_Log_Pos: 415Relay_Log_File: localhost-relay-bin.000008Relay_Log_Pos: 561Relay_Master_Log_File: mysql-bin.000005Slave_IO_Running: YESSlave_SQL_Running: YESReplicate_Do_DB:……………省略若干……………Master_Server_Id: 11 row in set (0.01 sec)其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES才表明状态正常。如果主服务器已经存在应用数据则在进行主从复制时需要做以下处理(1)主数据库进行锁表操作不让数据再进行写入动作mysql FLUSH TABLES WITH READ LOCK;(2)查看主数据库状态mysql show master status;(3)记录下 FILE 及 Position 的值。将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器建议通过tar归档压缩后再传到从服务器解压。(4)取消主数据库锁定mysql UNLOCK TABLES;2.3 验证主从复制效果主服务器上的操作在主服务器上创建数据库first_dbmysql create database first_db;Query Ok, 1 row affected (0.01 sec)在主服务器上创建表first_tbmysql create table first_tb(id int(3),name char(10));Query Ok, 1 row affected (0.00 sec)在主服务器上的表first_tb中插入记录mysql insert into first_tb values (001,’myself’);Query Ok, 1 row affected (0.00 sec)在从服务器上查看mysql show databases;--------------------| Database |--------------------| information_schema || first_db || mysql || performance_schema || test |--------------------5 rows in set (0.01 sec)数据库first_db已经自动生成mysql use first_dbDatabase chagedmysql show tables;--------------------| Tables_in_first_db |--------------------| first_tb |--------------------1 row in set (0.02 sec)数据库表first_tb也已经自动创建mysql select * from first_tb;------------| id | name |------------| 1 | myself |------------1 rows in set (0.00 sec)记录也已经存在由此整个MySQL主从复制的过程就完成了接下来我们进行MySQL读写分离的安装与配置。三、MySQL读写分离场景描述数据库Master主服务器192.168.10.130数据库Slave从服务器192.168.10.131MySQL-Proxy调度服务器192.168.10.132以下操作均是在192.168.10.132即MySQL-Proxy调度服务器 上进行的。3.1 MySQL的安装与配置具体的安装过程与上文相同。3.2 检查系统所需软件包通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。gcc* gcc-c* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*libevent* glib*若缺少相关的软件包可通过yum -y install方式在线安装或直接从系统安装光盘中找到并通过rpm -ivh方式安装。3.3 编译安装luaMySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的因此需要安装lua。lua可通过以下方式获得从http://www.lua.org/download.html下载源码包从rpm.pbone.net搜索相关的rpm包download.fedora.redhat.com/pub/fedora/epel/5/i386/lua-5.1.4-4.el5.i386.rpmdownload.fedora.redhat.com/pub/fedora/epel/5/x86_64/lua-5.1.4-4.el5.x86_64.rpm这里我们建议采用源码包进行安装cd /opt/installwget http://www.lua.org/ftp/lua-5.1.4.tar.gztar zvfx lua-5.1.4.tar.gzcd lua-5.1.4vi src/Makefile在 CFLAGS -O2 -Wall $(MYCFLAGS) 这一行记录里加上-fPIC更改为 CFLAGS -O2 -Wall -fPIC $(MYCFLAGS) 来避免编译过程中出现错误。make linuxmake installcp etc/lua.pc /usr/lib/pkgconfig/export PKG_CONFIG_PATH$PKG_CONFIG_PATH:/usr/lib/pkgconfig测试平台为RHEL5 32位因此选择32位的软件包wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gztar xzvf mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gzmv mysql-proxy-0.8.1-linux-rhel5-x86-32bit /opt/mysql-proxy创建mysql-proxy服务管理脚本mkdir /opt/mysql-proxy/init.d/vim mysql-proxy01#!/bin/sh02#03# mysql-proxy This script starts and stops the mysql-proxy daemon04#05# chkconfig: - 78 3006# processname: mysql-proxy07# description: mysql-proxy is a proxy daemon to mysql0809# Source function library.10. /etc/rc.d/init.d/functions1112#PROXY_PATH/usr/local/bin13PROXY_PATH/opt/mysql-proxy/bin1415progmysql-proxy1617# Source networking configuration.18. /etc/sysconfig/network1920# Check that networking is up.21[ ${NETWORKING}  no ]  exit 02223# Set default mysql-proxy configuration.24#PROXY_OPTIONS--daemon25PROXY_OPTIONS--admin-usernameroot --admin-passwordpassword --proxy-read-only-backend-addresses192.168.10.131:3306 --proxy-backend-addresses192.168.10.130:3306  --admin-lua-script/opt/mysql-proxy/lib/mysql-proxy/lua/admin.lua--proxy-lua-script/opt/mysql-proxy/scripts/rw-splitting.lua26PROXY_PID/opt/mysql-proxy/run/mysql-proxy.pid2728# Source mysql-proxy configuration.29if [ -f /etc/sysconfig/mysql-proxy ]; then30. /etc/sysconfig/mysql-proxy31fi3233PATH$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH3435# By default its all good36RETVAL03738# See how we were called.39case $1 in40start)41# Start daemon.42echo -n $Starting $prog: 43$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file$PROXY_PID --usermysql --log-levelwarning --log-file/opt/mysql-proxy/log/mysql-proxy.log44RETVAL$?45echo46if [ $RETVAL 0 ]; then47touch /var/lock/subsys/mysql-proxy48fi49;;50stop)51# Stop daemons.52echo -n $Stopping $prog: 53killproc $prog54RETVAL$?55echo56if [ $RETVAL 0 ]; then57rm -f /var/lock/subsys/mysql-proxy58rm -f $PROXY_PID59fi60;;61restart)62$0 stop63sleep 364$0 start65;;66condrestart)67[ -e /var/lock/subsys/mysql-proxy ] $0 restart68;;69status)70status mysql-proxy71RETVAL$?72;;73*)74echo Usage: $0 {start|stop|restart|status|condrestart}75RETVAL176;;77esac7879exit $RETVAL脚本参数详解PROXY_PATH/opt/mysql-proxy/bin //定义mysql-proxy服务二进制文件路径PROXY_OPTIONS--admin-usernameroot \ //定义内部管理服务器账号--admin-passwordpassword \ //定义内部管理服务器密码--proxy-read-only-backend-addresses192.168.10.131:3306 \ //定义后端只读从服务器地址--proxy-backend-addresses192.168.10.130:3306 \ //定义后端主服务器地址--admin-lua-script/opt/mysql-proxy/lib/mysql-proxy/lua/admin.lua \ //定义lua管理脚本路径--proxy-lua-script/opt/mysql-proxy/scripts/rw-splitting.lua \ //定义lua读写分离脚本路径PROXY_PID/opt/mysql-proxy/run/mysql-proxy.pid //定义mysql-proxy PID文件路径$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS \--daemon \ //定义以守护进程模式启动--keepalive \ //使进程在异常关闭后能够自动恢复--pid-file$PROXY_PID \ //定义mysql-proxy PID文件路径--usermysql \ //以mysql用户身份启动服务--log-levelwarning \ //定义log日志级别由高到低分别有(error|warning|info|message|debug)--log-file/opt/mysql-proxy/log/mysql-proxy.log //定义log日志文件路径cp mysql-proxy /opt/mysql-proxy/init.d/chmod x /opt/mysql-proxy/init.d/mysql-proxymkdir /opt/mysql-proxy/runmkdir /opt/mysql-proxy/logmkdir /opt/mysql-proxy/scripts配置并使用rw-splitting.lua读写分离脚本最新的脚本我们可以从最新的mysql-proxy源码包中获取cd /opt/installwget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1.tar.gztar xzvf mysql-proxy-0.8.1.tar.gzcd mysql-proxy-0.8.1cp lib/rw-splitting.lua /opt/mysql-proxy/scripts修改读写分离脚本rw-splitting.lua修改默认连接进行快速测试不修改的话要达到连接数为4时才启用读写分离vim /opt/mysql-proxy/scripts/rw-splitting.lua-- connection poolif not proxy.global.config.rwsplit thenproxy.global.config.rwsplit {min_idle_connections 1, //默认为4max_idle_connections 1, //默认为8is_debug false}end修改完成后启动mysql-proxy/opt/mysql-proxy/init.d/mysql-proxy start3.5 测试读写分离效果创建用于读写分离的数据库连接用户登陆主数据库服务器192.168.10.130通过命令行登录管理MySQL服务器/opt/mysql/bin/mysql -uroot -pnew-passwordmysql GRANT ALL ON *.* TO proxy1192.168.10.132 IDENTIFIED BY password;由于我们配置了主从复制功能因此从数据库服务器192.168.10.131上已经同步了此操作。为了清晰的看到读写分离的效果需要暂时关闭MySQL主从复制功能登陆从数据库服务器192.168.10.131通过命令行登录管理MySQL服务器/opt/mysql/bin/mysql -uroot -pnew-password关闭Slave同步进程mysql stop slave;Query OK, 0 rows affected (0.00 sec)连接MySQL-Proxy/opt/mysql/bin/mysql -uproxy1 -ppassword -P4040 -h192.168.10.132登陆成功后在first_db数据的first_tb表中插入两条记录mysql use first_db;Database changedmysql insert into first_tb values (007,’first’);Query Ok, 1 row affected (0.00 sec)mysql insert into first_tb values (110,’second’);Query Ok, 1 row affected (0.00 sec)查询记录mysql select * from first_tb;------------| id | name |------------| 1 | myself |------------1 rows in set (0.00 sec)通过读操作并没有看到新记录mysql quit退出MySQL-Proxy下面分别登陆到主从数据库服务器对比记录信息首先检查主数据库服务器mysql select * from first_tb;------------| id | name |------------| 1 | myself |------------| 007 | first |------------| 110 | second |------------3 rows in set (0.00 sec)两条新记录都已经存在然后检查从数据库服务器mysql select * from first_tb;------------| id | name |------------| 1 | myself |------------1 rows in set (0.00 sec)没有新记录存在由此验证我们已经实现了MySQL读写分离目前所有的写操作都全部在Master主服务器上用来避免数据的不同步另外所有的读操作都分摊给了其它各个Slave从服务器上用来分担数据库压力。经验分享1.当MySQL主从复制在 show slave status\G 时出现Slave_IO_Running或Slave_SQL_Running 的值不为YES时需要首先通过 stop slave 来停止从服务器然后再执行一次本文 2.1与2.2 章节中的步骤即可恢复但如果想尽可能的同步更多的数据可以在Slave上将master_log_pos节点的值在之前同步失效的值的基础上增大一些然后反复测试直到同步OK。因为MySQL主从复制的原理其实就是从服务器读取主服务器的binlog然后根据binlog的记录来更新数据库。2.MySQL-Proxy的rw-splitting.lua脚本在网上有很多版本但是最准确无误的版本仍然是源码包中所附带的lib/rw-splitting.lua脚本如果有lua脚本编程基础的话可以在这个脚本的基础上再进行优化3.MySQL-Proxy实际上非常不稳定在高并发或有错误连接的情况下进程很容易自动关闭因此打开--keepalive参数让进程自动恢复是个比较好的办法但还是不能从根本上解决问题因此通常最稳妥的做法是在每个从服务器上安装一个MySQL-Proxy供自身使用虽然比较低效但却能保证稳定性4.一主多从的架构并不是最好的架构通常比较优的做法是通过程序代码和中间件等方面来规划比如设置对表数据的自增id值差异增长等方式来实现两个或多个主服务器但一定要注意保证好这些主服务器数据的完整性否则效果会比多个一主多从的架构还要差5.MySQL-Cluster 的稳定性也不是太好6.Amoeba for MySQL 是一款优秀的中间件软件同样可以实现读写分离负载均衡等功能并且稳定性要大大超过MySQL-Proxy建议大家用来替代MySQL-Proxy甚至MySQL-Cluster。
http://www.huolong8.cn/news/100816/

相关文章:

  • 如何修改网站备案做全国性的app网站推广多少
  • 品牌设计需要学什么seo按照搜索引擎的什么对网站
  • 上海网站制作官网道德建设 网站
  • 达人设计网官方网站有必要 在线 网页 代理
  • 广州公司网站开发怎样给网站做新闻稿子
  • 自己做的网站是怎么赚钱肇东市建设局网站
  • 网站怎么做下拉刷新app对接广告联盟
  • h5 页面模板网站诊断网站seo诊断
  • 外贸商城网站资质温州云海和联欣哪个做网站比较好
  • 惠州外贸网站建设如何做竞价网站数据监控
  • 做网站推广员必备的条件中国拟在建项目网官网
  • 做公司网站有用吗东莞网络推广营销公司
  • 福建省网站建设公司汽车便宜网站建设
  • 网站前端建设需要学会什么意思seo综合查询工具有什么功能
  • 做外贸必须有公司网站么大型网站设计
  • 个人网站设计作品图片网上银行官网
  • 沧州网站群网站架构图图
  • wordpress网站迁移水利建设管理司网站
  • 昆明网站制作的教程推广用哪个平台效果好
  • 直播做ppt的网站趣图在线生成网站源码
  • 网站提示未备案北京网站搭建哪家好
  • 社科联网站建设情况汇报珠海网站设计平台
  • 网站专题策划中国域名注册局官网
  • 泉州网站seo黔南网站建设
  • 网站设计制作体会游戏源码网站免费
  • 济宁市网站建设有些网站开发人员工具无反应
  • 阿里巴巴怎么做网站remix做歌网站
  • 建设壁纸网站的目的山东网站建设设计
  • 整站优化与关键词排名如何自学广告设计
  • 接网站建设_网站设计综合网站开发