查了下网上的操作方式,虽然都是启动多个mysql socket但是配置略有区别,网上都是用mysqld_multi这个命令在my.cnf下配置,而我们这里的方式是直接在启动mysqld时指定不同的cnf,启动多个Mysqld,可能意思是一样的。 不过以下方法在ubuntu下尝试失败,在redhat9下确成功,暂时没找到问题,估计是 ubuntu启动MYSQL时设置的进程不太一样,我这里总提示写进程文件时冲突。 redhat9的mysql是rmp安装的。 将/var/lib/mysql/下的mysql目录(包含了mysql的基础数据库表)copy到其他目录,这里是 /home/mysql/mysql3304/mysql下(不要在copy到/var/lib/mysql下,这样mysql在启动时会认为有一个叫 3304的数据库存在) 在mysql3304下建立3304.cnf 内容如下: [mysqld] datadir=/home/mysql/mysql3304 #复制出来的数据库目录 port=3304 socket=/tmp/mysql3304.sock #端口号的socket地址 set-variable = max_connections=500 set-variable = key_buffer=256M set-variable = max_allowed_packet=5M set-variable = table_cache=500 set-variable = sort_buffer=8M set-variable = record_buffer=8M set-variable = myisam_sort_buffer_size=64M set-variable = thread_cache=8 set-variable = connect_timeout=20 set-variable = thread_concurrency=2 log-bin server-id=1 将所有文件权限修改为mysql组,否则会出现启动时进程不能写入文件的错误。 启动时输入 safe_mysqld –defaults-file=/home/mysql/mysql3304/3304.cnf 该端口的进程就启动了,在访问该数据库时输入mysql -u root -p -S /tmp/mysql3304.sock,密码同最原始的Mysql数据库密码一样。 如果需要在建立其他端口号的数据库,继续上面的操作,如果copy的是3304这个目录的话,一定要将pid文件删除,包含了当前的进程号,肯定会有冲突。 如果在服务器启动时开启多个mysql,在/etc/rc.local下增加 safe_mysqld–defaults-file=/home/mysql/mysql3304/3304.cnf & |