Linux下一个服务器安装多个mysql
一. 为了统一安装的版本,先卸载已经安装的mysql
卸载已经安装的mysql 1. 查找已安装的myslq 版本:
#rpm -q mysql
在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-4.el5_5.3 如果通过该命令,提示没有安装mysql,而你确定已安装,可以使用下面命令,尝试一下:
#rpm -qa | grep -i mysql
MySQL-server-5.5.11-1.rhel5
2. 强制卸载(将要卸载的必须是上面查询到的mysql的全称包括版本号,此处是在无法正常卸载时不得已的操作,强制卸载,必须用参数--nodeps):
#rpm -e --nodeps mysql-5.0.77-4.el5_5.3
3.成功卸载,系统不提示任何信息
二. 安装前请先安装所有依赖的包,或者安装过程中看见缺少什么包就安装什么包
三. 安装第一个mysql mysql1:使用默认配置
root@localhost usr]# groupadd mysql
[root@localhost usr]# useradd -g mysql mysql
[root@localhost usr]# cd /usr/local
[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz
[root@localhost local]# cd mysql-5.0.51
[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql
[root@localhost mysql-5.0.51]# make
[root@localhost mysql-5.0.51]# make install
[root@localhost mysql-5.0.51]# cd ../mysql
[root@localhost mysql]# ./bin/mysql_install_db --user=mysql
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql var
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# ./bin/mysqld_safe --user=mysql &
[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my.cnf
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server
/etc/rc.d/init.d/mysql1
[root@localhost mysql]# chkconfig --add mysql1
[root@localhost mysql]# chkconfig --level mysql1 345 on
[root@localhost mysql]# chkconfig --list mysql1
[root@localhost mysql]#
四. 安装第二个mysql
mysql2使用3307端口,配置文件为:/etc/my2.cnf
root@localhost usr]# groupadd mysql
[root@localhost usr]# useradd -g mysql mysql
[root@localhost usr]# cd /usr/local
[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz
[root@localhost local]# cd mysql-5.0.51
[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql5
[root@localhost mysql-5.0.51]# make
[root@localhost mysql-5.0.51]# make install
[root@localhost mysql-5.0.51]# cd ../mysql5
[root@localhost mysql]# ./bin/mysql_install_db --user=mysql
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql var
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# ./bin/mysqld_safe --user=mysql &
[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my2.cnf
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server /etc/rc.d/init.d/mysql2
[root@localhost mysql]# chkconfig --add mysql2
[root@localhost mysql]# chkconfig --level mysql2 345 on
[root@localhost mysql]# chkconfig --list mysql2
[root@localhost mysql]#
配置mysql2
vim /etc/rc.d/init.d/mysql2
修改下面的内容:
将目录/usr/local/mysql改为当前安装的mysql目录,即/usr/local/mysql5
将引用的配置文件名称由my.cnf改为当前要使用的配置文件my2.cnf
在$bindir/mysqld_safe中添加--defaults-file=/etc/my2.cnf $bindir/mysqld_safe --defaults-file=/etc/my2.cnf --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
注意: 修改完后datadir需要使用如下命令来初始化
datadir: ./bin/mysql_install_db --datadir=/usr/local/mysql5/var --user=mysql
配置my2.cnf
vim /etc/my2.cnf修改相关的端口、socket
[client]
#password = your_password port = 3307
socket = /tmp/mysql5.sock # The MySQL server [mysqld]
port = 3307
socket = /tmp/mysql5.sock
五. 启动mysql1和mysql2
Mysql1:
cd /etc/rc.d/init.d/
./mysql1 start
./mysql2 start
六. 其他服务器命令行客户端链接mysql mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3306
mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3307
七. 主要错误与解决: q. Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql /var
[root@localhost mysql]# chgrp -R mysql . q. -bash: /etc/rc.d/init.d/mysqld: Permission denied a. chmod +x /etc/rc.d/init.d/mysqld q. Starting MySQL.Manager of pid-file quit without updating file.[FAILED] a. /usr/local/mysql/bin/mysql_install_db --user=mysql
===========================================================================================
在一台服务器上,可以通过mysqld_multi配置多个Mysql实例运行。
假设服务器上现在已经运行一个MYSQL实例,数据目录是/var/lib/mysql,端口是3306,所用的SOCKET连接文件位于/tmp/mysql.sock。那么可以按照如下步骤,再启动一个或者多个实例。
一,创建新实例的数据目录
新启动MySQL实例之后,其数据位于哪个目录,就是实例相关的数据库文件都准备放在哪个目录下,假定我把它们放在 /var/lib/mysql2 目录下。
mkdir /var/lib/mysql2 创建目录。
chown mysql /var/lib/mysql2 给mysql用户权限。
二,创建数据库
这一步是在刚刚建立的目录下面,初始化数据库。
bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql2 // 将mysql等系统数据库安装到实例准备运行的目录。
三,配置文件
修改配置文件 my.cnf,这也是最重要的一步。主要是重新设置每个实例的pid-file,socket,port等属性,我的配置文件 如下:
[sql]
[mysqld_multi]
mysqld = /install/mysql/bin/mysqld_safe
mysqladmin = /install/mysql/bin/mysqladmin
user = root
# The MySQL server
[mysqld1]
port = 3306
socket = /tmp/mysql.sock
datadir =/var/lib/mysql
pid-file =/var/lib/mysql/mysql.pid
user =mysql
log-bin =master-bin
log-bin-index =master-bin.index
server-id =1
[mysqld2]
port = 3307
socket =/tmp/mysql2.sock
datadir =/var/lib/mysql2
pid-file =/var/lib/mysql2/mysql.pid
user =mysql
四,启动实例
在配置文件配置好之后,就可以启动了
/install/mysql/bin/mysqld_multi start 2 // 这样就启动了。
五,打开控制台
在启动新的实例之后,也可以打开控制台操作,但要指定socket和端口等信息,如:
mysql --user=root --port=3307 --socket=/tmp/mysql2.sock -p
===================================================================================
步骤如下:
一、编译安装两个mysql,步骤如下
下载Mysql ,此处以 为例
安装第一个数据库(主数据库)
(红色部分为默认数据库文件路径,可改成其他如:data、var等)
tar zxvf mysql-6.0.11-alpha.tar.gz
cd mysql-6.0.11-alpha
./configure --prefix=/usr/local/mysql --sysconfdir=/usr/local/mysql/etc --with-tcp-port=3306 --localstatedir=/usr/local/mysql/localstate --with-unix-socket-path=/tmp/mysql3306.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-plugins=innobase --with-mysqld-user=mysql --with-charset=utf8 --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
make && make install
安装第二个数据库(从数据库)
tar zxvf mysql-6.0.11-alpha.tar.gz
cd mysql-6.0.11-alpha
./configure --prefix=/usr/local/mysql3307 --sysconfdir=/usr/local/mysql3307/etc --with-tcp-port=3307 --localstatedir=/usr/local/mysql3307/localstate --with-unix-socket-path=/tmp/mysql3307.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-plugins=innobase --with-mysqld-user=mysql --with-charset=utf8 --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
make && make install
如需支持所有字符集 修改为:--with-extra-charsets=all 即可
二、分别初始化数据库脚本(在编译目录执行下)
scripts/mysql_install_db --basedir=/usr/local/mysql/ --user=mysql
scripts/mysql_install_db --basedir=/usr/local/mysql3307/ --user=mysql
注:可用--datadir=PATH参数指定数据库文件路径,默认为编译时-- localstatedir
三、修改从库配置文件
拷贝配置文件:
cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql3307/etc/my.cnf
四、修改各个数据库的my.cnf文件
主要内容如下:
添加InnoDB支持:
[client]
#password = your_password
port = 3307 --数据库端口号
socket = /tmp/mysqls.sock --sock文件路径
default-character-set=utf8 --客户端UTF8连接
[mysqld]
port = 3307 --数据库端口号
socket = /tmp/mysqls.sock --sock文件路径
default-storage-engine=INNODB
default-character-set=UTF8 --默认字符集
init_connect='SET NAMES utf8' --以UTF8连接
skip-name-resolve --取消DNS反向解析
lower_case_table_names=1 --不区分表名大小写
启动数据库(进入各自目录)
主:./mysqld_safe &
从:./mysqld_safe &
配置开启自动:
cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql
cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql3307
修改/etc/init.d/mysql3007中basedir与datadir为即可
basedir=/usr/local/mysql3307
datadir=/usr/local/mysql3307/var
停止数据库
主:./mysqladmin shutdown
从:./mysqladmin shutdown
以上各项配置都可以自行修改,以满足业务需求。