在线mysql数据库?免费mysql云数据库
大家好,关于在线mysql数据库很多朋友都还不太明白,今天小编就来为大家分享关于免费mysql云数据库的知识,希望对各位有所帮助!
MySQL数据库
目前MySQL被广泛地应用在Internet上的中小型网站中
由于其体积小、速度快、总体拥有成本低,尤其是开放源开源数据库MySQLMySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司
目前MySQL被广泛地应用在Internet上的中小型网站中
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库
盘点:开源社区那些免费的数据库软件MySQL为多种编程语言提供了API,包括C、C、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等
而其自身是采用C和C编写的,使用了多种编译器进行测试,所以,MySQL能够保证源代码具有很强的可移植性
这样的一款数据库,自然能够支持几乎所有的操作系统,从Unix、Linux到Windows,具体包括AIX、BSDi、FreeBSD、HP-UX、Linux、MacOS、、NetBSD、OpenBSD、OS/2Wrap、Solaris、SunOS、Windows等多种操作系统
最重要的是,它是一个可以处理拥有上千万条记录的大型数据库
与此同时,MySQL也产生了很多分支版本的数据库也非常值得推荐
首先是MariaDB,它是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者创的公司所开发的免费开源的数据库服务器
与MySQL相比较,MariaDB更强的地方在于它拥有的引擎,包括Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎,它能够更快的复制查询处理、运行的速度更快、更好的功能测试以及支持对Unicode的排序等
其次是rcona,它为MySQL数据库服务器进行了改进,在功能和性能上较MySQL有着很显著的提升
该版本提升了在高负载情况下的InnoDB的性能,同时,它还为DBA提供一些非常有用的性能诊断工具,并且提供很多参数和命令来控制服务器行为
第三是,它使用了诸如google-mysql-tools、和OpenQuery对MySQL进行改造
并且,它只包含MySQL的服务器版,并没有提供相应对MySQL的Connector和GUI工具进行改进
非关系型数据库NoSQL从NoSQL的字面上理解,NoSQL就是NotOnlySQL,被业界认为是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨
NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入
盘点:开源社区那些免费的数据库软件当然,NoSQL也是随着互联网Web2
0网站的兴起才能取得长足的进步
关键的需求在于,传统的关系数据库在应付Web2
0网站,特别是超大规模和高并发的SNS类型的web2
0纯动态网站显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展
首先推荐的是,这是一个社区版
Oracle的这个,是在10月4号的甲骨文全球大全上发布的的其中一个组件,是一个集成了Hadoop、、Oracle数据库Hadoop适配器、Oracle数据库Hadoop装载器及R语言的系统
其次推荐的是Membase
Membase是NoSQL家族的一个新的重量级的成员
Membase是开源项目,源代码采用了Apache2
0的使用许可
该项目托管在GitHub
上,目前可以下载beta版本的Linux二进制包
该产品主要是由NorthScale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商
并且,Membase容易安装、操作,可以从单节点方便的扩展到集群,而且为memcached(有线协议的兼容性)实现了即插即用功能,在应用方面为开发者和经营者提供了一个比较低的门槛
做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中Memcached的部分基础代码被直接应用到了Membase服务器的前端
通过兼容多种编程语言和框架,Membase具备了很好的复用性
在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置的告警信息
Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制
另外,对存储的数据进行再分配仍然是必要的
第三推荐的是Hibari
Hibari在日语中意思为“云雀”,它是一个专为高可靠性和大数据存储的数据库引擎,可用于云计算环境中,例如webmail、SNS和其他要求T/P级数据存储的环境中
同时,Hibari也支持Java,C/C,Python,Ruby和Erlang语言的客户端
第四推荐的是memcachedb
这是一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了BerkeleyDB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是不需要严格事务约束,能够被持久化保存的应用场景,例如memcachedb被应用在新浪博客上面
第五推荐的是Leveldb
这是一个Google实现的非常高效的kv数据库,目前的版本1
2能够支持billion级别的数据量了
在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计,特别是LSM算法
LevelDB是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w
XML数据库的优势XML数据库是一种支持对XML格式文档进行存储和查询等操作的数据管理系统
在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化
目前XML数据库有三种类型:(XEDB),即能处理XML的数据库;(NXD),即纯XML数据库;(HXD),即混合XML数据库
关系数据库中的第一代XML支持是切分(或分解)文档,以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB或BLOB)
这两个方法中的任一种都尝试将XML模型强制转换成关系模型
然而,这两种方法在功能和性能上都有很大的局限性
混合型模型将XML存储在类似于DOM的模型中
XML数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制
在这里,首要要推荐的XML数据库是Sedna
它号称是一款原生态的XML数据库,提供了全功能的核心数据库服务,包括持久化存储、ACID事务、索引、安全、热备、UTF8等
实现了W3CXQuery规范,支持全文搜索以及节点级别的更新操作
第二款XML数据库是BaseX
这款数据库用来存储紧缩的XML数据,提供了高效的XPath和XQuery的实现,同时,它还提供一个前端操作界面
盘点:开源社区那些免费的数据库软件第三款推荐的是XMLDB
这款数据库使用了关系型数据库来存储任意的XML文档,因为所采用的存储机制,所以文档的搜索速度特别快,同时执行XSL转换也相当快
XMLDB同时还提供了一个PHP的模块,可以应用在Web应用中
第四块推荐的是X-Hive/DB
它是一个为需要高级XML数据处理和存储功能的软件开发者设计的强大的专属XML数据库
X-Hive/DBJavaAPI包含存储、查询、检索、转换和发表XML数据的方法
与传统关系型数据库相比,XML数据库具有以下优势:第一,XML数据库能够对半结构化数据进行有效的存取和管理
如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理
第二,提供对标签和路径的操作
传统数据库语言允许对数据元素的值进行操作,不能对元素名称操作,半结构化数据库提供了对标签名称的操作,还包括了对路径的操作
第三,当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作
XML数据库适合管理复杂数据结构的数据集,如果己经以XML格式存储信息,则XML数据库利于文档存储和检索;可以用方便实用的方式检索文档,并能够提供高质量的全文搜索引擎
另外XML数据库能够存储和查询异种的文档结构,提供对异种信息存取的支持
php+mysql数据库里面一个字段值的调用和显示问题,在线等!
【思路】
取值,解析成数组,循环输出
【效果】
【PHP】
<?php
header('Content-type:text/html;charset=utf-8');
/**
*special_str_to_arr转为数组
*2014-12-03
*
*@authorRudon<285744011@qq.com>
*@paramstring$str
*@returnarray$return
*/
functionspecial_str_to_arr($str){
$return=array();
if(!is_string($str)||trim($str)==''){
return$return;
}
/*格式化*/
$human_preg='/([a-zA-Z\d]+):/i';
$human_str=preg_replace($human_preg,'',$str);//DEMO1
$human_str=str_replace(';{',':{',$human_str);//DEMO2
$human_str=str_replace(';}','}',$human_str);//DEMO3
$human_str=preg_replace('/";(["\d]+)/i','":$1',$human_str);//DEMO4
$human_str=preg_replace('/\}(\d+)/i','},$1',$human_str);//DEMO5
$human_str=str_replace(';"',',"',$human_str);//DEMO6
$human_str=preg_replace('/([^\d])(\d+):/i','$1"$2":',$human_str);//DEMO7
/*字符串转数组*/
$arr=json_decode($human_str,true);
if(is_array($arr)&&count($arr)){
$return=$arr;//DEMO8
}
return$return;
}
/**
*get_upper_abc_by_i通过数字取大写字母4=>D1=>A
*2014-12-03
*
*@authorRudon<285744011@qq.com>
*@paramint$n
*@returnstring$return
*/
functionget_upper_abc_by_i($n=1){
$return='';
if(is_int($n)&&$n>0&&$n<=26){
$return=chr(ord('A')+$n-1);
}
return$return;
}
/*从字段取出字符串*/
$xuanxiang_str='a:4:{i:1;a:2:{s:1:"k";i:1;s:2:"xx";s:1:"你";}i:2;a:2:{s:1:"k";i:2;s:2:"xx";s:1:"我";}i:3;a:2:{s:1:"k";i:3;s:2:"xx";s:2:"你们";}i:4;a:2:{s:1:"k";i:4;s:2:"xx";s:2:"我们";}}';
$options=special_str_to_arr($xuanxiang_str);//DEMO8数组
//print_r($arr);die;
/*增加选项对应的字母*/
if(count($options)){
foreach($optionsas$k=>$v){
$n=intval($v['k']);//第几个选项
$letter=get_upper_abc_by_i($n);//对应字母
$options[$k]['letter']=$letter;//每个选项都有字母可显示
}
}
//print_r($options);die;
/*HTML代码*/
echo'<formaction=""method="post">';
echo'<h3>请选择We的意思:</h3>';
foreach($optionsas$k=>$v){
echo"<div><inputtype='radio'name='timu1'value='{$v['k']}'/><b>{$v['letter']}</b>、{$v['xx']}</div>";
}
echo'</form>';
die();
/**************示例**************
//目标格式:{"1":{"k":1,"xx":"You"},"2":{"k":2,"xx":"Me"}...}
//DEMO1=>{1;{"k";1;"xx";"你";}2;{"k";2;"xx";"我";}3;{"k";3;"xx";"你们";}4;{"k";4;"xx";"我们";}}
//DEMO2=>{1:{"k";1;"xx";"你";}2:{"k";2;"xx";"我";}3:{"k";3;"xx";"你们";}4:{"k";4;"xx";"我们";}}
//DEMO3=>{1:{"k";1;"xx";"你"}2:{"k";2;"xx";"我"}3:{"k";3;"xx";"你们"}4:{"k";4;"xx";"我们"}}
//DEMO4=>{1:{"k":1;"xx":"你"}2:{"k":2;"xx":"我"}3:{"k":3;"xx":"你们"}4:{"k":4;"xx":"我们"}}
//DEMO5=>{1:{"k":1;"xx":"你"},2:{"k":2;"xx":"我"},3:{"k":3;"xx":"你们"},4:{"k":4;"xx":"我们"}}
//DEMO6=>{1:{"k":1,"xx":"你"},2:{"k":2,"xx":"我"},3:{"k":3,"xx":"你们"},4:{"k":4,"xx":"我们"}}
//DEMO7=>{"1":{"k":1,"xx":"你"},"2":{"k":2,"xx":"我"},"3":{"k":3,"xx":"你们"},"4":{"k":4,"xx":"我们"}}
//DEMO8=>在最下面
*****************************/
/*****解析出来的数组DEMO8****
Array
(
[1]=>Array
(
[k]=>1
[xx]=>你
)
[2]=>Array
(
[k]=>2
[xx]=>我
)
[3]=>Array
(
[k]=>3
[xx]=>你们
)
[4]=>Array
(
[k]=>4
[xx]=>我们
)
)
******/
4台服务器,4个网站mysql数据库,如果实时同步
查找MYSQL主从同步方案,
已经很成熟的方案了,一主,多从,主服务器负责写入,从服务器只读。
mysql主从方案主要作用:
读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
热备,slave和master的数据“准实时”同步。
准备工作。先分别安装两台MYSQL(主服务器:192.168.84.137,从服务器:192.168.84.130)
配置MASTER。找到my.cnf文件,修改:
server-id= 1
log_bin=/var/log/mysql/mysql-bin.log
expire_logs_days= 10
max_binlog_size= 100M
binlog_do_db= study#要备份的数据库
#binlog_do_db= backup#要备份的数据库
#binlog_ignore_db= test#不需要备份的数据库
其中,虽然作为主机,但server-id不是必须为1.但一般都填1
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。(最好写在从库配置)
重启master数据库,运行检查:
mysql> show master status;#检查是否以master形式启动了。
+------------------+----------+----------------------------------+------------------+
| File| Position| Binlog_Do_DB| Binlog_Ignore_DB|
+------------------+----------+----------------------------------+------------------+
| mysql-bin.000001| 1087| study,backup| test
+------------------+----------+----------------------------------+------------------+
1 row in set(0.00 sec)
mysql> show variables like"%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin| ON
在master上为slave建立用户
mysql> grant replication slave on*.* to'replication'@'192.168.84.130' identified by'123456';
这样,主机配置完毕。
配置slave
server-id= 2#随便什么数字,多台slave注意不能为重复就可以了。
#log_bin=/var/log/mysql/mysql-bin.log#slave的binlog就没有必要再开启了。注释掉。
master-host= 192.168.84.137#master的IP
master-user= replication#上面操作中,建立的用户名
master-password= 123456#上面操作中,建立的密码
配置生效后,配置与master的连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.84.137',
-> MASTER_USER='replication',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=1087;
其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息
slave:mysql> show slave status/G;
#很多很多列
======================================================================================================
到此,可以做一些检测性的东西:
有三个地址必须调试成功,
1从库连接主库进行测试: mysql-h192.168.84.137-ureplication-p123456此处必须连接成功
2 show master status;必须有相关显示
3 show slave status;
必须为
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果Slave_IO_Running为No,可以考虑执行下面的语句,根据实际进行修改。
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=实际Position;
SLAVE START;
此时Slave_IO_Running应该恢复为Yes,同步进行了!
如果Slave_IO_Running仍然为No,则可以考虑重新启动mysql
==================================================================================================
接下来,将主机数据 copy过来
这个流程比较复杂:)各个步骤注意所在的机器
slave:mysql> stop slave;#停掉slave的复制先。
master:mysql> flush tables with read lock;#锁掉master服务器的所有表,禁止写入。
master:mysql> show master status;#还是上面的语句,查看并记录下 File mysql-bin.000002, Position 1087
+------------------+----------+----------------------------------+------------------+
| File| Position| Binlog_Do_DB| Binlog_Ignore_DB|
+------------------+----------+----------------------------------+------------------+
| mysql-bin.000001| 1087| study| test|
+------------------+----------+----------------------------------+------------------+
1 row in set(0.00 sec)
chluo@master:~$ mysqldump-uroot-pxl study> study.sql#在命令行中导出DB的数据,这里是bash操作:)
master:mysql> unlock tables;#导出完成之后,解锁。 master可以继续跑起来了。
chluo@master:~$ scp study.sql root@192.168.84.130:/#将导出的sql传送到从服务器
chluo@slave:/$ mysql-uroot-pxl study< study.sql#在slave的命令行中导入DB的数据,这里又是bash操作:)
slave:mysql> start slave;
数据的拷贝简单来说就是主从服务器上要同步的数据库结构必须是一样的
OK,本文到此结束,希望对大家有所帮助。