生产环境中,一台mysql物理机服务器会安装多台mysql服务器,但是在默认情况下一台linux物理机只能安装运行一台mysql服务器。下面就是实现mysql单机多实例的方法:
本次实验环境为rhel4.6.,实验用到的mysql软件是rhel4.6系统盘自带的rpm包。
实验过程:
#mount /dev/cdrom /media
#cd /media/RedHat/RPMS/
#rpm -Uvh gcc-3.4.6-9.i386.rpm gcc-c++-3.4.6-9.i386.rpm
#rpm -Uvh ncurses-devel-5.4-15.el4.i386.rpm
#rpm -Uvh mysql-4.1.20-2.RHEL4.1.0.1.i386.rpm
#rpm -Uvh mysql-devel-4.1.20-2.RHEL4.1.0.1.i386.rpm mysql-server-4.1.20-2.RHEL4.1.0.1.i386.rpm openssl-devel-0.9.7a-43.17.el4_6.1.i386.rpm perl-DBD-MySQL-2.9004-3.1.i386.rpm krb5-devel-1.3.4-54.i386.rpm zlib-devel-1.2.1.2-1.2.i386.rpm e2fsprogs-devel-1.35-12.11.el4.i386.rpm
到这里,单个mysql安装完毕,现在启动mysql:
#service mysqld start
[root@localhost ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql> exit
查看mysql进程,找到有用的信息:
# ps aux |grep mysqld
root 26863 0.0 0.2 5304 1248 pts/1 S 21:28 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid
mysql 26896 0.0 3.5 126376 18220 pts/1 Sl 21:28 0:00 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr--datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock
上面黑体字标出来的就是有用信息,用蓝色标出来的就是数据库里的数据信息,斜线标出的为没有用的信息。
现在,拷贝蓝色标出来的代码:
#cp -r /var/lib/mysql /var/lib/mysql2(#cp -r /var/lib/mysql /var/lib/mysql3)
(。。。)
然后启动新配置的数据库,默认情况下mysql的端口号为3306,这里将端口号改为3307,为了避免不必要的用户权限问题,这里将用户指定为root:
#/usr/libexec/mysqld --datadir=/var/lib/mysql2 --user=root --pid-file=/var/run/mysqld/mysqld2.pid --socket=/var/lib/mysql/mysql2.sock --port=3307 &
(#/usr/libexec/mysqld --datadir=/var/lib/mysql3 --user=root --pid-file=/var/run/mysqld/mysqld3.pid --socket=/var/lib/mysql/mysql3.sock --port=3308 &)
ok,到这里就可以登录数据库了,即在一台物理机上运行多个mysql数据库实例。
有两证方式登录数据库,分别是基于socket方式和基于端口方式的,实验表明,这两中登录方式可以混着用。如:
#mysql --socket=/var/lib/mysql/mysql.sock
#mysql --socket=/var/lib/mysql/mysql2.sock
#mysql --socket=/var/lib/mysql/mysql3.sock ###基于socket方式登录mysql
#mysql -h 127.0.0.1 -P 3306
#mysql -h 127.0.0.1 -P 3307
#mysql -h 127.0.0.1 -P 3308 ###基于端口方式登录mysql
实验截图: