如何自建网络数据库服务器?

如何自建网络数据库服务器?,第1张

    服务器如何选择?服务器的选择大概分为以下几种情况:

     一、个人网站或者入门级网站,这类网站由于网站内容和访问量都相对比较低,所以对服务器的要求也较低,选择入门级的服务器即可,而且价格会比较便宜。

     二、如果是一般的企业网站,企业的产品数量有限,需要存储的内容也有限的话,一般1核、2G、1M的就够用。

     三、如果是做开发游戏、数据分析、在线商城等业务或者有高网络包收发需求的企业,这类网站对访问速度、访问量、存储量、稳定性等的要求都比较高,所以建议考虑计算型服务器。

     四、如果有大数据计算与存储分析需求,比如互联网行业、金融行业等,最好选择大数据型的服务器,这种服务器的优势是可以随意升降配置。在具体选择服务器的过程中,有几个重要参数是一定要慎重考虑的:

1、CPU:服务器的CPU代表了主机的运算能力,静态页面对CPU的消耗比较小,动态页面对CPU消耗比较大,所以如果是静态页面一般1核的CPU就够了,如果是动态页面则建议选择2核以上的CPU。

2、内存:服务器内存越大,网站打开速度越快。对有数据库运行需求的中小型网站来说最少选择1G以上内存,因为数据库运行也是比较消耗内存的。

  3、硬盘:硬盘需要根据程序体量以及数据库大小来定了,此外系统本身会占用一部分硬盘空间,所以开通以后看到硬盘已经被使用了一部分空间。

4、带宽:如果选择VPS或者云服务器,他们对流量是没限制的,重点要考虑带宽。带宽越大访问网站时速度越快。所以可根据访问量大小及未来的发展规划选择带宽。

     5、线路:大陆常用的线路一般是三大运营商的,移动、联通、电信;境外的有香港、美国的。可以根据业务面向用户市场区域选择。

(1)方案一(数据库保存所有服务器索引信息)

全对称结构,没有中央服务器

web方案:

只从本地数据库检索符合条件的记录,给出结果

每次检索都要从本地服务器的海量数据中进行

数据库方案:

数据库保存所有服务器的索引内容

缓存命中率高的记录,减少检索时间

服务器负载分析:

服务器负载假设:

一百个结点,每结点一百人同时使用,每个结点一万条记录

web服务器:同时一百线程在本地数据库服务器检索

数据库服务器:每次接收一百个查询请求;每个请求要从一百万条索引中检索(最坏的情况);缓冲机制可以稍微减轻负担

数据更新操作:

同时更新所有数据库/只更新本地,服务器间相互同步

方案二(数据库保存本地索引及少量缓冲)

每高校作为一个结点

所有结点全对称结构,网络中没有一个中央服务器

web方案:

接收到请求时同时多线程向其它服务器同时搜索(服务器压力问题?)

数据库方案:

数据库保存本地数据

数据库保存一定量缓冲数据,

服务器负载分析:

服务器负载假设:

一百个结点,每结点一百人同时使用

则每个web服务器同时发起一万个线程向其它数据服务器搜索(oops!)

每个数据库服务器会同时接收到一万个查询请求(oops!)

采用学习过程只能少量减少查询请求和web服务器搜索线程

数据更新操作:

只更新本地

方案三(中央服务器方案一)

每高校一个结点

每结点结构相同,连接到同一个中央服务器

web方案

每个查询向中央服务器进行,由中央服务器实行检索,中央服务器返回检索结果

数据库方案

中央数据库保存所有索引信息

每结点可以只用小型数据库保存本地用户和其它信息即可

服务器负载分析:

服务器负载假设:

一百个结点,每结点一百人同时使用,每结点资料记录一万条

web服务器:同时发起一百个进程向中央数据库查询

数据库服务器(中央):同时接收一万条查询请求并返回大容量结果

数据库服务器(结点):少量工作

数据更新操作:

只更新中央服务器

方案四(中央服务器方案二)

每高校一个结点

每结点结构相同,连接到同一中央服务器

web方案:

每个查询向中央服务器进行,由中央服务器根据查询内容进行转发到结点数据库,再由结点数据库返回结果

数据库方案:

中央服务器保存各结点分类信息,根据页面请求的分类转发查询到相应服务器

服务器负载分析:

服务器负载假设:

一百个结点,每结点一百人同时使用,每结点资料记录一万条,每结点一百个类别

web服务器:同时一百个进程向中央数据库查询

数据库服务器(中央):同时接收一万条请求并转发

数据库服务器(结点):从中央服务器接收查询请求,最坏情况下每结点接收到一万条查询请求

数据更新操作:

只更新本地服务器

分类变化时更新中央服务器

1.mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现mysql数据库的热备份。

2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

3.设置主数据库服务器:

a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类unix)或者my.ini(windows)中mysqld配置块的配置有没有log-bin(记录数据库更改日志),因为mysql的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。

server-id=1 //数据库的id这个应该默认是1就不用改动

log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称

binlog-do-db=db_name //记录日志的数据库

binlog-ignore-db=db_name //不记录日志的数据库

以上的如果有多个数据库用","分割开

然后设置同步数据库的用户帐号

mysql>GRANT REPLICATION SLAVE ON *.*

->TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'

4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能

mysql>GRANT FILE ON *.*

->TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'

设置好主服务器的配置文件后重新启动数据库

b.锁定现有的数据库并备份现在的数据

锁定数据库

mysql>FLUSH TABLES WITH READ LOCK

备份数据库有两种办法一种是直接进入到mysql的data目录然后打包你需要备份数据库的文件夹,第二种是使用mysqldump的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库

c.查看主服务器的状态

mysql>show master status\G

+---------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| mysql-bin.003 | 73 | test | manual,mysql |

+---------------+----------+--------------+------------------+

记录File 和 Position 项目的值,以后要用的。

d.然后把数据库的锁定打开

mysql>UNLOCK TABLES

4.设置从服务器

a.首先设置数据库的配置文件

server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。

master-host=db-master.mycompany.com //主服务器的IP地址或者域名

master-port=3306 //主数据库的端口号

master-user=pertinax //同步数据库的用户

master-password=freitag //同步数据库的密码

master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差

report-host=db-slave.mycompany.com //报告错误的服务器

b.把从主数据库服务器备份出来的数据库导入到从服务器中

c.然后启动从数据库服务器,如果启动的时候没有加上"--skip-slave-start"这个参数则进入到mysql中

mysql>slave stop//停止slave的服务

d.设置主服务器的各种参数

mysql>CHANGE MASTER TO

->MASTER_HOST='master_host_name', //主服务器的IP地址

->MASTER_USER='replication_user_name', //同步数据库的用户

->MASTER_PASSWORD='replication_password', //同步数据库的密码

->MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)

->MASTER_LOG_POS=recorded_log_position//日志文件的开始位置(前面要求记住的参数)

e.启动同步数据库的线程

mysql>slave start

查看数据库的同步情况。

查看主从服务器的状态

mysql>SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程

如果日志太大清除日志的步骤如下

1.锁定主数据库

mysql>FLUSH TABLES WITH READ LOCK

2.停掉从数据库的slave

mysql>slave stop

3.查看主数据库的日志文件名和日志文件的position

show master status

+---------------+----------+--------------+------------------+

| File | Position | Binlog_do_db | Binlog_ignore_db |

+---------------+----------+--------------+------------------+

| louis-bin.001 | 79 | | mysql |

+---------------+----------+--------------+------------------+

4.解开主数据库的锁

mysql>unlock tables

5.更新从数据库中主数据库的信息

mysql>CHANGE MASTER TO

->MASTER_HOST='master_host_name', //主服务器的IP地址

->MASTER_USER='replication_user_name', //同步数据库的用户

->MASTER_PASSWORD='replication_password', //同步数据库的密码

->MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)

->MASTER_LOG_POS=recorded_log_position//日志文件的开始位置(前面要求记住的参数)

6.启动从数据库的slave

mysql>slave start


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/211102.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存