贴吧图片
1

软件所魏老师的课程:http://forge.trustie.net/projects/76/boards

最后回复:王林春
03/11/2014
更新时间:03/11/2014
贴吧图片
0

做开发的时候要做Mysql数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本。


1. 安装配置

两台服务器,分别安装好Mysql,都安装在 /usr/local/Mysql 目录下(安装步骤省略,请参考相关文档),两台服务器的IP分别是192.168.0.1和192.168.0.2,我们把192.168.0.1作为master数据库,把192.168.0.2作为slave服务器,我们采用单向同步的方式,就是master的数据是主的数据,然后slave主动去master哪儿同步数据回来。

两台服务器的配置一样,我们把关键的配置文件拷贝一下,默认的配置文件是在 /usr/local/Mysql/share/Mysql目录下,分别有 my-large.cnf, my-medium.cnf, my-small.cnf等几个文家,我们只是测试,使用my-medium.cnf就行了。Mysql安装完后,默认的配置文件是指定在数据库存放目录下的,我们用的是4.1.X的,所以配置文件就应该在 /usr/local/Mysql/var 目录下,于是把配置文件拷贝过去:
cp /usr/local/Mysql/share/Mysql/my-medium.cnf  /usr/local/Mysql/var/my.cnf

两台服务器做相同的拷贝配置文件操作。


2. 配置Master服务器


我们要把192.168.0.1配置为主Mysql服务器(master),那么我们就要考虑我们需要同步那个数据库,使用那个用户同步,我们这里为了简单起见,就使用root用户进行同步,并且只需要同步数据库abc。
打开配置文件:
vi /usr/local/Mysql/var/my.cnf

找到一下信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id        = 1    //1为master,2为salve

添加两行:
sql-bin-update-same     //同步形式
binlog-do-db     = abc  //要同步的数据库

重启192.168.0.1的Mysql服务器:
/usr/local/Mysql/bin/Mysqladmin shutdown
/usr/local/Mysql/bin/Mysqld_safe --user=Mysql &


3. 配置Slave服务器

我们的slave服务器主要是主动去master服务器同步数据回来,我们编辑配置文件:
vi /usr/local/Mysql/var/my.cnf

找到下面类似的信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id        = 1

把上面的server-id修改为2,同时添加一些信息:
server-id                   = 2                        //本Mysql是slave服务器
master-host             = 192.168.0.1    //master服务器的IP
master-user             = root                  //连接master服务器的用户
master-password   = ""                        //连接master服务器的密码
master-port              = 3306                //连接端口
master-connect-retry    = 10              //重试次数
replicate-do-db        = abc                  //要同步的数据库
log-slave-updates                              //同步的形式

重启192.168.0.2的Mysql服务器:
/usr/local/Mysql/bin/Mysqladmin shutdown
/usr/local/Mysql/bin/Mysqld_safe --user=Mysql &


4. 测试安装


首先查看一下slave的主机日志:
cat /usr/local/Mysql/var/xxxxx_err (xxx是主机名)

检查是否连接正常, 看到类似这样的信息就成功了

051031 11:42:40  Mysqld started
051031 11:42:41  InnoDB: Started; log sequence number 0 43634
/usr/local/Mysql/libexec/Mysqld: ready for connections.
Version: "4.1.15-log"  socket: "/tmp/Mysql.sock"  port: 3306  Source distribution
051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log "FIRST" at position 0, relay log "./new4-relay-bin.000001" position: 4
051031 11:43:21 [Note] Slave I/O thread: connected to master "root@192.168.0.1:3306",  replication started in log "FIRST" at position 4

在Master查看信息

/usr/local/Mysql/bin/Mysql -u root

查看master状态:
Mysql> show master status;

查看Master下Mysql进程信息:
Mysql> show processlist;


在slave上查看信息:

/usr/local/Mysql/bin/Mysql -u root

查看slave状态:
Mysql> show slave status;

查看slave下Mysql进程信息:
Mysql> show processlist;

你再在master的abc库里建立表结构并且插入数据,然后检查slave有没有同步这些数据,就能够检查出是否设置成功。

 

可能出现的问题如下

1.show master status 时没有数据显示
确保my.cnf
log-bin=mysql-bin

2.'Could not find first log file name in binary log index file'的解决办法
数据库主从出错:
Slave_IO_Running: No 一方面原因是因为网络通信的问题也有可能是日志读取错误的问题。以下是日志出错问题的解决方案:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in 
binary log index file'

解决办法:
从机器停止slave
mysql> slave stop;

到master机器登陆mysql:
记录master的bin的位置,例如:mysql> show mster status;
+-------------------+----------+--------------+-------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB 
|
+-------------------+----------+--------------+-------------------------------------------+
| mysqld-bin.000010 | 106 | | information_schema,mysql |
+-------------------+----------+--------------+-------------------------------------------+
日志为mysqld-bin.000010

刷新日志:mysql> flush logs;
因为刷新日志file的位置会+1,即File变成为:mysqld-bin.000011

马上到slave执行
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000011',MASTER_LOG_POS=106;
mysql> slave start;
mysql> show slave status\G;

更新时间:03/11/2014
贴吧图片
0

分为同步集群和异步集群。

 

同步集群(mysql cluster)

结构:(data + sql + mgm节点)

特点:

1) 内存级别的,对硬件要求较低,但是对内存要求较大。换算比例为:1:1.1;

2) 数据同时放在几台服务器上,冗余较好;

3) 速度一般;

4) 建表需要声明为engine=ndbcluster

5) 扩展性强;

6) 可以实现高可用性和负载均衡,实现对大型应用的支持;

7) 必须是特定的mysql版本,如:已经编译好的max版本;

8) 配置和管理方便,不会丢失数据;

 

 

 

 

 

异步集群(mysql replication)

结构:(master + slave)

特点:

1) 主从数据库异步数据;

2) 数据放在几台服务器上,冗余一般;

3) 速度较快;

4) 扩展性差;

5) 无法实现高可用性和负载均衡(只能在程序级别实现读写分离,减轻对主数据库的压力);

6) 配置和管理较差,可能会丢失数据;

更新时间:03/11/2014
贴吧图片
0

1.1 系统说明
采用三台linux服务器,均采用centos6.2版本,最小化安装系统。
1.2 软件说明
数据库管理节点,数据库节点均采用:
mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
1.3 拓扑结构说明
mysql集群有如下三层:
应用程序层:负责与mysql服务器通信的各种应用程序。
Mysql服务器层:处理SQL命令,并与NDB存储引擎通信和Mysql服务器。

NDB集群组件层:NDB集群组件有时也称数据节点,负责处理查询,然后将结果返回给mysql服务器。拓扑结构图如下所示:

 
mysql-cluster:192.168.254.200
NDB节点:IP地址:192.168.254.221
NDB节点:IP地址:192.168.254.222
SQL节点:IP地址:192.168.254.221
SQL节点:IP地址:192.168.254.222
第2章  Mysql管理节点安装
2.1 依赖包安装
yum install wget gcc gcc-c++ make cmake ncurses-devel libtool zilib-devel –y
注:此处cmake是mysql 5.5之后版本所必需的,5.5之后的版本将cmake取代configure;
2.2 创建mysql用户
useradd -s /sbin/nologin -M mysql
2.3 编译安装mysql管理节点
tra xvf mysql-cluster-gpl-7.2.8.tar.gz
cd mysql-cluster-gpl-7.2.8
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306


make && make install


2.4 修改配置文件
mkdir –p /data/mysql-cluster/ 
vi /data/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M      
[ndb_mgmd]
Id=1
Hostname=192.168.254.200           
datadir=/data/mysql/
[ndbd]
Id=2
Hostname=192.168.254.221     
datadir=/data/mysql/


[ndbd]
Id=3
Hostname=192.168.254.222
datadir=/data/mysql/
[MYSQLD]
[MYSQLD]
2.5 启动管理节点
/usr/local/mysql/bin/ndb_mgmd -f /data/mysql-cluster/config.ini
如果启动成功则会显示:
MySQL Cluster Management Server mysql-5.5.27 ndb-7.2.8
 
第3章  Mysql运行节点安装
3.1 安装说明
Mysql节点安装过程请参考管理节点安装;
3.2 配置文件修改
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
3.3 初始化mysql
bash scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
3.4 启动mysql节点服务
/usr/local/mysql/bin/ndbd –initial
/etc/init.d/mysqld start


第4章  管理、测试说明
4.1 管理节点状态
进入管理节点工作台
/usr/local/mysql/bin/ndb_mgmd
运行show 显示当前状态
 
即表明,集群运行正常。
4.2 Mysql节点状态
启动ndbd服务即会产生如下进程;
 
4.3 测试数据同步
221(master)上执行如下操作:
 
然后登录222mysql,查看状态:
 
同样在222上执行以下操作:
 
然后在221上查看同步结果:
 
以上结果即表明:集群运行成功,可以保证数据库主-辅同步。


然后将222的网络服务断掉,查看管理节点;
 
启动222网络服务,运行/usr/local/mysql/bin/ndbd –initial;
 
然后查看管理节点服务;
 
在断掉一个服务的情况下仍可继续使用mysql服务。
4.4 节点管理
如果修改过config.ini文件,则执行下面的语句使得配置文件生效;/usr/local/mysql/bin/ndb_mgmd -f /data/mysql-cluster/config.ini  --reload
滚动重启旧的数据存储节点服务(滚动重启,不能所有节点同时重启,如果同时停止,数据库前端查询就会出现错误);
ndb_mgm> “id” (restart;stop;start)
重启,停止,启动,”id”的节点服务。

更新时间:03/11/2014
贴吧图片
0 1

用于参加竞赛的项目在新建时必须选择“公开”,否则该项目将不会显示于竞赛的“参与项目”中,若用户不想其他人看到本项目的源码,新建项目时可以选择“隐藏代码库”;若用户在新建项目时未公开项目,则可以在本项目的“配置”项中重新将该项目设为“公开“

更新时间:03/11/2014
贴吧图片
2

http://forge.trustie.net/project/course?project_type=1

 

这个页面在Google Chrome上显示不正常(显示器分辨率1600x900)。字体重叠了,请尽快修复。具体现场看附件。

translation missing: en.field_teacher_name:

translation missing: en.label_duration_time:

translation missing: en.label_course_brief_introduction:

NUDT第五届信息安全竞赛新锐级培训课程。请参加竞赛的同学加入此课程。

最后回复:王林春
03/11/2014
更新时间:03/11/2014
贴吧图片
3

我上的是分布计算环境课程,主讲教师是史殿习,我是第二教师。

但是我不能在课程中发布作业。

最后回复:王林春
03/10/2014
更新时间:03/10/2014
贴吧图片
2

我不清楚是我弄错了,还是系统的小bug.请开发小组关注。

最后回复:尹刚
03/10/2014
更新时间:03/10/2014
贴吧图片
1

使用浏览器里的WebGL技术逼真模拟水池、水、球、光影的互动变化效果。本演示需要你的电脑有一个相当不错的显卡和最新的显卡驱动。互动效果有:点击水面激起波澜,拖拽页面来旋转视角,使用G键来翻转重力,等等.

http://www.webhek.com/misc/webgl-water/

最后回复:尹刚
03/03/2014
更新时间:03/04/2014
贴吧图片
1
他们跟我说是课程平台哦
最后回复:Anonymous
02/27/2014
更新时间:02/27/2014
贴吧图片
0

 Nginx的优点

部署nginx最关键的好处就是能够高性能高效的处理高并发。同时,还有更多有意思的好处。

最近几年,web架构拥抱解耦的理念并且将应用层设施从web服务器中分离。虽然现在仅仅是将原先基于LAMP(Linux, Apache, MySQL, PHP, Python or Perl)所构建的网站,变为基于LEMP(E表示Engine x)的。但是,越来越多的实践是将web服务器推入基础设施的边缘,并且用不同的方法整合这些相同或更新的应用和数据库工具集。

Nginx很适合做这些工作。他提供了必要的关键功能用于方便将下列功能从应用层剥离到更高效的边缘web服务器层:并发、长连接处理、SSL,静态内容、压缩和缓存、连接和请求限速,以及HTTP媒体流等。Nginx同时也允许直接整合memcached、Redis或者其他的NoSQL解决方案,增强为处理大规模并发用户的性能。

随着现代编程语言和开发包广泛使用,越来越多的公司改变了应用开发和部署的方式。Nginx已经成为这些改变范例之中的最重要的部件之一,并且已经帮助许多公司在预算内快速启动和开发他们的web服务。

Nginx开发始于2002年,2004年基于2-clause BSD授权正式对外发布。自发布起,Nginx用户就在不断增长,并且贡献提议,提交bug报告、建议和评测报告,这极大的帮助和促进了整个社区的发展。

Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。

谈谈关于Windows版本nginx。当nignx在Windows环境下工作时,Windows版本的nginx更像是概念验证版本,而不是全功能移植。这是由于目前nginx和Windows内核架构之间交互的某些限制导致。Windows版本ngnix已知的问题包括:低并发连接数、性能降低、不支持缓存和带宽策略。未来Windows版本的nginx的功能会更接近主流版本。

 Nginx架构综览

传统基于进程或线程的模型使用单独的进程或线程处理并发连接,因而会阻塞于网络或I/O操作。根据不同的应用,就内存和CPU而言,这是非常低效的。派生进程或线程需要准备新的运行环境,包括在内存上分配堆和栈、生成一个新的运行上下文。创建这些东西还需要额外的CPU时间,而且过度的上下文切换引起的线程抖动最终会导致性能低下。所有这些复杂性在如Apache web服务器的老架构上一览无遗。在提供丰富的通用应用功能和优化服务器资源使用之间需要做一个权衡。

最早的时候,nginx希望为动态增长的网站获得更好的性能,并且密集高效的使用服务器资源,所以其使用了另外一个模型。受不断发展的在不同操作系统上开发基于事件模型的技术驱动,最终一个模块化,事件驱动,异步,单线程,非阻塞架构成为nginx代码的基础。

Nginx大量使用多路复用和事件通知,并且给不同的进程分配不同的任务。数量有限的工作进程(Worker)使用高效的单线程循环处理连接。每个worker进程每秒可以处理数千个并发连接、请求。

代码结构

Nginx worker的代码包含核心和功能模块。核心负责维护一个紧凑的事件处理循环,并且在请求处理的每个阶段执行对应的模块代码段。模块完成了大部分展现和应用层功能。包括从网络和存储设备读取、写入,转换内容,进行输出过滤,SSI(server-side include)处理,或者如果启用代理则转发请求给后端服务器。

nginx模块化的架构允许开发者扩展web服务器的功能,而不需要修改nginx核心。Nginx模块可分为:核心、事件模块,阶段处理器,协议、变量处理器,过滤器,上游和负载均衡器等。目前,nginx不支持动态加载模块,即模块代码是和nginx核心代码一起编译的。模块动态加载和ABI已经计划在将来的某个版本开发。更多关于不同模块角色的详细信息可在14.4章找到。

Nginx在Linux、Solaris和BSD系统上使用kqueue、epoll和event ports等技术,通过事件通知机制来处理网络连接和内容获取,包括接受、处理和管理连接,并且大大增强了磁盘IO性能。目的在于尽可能的提供操作系统建议的手段,用于从网络进出流量,磁盘操作,套接字读取和写入,超时等事件中及时异步地获取反馈。Nginx为每个基于Unix的操作系统大量优化了这些多路复用和高级I/O操作的方法。

图14.1展示了nginx架构的高层设计。

nginx-architecture.png图 14.1 nginx架构图

工作进程模型

前面提到过,nginx不为每个连接派生进程或线程,而是由worker进程通过监听共享套接字接受新请求,并且使用高效的循环来处理数千个连接。Nginx不使用仲裁器或分发器来分发连接,这个工作由操作系统内核机制完成。监听套接字在启动时就完成初始化,worker进程通过这些套接字接受、读取请求和输出响应。

事件处理循环是nginx worker代码中最复杂的部分,它包含复杂的内部调用,并且严重依赖异步任务处理的思想。异步操作通过模块化、事件通知、大量回调函数以及微调定时器等实现。总的来说,基本原则就是尽可能做到非阻塞。Nginx worker进程唯一会被阻塞的情形是磁盘性能不足。

由于nginx不为每个连接派生进程或线程,所以内存使用在大多数情况下是很节约并且高效的。同时由于不用频繁的生成和销毁进程或线程,所以nginx也很节省CPU时间。Nginx所做的就是检查网络和存储的状态,初始化新连接并添加到主循环,异步处理直到请求结束才从主循环中释放并删除。兼具精心设计的系统调用和诸如内存池等支持接口的精确实现,nginx在极端负载的情况下通常能做到中低CPU使用率。

nginx派生多个worker进程处理连接,所以能够很好的利用多核CPU。通常一个单独的worker进程使用一个处理器核,这样能完全利用多核体系结构,并且避免线程抖动和锁。在一个单线程的worker进程内部不存在资源匮乏,并且资源控制机制是隔离的。这个模型也允许在物理存储设备之间进行扩展,提高磁盘利用率以避免磁盘I/O导致的阻塞。将工作负载分布到多个worker进程上最终能使服务器资源被更高效的利用。

针对某些磁盘使用和CPU负载的模式,nginx worker进程数应该进行调整。这里的规则比较基本,系统管理员应根据负载多尝试几种配置。通常推荐:如果负载模式是CPU密集型,例如处理大量TCP/IP协议,使用SSL,或者压缩数据等,nginx worker进程应该和CPU核心数相匹配;如果是磁盘密集型,例如从存储中提供多种内容服务,或者是大量的代理服务,worker的进程数应该是1.5到2倍的CPU核心数。一些工程师基于独立存储单元的数目来决定worker进程数,虽然这个方法的有效性取决于磁盘存储配置的类型,。

Nginx开发者在下个版本中要解决的一个主要问题是怎么避免磁盘I/O引起的阻塞。目前,如果没有足够的存储性能为一个worker进程的磁盘操作提供服务,这个进程就会阻塞在磁盘读写操作上。一些机制和配置指令用于缓解这个磁盘I/O阻塞的场景,最显著的是sendfile和AIO指令,这通常可以降低许多磁盘利用率。应该根据数据集(data set),可用内存数,以及底层存储架构等来规划安装nginx。

当前的worker模型的另一个问题是对嵌入脚本的支持有限。举例来说,标准的nginx发布版只支持Perl作为嵌入脚本语言。这个原因很简单:嵌入脚本很可能会在任何操作上阻塞或者异常退出,这两个行为都会导致worker进程挂住而同时影响数千个连接。将脚本更简单,更可靠地嵌入nginx,并且更适合广泛应用的工作已经列入计划。

更新时间:02/22/2014
贴吧图片
0

充实而充满挑战的蛇年即将过去,马年我们将翻开新的篇章,祝大家身体健康、学业有成、马到成功!

感谢Trustie开发小组,感谢Trustie的所有用户,希望Trustie能够为大家带来更多的快乐

 

更新时间:01/27/2014
贴吧图片
1

随着计算机的发展、互联网及移动互联的兴起,开源软件在操作系统、数据库、Web服务器、移动操作系统等各个方面已经成为主流。开源软件,无处不在。

转载自:http://os.51cto.com/art/201304/390332.htm

最后回复:刘万伟
01/19/2014
更新时间:01/19/2014
贴吧图片
0

如果你是一个程序员,想证明自己的实力,你可以在GitHub上分享代码,可以在Stack Overflow和Quora这样的网站上解答编程问题,也可以在博客中记录自己的想法和建议。但是,现在缺少一个网站来聚集所有的这些活动——至少根据 Coderwall的说法是这样。Coderwall是Y Combinator最近孵化的初创公司中的一家,它想成为聚集所有这些活动的网站,成为开发者的在线信誉系统。Coderwall于2012年02月29日上线。

转自腾讯科技讯:http://tech.qq.com/a/20120229/000374.htm

更新时间:01/19/2014
贴吧图片
0

例如:http://forge.trustie.net/boards/3/topics/29

更新时间:01/19/2014
贴吧图片
0

上传的头像无法调整比例,大小,无法旋转,对于大文件也无法进行压缩上传……

更新时间:01/13/2014
贴吧图片
0

大家放松一下,看看陈光标年轻的时候:

“买一台旧电脑显示器,把显像系统整体拆掉,只剩一个空壳子。然后找一个和荧光屏等大的塑料板,在上面画个人体结构图,‘心上面装一个发光管,肝上面装个发光管,胃上装个发光管’,再将这个装上发光管的塑料板安置在已经掏空的显示器正面。接下来从显示器旁边伸出两根金属棒,进行诊断。“一旦发现病变”,发光管就会亮,能在显示器(塑料板)上直观地看到身体哪个部位有疾病。”

新闻网址:http://finance.sina.com.cn/leadership/20140113/092617931731.shtml

专利网址:http://www2.soopat.com/Patent/94242839

 

更新时间:01/13/2014
贴吧图像
我在问吧
回答
发帖

问吧

新建贴吧
问题和建议
还能输入50个字符 Submit

加入QQ群

关注微信APP


×