创建多个MySQL数据库实例可以通过以下几种方法实现:
方法一:使用不同的端口运行多个实例
-
准备新的数据目录
mkdir /var/lib/mysql2 chown mysql:mysql /var/lib/mysql2
-
初始化新的数据目录
mysqld --initialize --user=mysql --datadir=/var/lib/mysql2
-
启动新实例
mysqld_safe --datadir=/var/lib/mysql2 --port=3307 --socket=/var/run/mysqld/mysqld2.sock &
方法二:使用MySQL多实例管理工具(mysqld_multi)
-
编辑my.cnf配置文件
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin password = my_password [mysqld1] datadir = /var/lib/mysql port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld2] datadir = /var/lib/mysql2 port = 3307 socket = /var/run/mysqld/mysqld2.sock
-
启动/停止实例
mysqld_multi start 1 mysqld_multi start 2
方法三:使用Docker容器(推荐用于测试环境)
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mysql docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 -d mysql
方法四:使用不同的配置文件
-
创建第二个配置文件
cp /etc/my.cnf /etc/my2.cnf
-
修改my2.cnf中的参数
[mysqld] user=root datadir=/var/lib/mysql2 port=3307 socket=/var/run/mysqld/mysqld2.sock
-
启动第二个实例
mysqld --defaults-file=/etc/my2.cnf
注意事项
-
每个实例需要唯一的端口号、socket文件和数据目录
-
确保有足够的内存资源分配给多个实例
-
生产环境中建议使用专门的实例管理工具或容器化方案
-
考虑使用资源限制(cgroups)防止实例间资源竞争
连接不同实例
# 连接第一个实例 mysql -uroot -p -P3306 # 连接第二个实例 mysql -uroot -p -P3307 -S/var/run/mysqld/mysqld2.sock
选择哪种方法取决于您的具体需求、操作系统环境和使用场景。