windows下怎么安装mysql

windows下怎么安装mysql,第1张

步骤/方法1打开下载的安装文件,出现如下界面:2mysql安装向导启动,点击“next”继续。3选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程。4在“MySQL Server(MySQL服务器)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。点选“Change...”,手动指定安装目录。5确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。6正在安装中,请稍候,直到出现下面的界面。7点击“next”继续,出现如下界面。8现在软件安装完成了,出现上面的界面,这里有一个很好的功能,mysql 配置向导,不用向以前一样,自己手动乱七八糟的配置my.ini 了,将“Configure the Mysql Server now”前面的勾打上,点“Finish”结束软件的安装并启动mysql配置向导。9点击“Finsh”,出现如下界面,MySQL Server配置向导启动。10点击“next”出现如下界面:选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。选择服务器类型,“Developer Machine(开发测试类,mysql 占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据服务器,mysql占用所有可用资源)”,大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),随自己的用途而选择了,我这里选择“Transactional Database Only”,按“Next”继续。对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用默认位置,直接按“Next”继续。选择您的网站的一般mysql 访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Online Transaction Processing(OLTP)”,自己的服务器,应该够用了,按“Next”继续。是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql 数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。还有一个关于防火墙的设置“Add firewall exception ……”需要选中,将MYSQL服务的监听端口加为windows防火墙例外,避免防火墙阻断。按“Next”继续。注意:如果要用原来数据库的数据,最好能确定原来数据库用的是什么编码,如果这里设置的编码和原来数据库数据的编码不一致,在使用的时候可能会出现乱码。这个比较重要,就是对mysql默认数据库语言编码进行设置,第一个是西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set 那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb

1. 获取

这个不必多言吧,到 MySQL 网站上面下载就是了。MySQL Cluster 的英文部署测试手册很简明,这里和其内容基本一样。喜欢读英文版的朋友可以直接下载,略过本文。

2. 安装

先解压,然后创建一个 symbolic link:

michael@linux:~$ tar xvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar

michael@linux:~$ ln -s mysql-cluster-gpl-7.2.4-linux2.6-x86_64 mysqlc

如果你愿意,可以将~/mysqlc/bin加入到你的 path 里,方便使用。

3. 配置

作为在开发环境上第一次部署,还是以测试为主要目的。一个完整的 MySQL Cluster 由 MySQL Server,Data Nodes,Management Node 三部分组成。首先我们为它们创建一些必须的目录:

michael@linux:~$ mkdir mysql-cluster

michael@linux:~$ cd mysql-cluster

michael@linux:~$ mkdir conf ndb_data mysqld_data

然后在conf目录下创建如下两个文件,分别是config.ini和my.cnf,内容如下:

config.ini

用于 MySQL Server 的配置,端口号port根据你自己的情况设定。

[mysqld]

ndbcluster

datadir=/home/user1/my_cluster/mysqld_data

basedir=/home/user1/mysql-cluster

port=5050

my.cnf

该文件用于配置各结点的 NodeId 和 Data Nodes 与 Management Node 的数据目录。

[ndb_mgmd]

hostname=localhost

datadir=/home/user1/my_cluster/ndb_data

NodeId=1

[ndbd default]

noofreplicas=2

datadir=/home/user1/my_cluster/ndb_data

[ndbd]

hostname=localhost

NodeId=3

[ndbd]

hostname=localhost

NodeId=4

[mysqld]

NodeId=50

这时你的目录结构应该如下:

~

+-- /mysql-cluster-gpl-7.2.4-linux2.6-x86_64

+-- /mysqlc ->mysql-cluster-gpl-7.2.4-linux2.6-x86_64

+-- /mysql-cluster

+-- /conf

+-- /ndb_data

+-- /mysqld_data

4. 运行

MySQL Cluster 的启动顺序是有要求的,如下:

Management Node

Data Nodes

MySQL Server

命令如下:

michael@linux:~$ cd ../mysql-cluster

michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/mysql-cluster/conf/

michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndbd -c localhost:1186

michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndbd -c localhost:1186

检查已经启动的结点的状态,命令为:

poecahnt@linux:~$ $HOME/mysqlc/bin/ndb_mgm -e show

输出如下:

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=3@127.0.0.1 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master)

id=4@127.0.0.1 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)

id=1@127.0.0.1 (mysql-5.5.19 ndb-7.2.4)

[mysqld(API)] 1 node(s)

id=50 @127.0.0.1 (mysql-5.5.19 ndb-7.2.4)

表示已经可以启动 MySQL Server 了。最后启动 MySQL Server,命令为:

michael@linux:~/mysql-cluseter$ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &

输出信息如下:

120223 15:29:02 InnoDB: The InnoDB memory heap is disabled

120223 15:29:02 InnoDB: Mutexes and rw_locks use GCC atomic builtins

120223 15:29:02 InnoDB: Compressed tables use zlib 1.2.3

120223 15:29:02 InnoDB: Using Linux native AIO

120223 15:29:02 InnoDB: Initializing buffer pool, size = 128.0M

120223 15:29:02 InnoDB: Completed initialization of buffer pool

120223 15:29:02 InnoDB: highest supported file format is Barracuda.

120223 15:29:02 InnoDB: Waiting for the background threads to start

120223 15:29:03 InnoDB: 1.1.8 startedlog sequence number 1595675

120223 15:29:04 [Note] NDB: NodeID is 50, management server 'localhost:1186'

120223 15:29:04 [Note] NDB[0]: NodeID: 50, all storage nodes connected

120223 15:29:04 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds

120223 15:29:04 [Note] Starting Cluster Binlog Thread

120223 15:29:04 [Note] Event Scheduler: Loaded 0 events

120223 15:29:04 [Note] $HOME/mysqlc/bin/mysqld: ready for connections.

Version: '5.5.19-ndb-7.2.4-gpl' socket: '/tmp/mysql.sock' port: 5050 MySQL Cluster Community Server (GPL)

120223 15:29:05 [Note] NDB: Creating mysql.ndb_schema

120223 15:29:08 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_schema

120223 15:29:09 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)

120223 15:29:09 [Note] NDB: Creating mysql.ndb_apply_status

120223 15:29:09 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_apply_status

120223 15:29:09 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)

120223 15:29:09 [Note] NDB: missing frm for mysql.ndb_index_stat_sample, discovering...

120223 15:29:09 [Note] NDB: missing frm for mysql.ndb_index_stat_head, discovering...

2012-02-23 15:29:10 [NdbApi] INFO -- Flushing incomplete GCI:s <579/14

2012-02-23 15:29:10 [NdbApi] INFO -- Flushing incomplete GCI:s <579/14

120223 15:29:10 [Note] NDB Binlog: starting log at epoch 579/14

120223 15:29:10 [Note] NDB Binlog: ndb tables writable

5. 测试

连接 MySQL Server 进行测试,确认可以用ndb存储引擎来创建数据库中的表,如下:

michael@linux:~$ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5050

mysql>create database clusterdb

mysql>use clusterdb

mysql>insert into simples values (1),(2),(3),(4)

mysql>select * from simples

+----+

| id |

+----+

| 3 |

| 1 |

| 2 |

| 4 |

+----+

6. 停止

MySQL Cluster 必须手动停止,Data Nodes 可以用 ndb_mgm 来停止:

michael@linux:~$ $HOME/mysqlc/bin/mysqladmin -h 127.0.0.1 -P 5050 shutdown

如果提示:

/home/michael/mysqlc/bin/mysqladmin: shutdown failederror: 'Access deniedyou need (at least one of) the SHUTDOWN privilege(s) for this operation'

则在shutdown命令前加上sudo。

michael@linux:~$ $HOME/mysqlc/bin/ndb_mgm -e shutdown

正常停止的信息类似如下:

120223 16:44:11 [Note] /home/michael/mysqlc/bin/mysqld: Normal shutdown

michael@linux:~/mysql-cluster$ 120223 16:44:11 [Note] Event Scheduler: Purging the queue. 0 events

120223 16:44:13 [Warning] /home/michael/mysqlc/bin/mysqld: Forcing close of thread 2 user: 'michael'

120223 16:44:13 [Note] Stopping Cluster Utility thread

120223 16:44:13 [Note] Stopping Cluster Index Stats thread

120223 16:44:13 [Note] Stopping Cluster Binlog

120223 16:44:13 [Note] Stopping Cluster Index Statistics thread

120223 16:44:14 InnoDB: Starting shutdown...

120223 16:44:15 InnoDB: Shutdown completedlog sequence number 1595675

120223 16:44:15 [Note] /home/michael/mysqlc/bin/mysqld: Shutdown complete

7. 总结

有序启动:Management Node,Data Nodes,MySQL Server

配置项与各节点的对应

每个结点都单独启动

Management Node 提供状态查看等多种功能

当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。

根据个人经验,MySQL执行一个sql的过程如下:

1,接收到sql2,把sql放到排队队列中 3,执行sql4,返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间。其实这二个是一回事,等待的同时,肯定有sql在执行。所以我们要缩短sql的执行时间。

mysql中有一种机制是表锁定和行锁定,为什么要出现这种机制,是为了保证数据的完整 性,我举个例子来说吧,如果有二个sql都要修改同一张表的同一条数据,这个时候怎么办呢,是不是二个sql都可以同时修改这条数据呢?很显然mysql 对这种情况的处理是,一种是表锁定(myisam存储引擎),一个是行锁定(innodb存储引擎)。表锁定表示你们都不能对这张表进行 *** 作,必须等我对 表 *** 作完才行。行锁定也一样,别的sql必须等我对这条数据 *** 作完了,才能对这条数据进行 *** 作。如果数据太多,一次执行的时间太长,等待的时间就越长,这 也是我们为什么要分表的原因。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8443134.html

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

发表评论

登录后才能评论

评论列表(0条)

保存