使用MySQL多实例可以避免多个应用程序之间出现冲突,因为它们都运行在不同的实例中。每个实例具有自己的配置、数据和日志文件。它们之间相互独立,可彼此独立启动和关闭。
要创建多个MySQL实例,需要在每个实例的配置文件my.cnf中指定不同的端口号、数据目录和日志文件路径。例如:
[mysqld1] port=3307 datadir=/var/lib/mysql1 socket=/var/run/mysqld/mysqld1.sock log-error=/var/log/mysql1/error.log [mysqld2] port=3308 datadir=/var/lib/mysql2 socket=/var/run/mysqld/mysqld2.sock log-error=/var/log/mysql2/error.log
在上面的示例中,大家创建了两个MySQL实例,分别命名为mysqld1和mysqld2。这些实例监听不同的端口,分别为3307和3308,它们分别存储在不同的数据目录/var/lib/mysql1和/var/lib/mysql2中。每个实例都有自己的套接字文件,可以使用命令行客户端访问,例如:mysql -S /var/run/mysqld/mysqld1.sock。
在启动MySQL实例之前,必须先停止已经运行的MySQL服务,然后使用以下命令启动新的实例:
$ mysqld_safe --defaults-file=/etc/mysql/my.cnf --datadir=/var/lib/mysql1 --socket=/var/run/mysqld/mysqld1.sock --port=3307 & $ mysqld_safe --defaults-file=/etc/mysql/my.cnf --datadir=/var/lib/mysql2 --socket=/var/run/mysqld/mysqld2.sock --port=3308 &
每个命令都使用–defaults-file选项指定不同的配置文件。在实例启动成功之后,可以使用以下命令检查实例是否已经运行:
$ mysqladmin --port=3307 --socket=/var/run/mysqld/mysqld1.sock ping $ mysqladmin --port=3308 --socket=/var/run/mysqld/mysqld2.sock ping
总之,MySQL多实例是一种为多个应用程序提供高度可靠的、高度灵活的解决方案。在设置多个实例时需要仔细考虑每个实例的配置选项,以确保它们彼此独立,不会发生冲突。