您的位置:首页 > 数据库 > MySQL

mysql的安装与mysql一机多实例(低版本)

2016-02-24 13:54 447 查看
mysql的安装与mysql一机多实例(低版本)

在写这篇文档之前,我查了一些资料,不知是简单的原因还是什么其他原因,各个资料都写的相当的模糊,所以,我详细的做了一次,并写成了文档分享给大家

首先我们用的是Linux redhat 4.6 系统,mysql的版本为mysql-5.0.18.tar.gz,内核版本如下图:



本文理论的东西,不在详加解释,只讲安装完成部署一机多实例。目前具本人了解,一机多实例实现的方法大体有三种,第一mysql多次安装,并安装在不同的目录,第二、就是,用mysqld_sasf来指定不同参数来实现多实例。相比较我们的讲的方法是最简单的。

我们用源码包安装mysql,我的mysql的源码包放在了根目录下的/duyunlong目录中。

#tar -zxf mysql-5.0.18.tar.gz

#cd mysql-5.0.18





解压完之后,进入mysql-5.0.18的目录中,编辑安装脚本,(当然,我个人喜欢脚本安装,不容易出错且简单。),

#touch mysql_install

#chmod 777 mysql_install

在编辑这个安装脚本之前我们来看看mysql中的安装说明文件INSTALL_SOUCE





#vim INSTALL-SOURCE





我们把上面的这段文字复制到我们的脚本文件中,如下图





我们执行脚本./mysql_install,就可以完成mysql的安装

安装完后,在/etc/有mysql的配置文件my.cnf,我们把它删除,重新建立新空文件my.cnf

#rm -fr /etc/my.cnf

#touch /etc/my.cnf

#vim /etc/my.cnf 编辑下面的配置参数,然后保存退出。

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

[mysqld1]

datadir = /var/lib/mysql1

socket = /var/lib/mysql1/mysql.sock

pid-file = /var/lib/mysql1/mysqld.pid

user = mysql

port = 3307

server-id = 100

log-bin = mysql-bin

log-error = /var/log/mysqld1.log

[mysqld2]

datadir = /var/lib/mysql2

socket = /var/lib/mysql2/mysql.sock

pid-file = /var/lib/mysql2/mysqld.pid

user = test

port = 3308

server-id = 200

log-bin = mysql-bin

log-error = /var/log/mysqld2.log

skip-slave-start

然后我们执行初始化操作

初试化(要保证mysql和test是存在的系统帐户)

/usr/bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql1

/usr/bin/mysql_install_db --user=test --datadir=/var/lib/mysql2

然后我们用mysqld_multi来启动实例,如下图:





出现了错误的原因是:由于你安装mysql的 bin 路径不在默认的搜索path中,导致在启动时无法正确的传送参数给/usr/local/mysql/libexec/mysqld

解决方法:

echo "PATH=/usr/local/mysql/bin:\$PATH" >> /etc/profile

重启系统使系统变量生效

我们可以查看下端口,如下图:





可以看到3307,3308端口都在监听状态

这样我们就完成了,mysql的安装于一机多实例的配置,然后我们来启动这些实例,并验证我们起来的实例,不是同一个数据库,如下图:





进入数据库中,切换到test数据库下创建一个表名为jobs,主要是验证,我们启动的实例是不是同一个数据库,并顺便查看test数据库下的所有表,我们看到只有jobs这个表,





我们看可以看下数据的使用者,用select user();看下当前的使用者





同样的道理我们启动第二个如下图:





为了验证启动的实例不是同一个数据库,同上面,切换到test数据库里,创建一表为duyunlong并查看所有表,发现并没有jobs这个表,那么说明我们启动的实例不在同一数据库里:如下图:





查看当前使用帐号:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: