A. 实时历史数据库的实时数据库结构
一个实时数据库系统的优劣,主要体现在它提供的功能是否齐备,系统性能是否优越,能否完成有效的数据存取,各种数据操作、查询处理、存取方法、完整性检查,保证相关的事务管理,事务的概念、调度与并发控制、执行管理及存取控制,安全性检验。
以下是力控的系统结构图系统组成:由采集站DA、数据服务器、 WEB服务器、客户端组成,同时和关系数据库进行有效的数据交换,DCS的数据经过DA进行采集,由DA SERVER送到数据服务器,数据服务器再有效的送给其它客户端。
pSpace实时数据库服务器主要由以下几部分构成:
pSpace Server:
负责整个pSpaceTM应用系统的实时数据处理、历史数据存储、统计数据处理、数据服务请求、事件触发器管理、调度管理、资源管理、系统配置等。
pSpace Data Service:
为第三方厂家的软件访问pSpaceTM Server时提供数据服务功能,包括:OPC Server、DDE Server、ODBC Router、Base API接口等
pSpace COM SDK:
COM SDK为用户开发基于pSpaceTM Server的应用程序提供基于COM对象的编程接口。
pSpace Visual ActiveX:
是一组开放的控件,如:数据控件、文本控件、棒图控件、趋势控件等,控件可以直接访问实时数据库和关系数据库的数据。
pSpace DA Server数据采集器:
pSpaceTM DA server是数据采集站的设备通讯管理服务程序,用于系统和DCS、PLC等数据源之间的数据交换,具有自动网络通信负荷平衡功能和断线数据缓冲功能。
pSpace的Web服务器
使用IIS作为Web管理服务器,用图形客户端生成Web网页;
使用pSpace Visual ActiveX自行创建Web服务器和Web网页;
使用pSpace Webserver,用图形客户端生成Web网页;
pSpace 客户端
监控组态软件:力控Forcecontrol系列;
Microsoft Excel:采用标准EXCEL加载宏方式通过网络访问数据库;
“瘦”客户端:Microsoft Internet Explorer 5.0或以上版本的浏览器;
Visual ActiveX:pSpace可视化控件工具包是为建立客户端连接而提供的客户端产品;它包括一组ActiveX控件,如:数据控件、文本控件、棒图控件、趋势控件等;
二次开发工具及访问接口
标准访问接口供客户端程序调用或第三方软件访问使用,因此接口的完整性、开放性决定实时数据库二次开发的性能的优劣,pSpace访问接口及开发工具主要包括以下几种:
1)DBI API
DBI是一套实时数据库访问接口,给用户提供底层编程接口,通过它可以与客户端连接,对数据库进行数据读写,满足继线重连功能,可以获取数据库结构信息,动态控制变化数据集,DBI接口采用了快速数据访问机制,数据访问吞吐量可达到11万次/秒,可以适合过程仿真、优化控制、专家诊断等多种行业应用。
2)COM SDK
SDK是为用户开发基于pSpaceTM Server的应用程序提供基于COM对象的编程接口,用COM SDK编写的一个实例可以同时连接多个Server,也可以用COM SDK同时建立多个实例,提供面向对象的类库供用户开发应用程序,用户使用该工具编程可以提高开发效率,该工具可以在VC++,VB,VBScript,.net等开发环境下使用。
3)OLE DB Provider
应用程序提供pSpace Server数据库的ADO访问接口。
4)DAI SDK
pSpace的数据源采集接口的开放工具,DAI采集接口软件都可以单独运行在一台网络结点机,并可在远程对其进行配置与监控,具备以下功能:
DAI 可以直接利用原有的力控组态软件的驱动程序;
DAI 具备断线缓存功能;另外DAInterface还要增加几个接口;
DAI 支持XML、CSV文件接口,可采集离线数据源。
实时数据库性能指标:
从实时数据库运行环境来看,实时数据库系统的除了自身的软件性能外,还取决于所使用的操作系统、硬件环境等。
单台服务器容量可达12,0000点以上;
历史数据库支持unix linux windows等64位操作系统;
完整的事件记录系统,所有操作员的动作均被检查并记录,可作为跟踪依据;
功能强大的压缩算法:按高压缩格式保存数据,采用死区和变化率压缩,压缩比为1:30;
支持优化旋转门算法对历史数据进行压缩;
专用的磁盘存贮算法来保证对长年形成的海量历史数据的快速查询;
支持的浮点型、布尔型、字符串型、等常见数据类型及“任意”类型;
数据库吞吐量支持每秒写入/查询20,000个数据点;
支持历史数据库在线备份,多服务器并发处理;
支持数据库冗余;
IO数据采集断线重连:通讯故障能够自动恢复,I/O时间同步;自动补偿 PC 时钟偏差。
构建企业信息门户
力控pSpace可以为企业在创建基于Internet/Intranet的网络信息门户时提供完整的软件解决方案,同时支持PDA掌上终端访问力控的WEB服务器。
对pSpaceTM Server的数据进行Web管理有以下几种方式:
使用IIS作为Web管理服务器,将通用流程画面转换为Web网页,整个系统与WIN系统无缝集成,基于WEB组态的工具控件包通过相应的检索便可以进行查询,能够直接生成WEB页面;
使用组态软件创建Web服务器和Web网页然后发布;
用户使用pSpaceTM Visual ActiveX自行创建Web服务器和Web网页;
用户可以使用自己熟悉的网站开发工具如:FrontPage、Dreamweaver、ASP等创建主页,设立网站,并在网页中嵌入pSpace Visual ActiveX中的控件建立pSpaceTM Server的数据显示。
特点如下:
Web页面与过程画面的高度同步
pSpace Web Server实现了服务器端与客户端画面的高度同步, 在浏览器上可以同时浏览多个过程画面, 看到的图形界面与通用组态软件生成的过程画面效果完全相同,数据采用变化传输的方式,具有更快的运行与数据更新速度。
企业级Web服务器
pSpace Web Server专为构建企业级Web服务器而设计,具备高容量的数据吞吐能力和良好的健壮性,力控Web Server支持多达500的客户端的同时访问。
完善的安全机制
pSpace Web Server提供完善的安全管理机制。只有授权的用户才能修改过程参数。使用pSpace Web Server时,管理员尽可安心,不必担心非法或未授权的修改。
客户端
力控实时历史数据库管理系统提供了基本的客户端组态工具,开放的接口可以高级应用中的资产管理、设备诊断等管理客户端的开发,每个客户端应用软件都可以与pSpace Server运行在同一台计算机上,也可以分布式地运行在其它网络结点机上。
1)管理工具Admin
pSpace系统配置工具。包括:在线配置数据库点、采集接口、监控服务器和采集器状态,启、停远程服务等。
2)Forcecontrol组态软件
完成生产调度系统的实时监控,曲线分析、生产报表、报警、事件等。
3)Excel Add-In:Excel加载宏,完成功能包括:
查询原始数据;
查询当前数据;
利用索引点查询过滤数据;
查询数据的采样值;
查询统计值(最小值、最大值、平均值、标准方差、累计值、计数值);
显示、导入、导出标签;
导入、导出数据;
显示、导入、导出消息;
显示采集接口;
4)pBatch
批量生产工艺数据的检索和表示,可跟踪与批量生产相关的各种信息。
5)Alarm Server
报警服务器。
6)SNMP Agent:
网络管理工具,可以在线诊断网络设备。
上层应用工具
报表工具:
可以在力控®的万能报表工具中获取实时数据库的各种过程数据,完成数据的查询与计算;建立易用、灵活、强大的报表系统。
设备运行诊断工具:
生产设备运行诊断工具可以方便地了解运行设备故障事件发生的时间、地点、状态和原因,从而降低设备维护成本。
趋势组记录工具:
提供了非常丰富的趋势记录功能,实时趋势和历史趋势记录允许趋势曲线多层重叠,可以通过颜色区分好数据和坏数据,可以显示数据的采样周期、数值精度和曲线变化情况。
图形分析工具:
包括直方图、饼图、面积图等十种图形分析工具,非常方便数据的显示与比较。图形具有透明性,从而更加容易地观察到数据之间的差别。
趋势曲线放大镜:
利用趋势曲线的放大镜工具,可以放大任何时间的实时和历史曲线,非常方便地分析时间序列的数据。通过趋势曲线的滚动按钮,可以前后滚动查看趋势曲线的变化情况。
成本核算工具:
内嵌成本核算模板工具,包括核算体系(生产基本单位核算、财务核算及其报表)、预算和考核体系、信息实时查询(收率、消耗、能耗等)、成本统计报表。
质量分析工具:
提供质量分析模板工具,将生产过程的实时数据和质量点的采样数据进行比较,在线进行评估,以便生产管理人员及时掌握各个产品的质量数据。长期保存质检数据,便于质量分析。
安全性及用户管理
网络安全
在进行项目设计时,在数据采集站可进行双网卡配置以保证生产网和管理网的物理隔离,DA SERVER采集站软件设计中可以保证数据单项传输,防止管理网的干扰生产网。
用户管理
实时数据库提供了完备的安全保护机制,以保证生产过程的安全可靠,用户管理具备多个级别,并可根据级别限制对重要工艺参数的修改,以有效避免生产过程中的误操作。
实时数据库提供了安全区的概念,同级别,不同安全区的数据不可以互相操作,保证了数据的分布式的管理。
提供基于远程的用户管理,增加更多的用户级别及安全区,管理所有用户的远程登陆信息。
加密管理:
支持工程加密,用户可以通过加密锁自己定义工程密码,没有此加密锁任何非法用户无法侵入,保护了自己的工程结构;
操作事件:
可以详细的记录操作事件和系统事件,方便事故追忆;
开机自动运行设置、有效的屏蔽系统键盘,可以防止非法用户入侵;
数据采集器DA SERVER
DA SERVER 是Server 与各种数据源之间的接口,DA SERVER具有自动网络通信负荷平衡功能和断线数据缓冲功能,DA SERVER可以和Server运行在同一服务器内,也可以运行在不同的前端机上,通过TCP/IP与Server通信。
DA SERVER主要有以下几种:
DA SERVER:专用的数据采集服务器,通过它中心服务器可以采集各种DCS、PLC、FCS等I/O设备的数据,DA SERVER可以集成HMI/SCADA组态软件的数据采集接口,对于已经安装运行了组态软件的SCADA工作站,通过该数据采集器可以很方便地将SCADA数据采集到Server中。
MOPC:通过该数据采集器,Server可以采集其他各种第三方的OPC Server的数据。
性能
支持通过RS232、RS422、RS485、电台、电话轮巡拨号、以太网、移动GPRS、CDMA、GSM网络等方式和设备进行通讯;
开发环境下具备在线诊断设备通讯功能,可以动态的打开、关闭设备,通讯故障后具备自动恢复功能;
支持控制设备和控制网络冗余,控制设备进行切换时,通讯会自动切换;
支持多种协议的设备挂在一条通讯链路上与DA SERVER进行通讯,方便电台等远程通讯;
支持与设备采取主从、主主、从主等多种交互机制来进行通讯,比如对MODBUS标准协议设备,支持主与从2种方式与设备通讯;
可以采集带时间戳的数据,毫秒级数据采集速率,实现历史数据向实时数据库的回插功能,可以采集记录仪、录波器数据,支持SOE,完成事件监视。
支持的设备种类
支持主流的DCS、PLC、DDC、现场总线、智能仪表等1000多种厂家设备的通讯;也可以按照用户提出的通信协议和硬件接口,在较短时间内开发新的驱动程序。
无所不在的移动通讯
所有设备的驱动程序支持通过移动GPRS、CDMA网络与控制设备进行通讯,DA SERVER节点与其远程DA SERVER节点也可以进行移动通讯;
DA SERVER移动数据服务器与远程设备的通讯为并发处理、完全透明的解决方案,消除了一般软件采用虚拟串口方式造成数据传输不稳定的隐患,有效的流量控制机制保证了远程应用中节省通讯费用;
支持设备主动通过GPRS上传数据的方式进行数据传输。
典型企业信息化应用
胜利油田油气集输公司是胜利油田从事油气集输的专业化生产企业,主要担负胜利油田原油外输、天然气生产集输及轻烃生产任务。管理着9个气田,187口气井,24座集配气站,总长240公里的天然气输气管道和220公里的输油管道,8座大中型输油站库,2座压气站和3套轻烃回收装置。所辖13个三级单位,具有点多、线长、面广、易燃易爆、高温高压的特点。
该系统对油田的原油库和压气站等身产装置进行网络信息处理。该信息系统集成了多种设备,信息集成使用了OPC、DDE、ODBC、PROFIBUS、MODBUS、RS485等多种网络采集方式进行数据处理,是一个典型的分布式采集,集中管理的大型网络信息化系统。
胜利油田原油库控制系统主要选用了SIEMENS 控制系统,在压气站中, 50万岗位使用Honeywell的S9000型号的DCS控制系统;SW64岗位是美国库伯公司的RR控制器;二次增压岗位使用日本Omron的控制器;离心机岗位是横河CS1000型号的DCS控制系统;配气岗位是美国SIXNET公司的ST-GT-1210控制器;热煤炉岗位控制系统是三菱的PLC;配电岗位设有许继的配电保护及监控系统。
pSpace在应用中有效的集成了以上系统,从监测和考核原材料及水、电、气、风的用量入手,减少能耗物耗,对优化生产过程,提高生产运行效率起到了关键的作用。
典型先进控制方案
pSpace支持与国外的各种数据库进行数据交互,比如INFOPLUS、PI、PHD等,通过pSpace SERVER可以在国内外的各种平台上进行上层应用、专家诊断、先进控制等,下面是一个电厂设备诊断的应用,pSpace SERVER通过各种接口将现有SIS系统、小神探系统、新增的断路器和各种辅机监测系统集成为一个整体,其中,状态检修系统需要的绝大部分实时数据都取自SIS系统的PI实时数据库,因此,PI数据库和力控实时数据库之间的接口是整个系统集成的关键,接口Gateway的性能将直接决定整个状态检修系统的性能。
B. 什么是MySql数据库
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。
MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。
可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。
1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。
1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。
紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。
MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。
MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、php、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
1999-2000年,有一家公司在瑞典成立了,叫MySQL AB (AB是瑞典语“股份公司”的意思)。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。
2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。
如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。
MySQL与InnoDB的正式结合版本是4.0。
到了MySQL5.0,2003年12月,开始有View,存储过程之类的东东,当然,其间, bug也挺多。
在2008年1月16号 MySQL被Sun公司收购。
最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。
据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。
时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE MYTABLE;
7:往表中加入记录
mysql> insert into MYTABLE values (”hyq”,”M”);
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:删除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
全局管理权限对应解释:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2. 方法一 SQL脚本形式
操作步骤如下:
2.1. 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqlmp命令行,导出SQL脚本。
2.1.1 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2 用mysqlmp命令行
命令格式
mysqlmp -u 用户名 -p 数据库名 > 数据库名.sql
范例:
mysqlmp -u root -p abc > abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2. 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3. 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1 准备原始文件
用tar打包为一个文件
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
1.导表结构
使用MySQL生成create脚本的方法。找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的。
2.导表数据
在MSSQL端使用bcp导出文本文件:
bcp “Select * FROM dbname.dbo.tablename;” queryout tablename.txt -c -Slocalhostdb2005 -Usa
其中”"中是要导出的sql语句,-c指定使用 进行字段分隔,使用 进行记录分隔,-S指定数据库服务器及实例,-U指定用户名,-P指定密码.
在MySQL端使用mysqlimport 导入文本文件到相应表中
mysqlimport -uroot -p databasename /home/test/tablename.txt
其中-u指定用户名,-p指定密码,databasename指定数据库名称,表名与文件名相同
MySQL备份恢复数据的一般步骤
备份一个数据库的例子:
1、备份前读锁定涉及的表
mysql>LOCK TABLES tbl1 READ,tbl1 READ,…
如果,你在mysqlmp实用程序中使用--lock-tables选项则不必使用如上SQL语句。
2、导出数据库中表的结构和数据
shell>mysqlmp --opt db_name>db_name.sql
3、启用新的更新日志
shell>mysqladmin flush-logs
这样可以记录你备份后的数据改变为恢复数据准备。
4、解除表的读锁
mysql>UNLOCK TABLES;
为了加速上述过程,你可以这样做:
shell> mysqlmp --lock-tables --opt db_name>db_name.sql; mysqladmin flush-logs
但是这样可能会有点小问题。上命令在启用新的更新日志前就恢复表的读锁,
在更新繁忙的站点,可能有备份后的更新数据没有记录在新的日志中。
现在恢复上面备份的数据库
1、对涉及的表使用写锁
mysql>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…
2、恢复备份的数据
shell>mysql db_name < db_name.sql
3、恢复更新日志的内容
shell>mysql --one-database db_name < hostname.nnn
假设需要使用的日志名字为hostname.nnn
4、启用新的更新日志
shell>mysqladmin flush-logs
5、解除表的写锁
mysql>UNLOCK TABLES;
希望上面的例子能给你启发,因为备份数据的手法多种多样,你所使用的和上面所述可能大不一样,但是对于备份和恢复中,表的锁定、启用新的更新日志的时机应该是类似的,仔细考虑这个问题。
选择InnoDB作为存储引擎
大型产品的数据库对于可靠性和并发性的要求较高,InnoDB作为默认的MySQL存储引擎,相对于MyISAM来说是个更佳的选择。
优化数据库结构
组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。
设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。·对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。
仅创建你需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新操作的执行时间。
InnoDB的ChangeBuffering特性
InnoDB提供了changebuffering的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表操作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的changebuffer将会更改缓存到辅助索引条目,从而避免因不能立即从磁盘读取页面而导致耗时的I/O操作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL5.5及更高版本。
InnoDB页面压缩
InnoDB支持对表进行页面级的压缩。当写入数据页的时候,会有特定的压缩算法对其进行压缩。压缩后的数据会写入磁盘,其打孔机制会释放页面末尾的空块。如果压缩失败,数据会按原样写入。表和索引都会被压缩,因为索引通常是数据库总大小中占比很大的一部分,压缩可以显着节约内存,I/O或处理时间,这样就达到了提高性能和伸缩性的目的。它还可以减少内存和磁盘之间传输的数据量。MySQL5.1及更高版本支持该功能。
注意,页面压缩并不能支持共享表空间中的表。共享表空间包括系统表空间、临时表空间和常规表空间。
使用批量数据导入
在主键上使用已排序的数据源进行批量数据的导入可加快数据插入的过程。否则,可能需要在其他行之间插入行以维护排序,这会导致磁盘I/O变高,进而影响性能,增加页的拆分。关闭自动提交的模式也是有好处的,因为它会为每个插入执行日志刷新到磁盘。在批量插入期间临时转移唯一键和外键检查也可显着降低磁盘I/O。对于新建的表,最好的做法是在批量导入后创建外键/唯一键约束。
一旦你的数据达到稳定的大小,或者增长的表增加了几十或几百兆字节,就应该考虑使用OPTIMIZETABLE语句重新组织表并压缩浪费的空间。对重新组织后的表进行全表扫描所需要的I/O会更少。
优化InnoDB磁盘I/O
增加InnoDB缓冲池大小可以让查询从缓冲池访问而不是通过磁盘I/O访问。通过调整系统变量innodb_flush_method来调整清除缓冲的指标使其达到最佳水平。
MySQL的内存分配
在为MySQL分配足够的内存之前,请考虑不同领域对MySQL的内存需求。要考虑的关键领域是:并发连接——对于大量并发连接,排序和临时表将需要大量内存。在撰写本文时,对于处理3000+并发连接的数据库,16GB到32GB的RAM是足够的。
内存碎片可以消耗大约10%或更多的内存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等缓存和缓冲区要消耗大约80%的已分配内存。
日常维护
定期检查慢的查询日志并优化查询机制以有效使用缓存来减少磁盘I/O。优化它们,以扫描最少的行数,而不是进行全表扫描。
其他可以帮助DBA检查和分析性能的日志包括:错误日志、常规查询日志、二进制日志、DDL日志(元数据日志)。
定期刷新缓存和缓冲区以降低碎片化。使用OPTIMIZETABLE语句重新组织表并压缩任何可能被浪费的空间。