MySQL多实例环境的创建(CentOS)


=Start=

缘由:

要做一个集合多种功能的网站,不同的功能对应着不同的MySQL数据库,且分散在多台服务器上。考虑到直接在原始数据库上进行操作会影响性能和可用性,所以决定创建MySQL主从,将所有的从库放在一台服务器上,好处是集中存放易于管理,且不会对原始数据库造成较大影响。这么做需要开启多个MySQL实例,一个实例对应一个特定的从库。下面是在CentOS 6.x环境下创建多个MySQL实例的步骤,在此记录总结一下,方便以后参考。

参考解答:
1. 创建一个新的MySQL数据目录 /opt/mysql_3307 (要记得将目录的用户和组改成mysql)
# mkdir -p /opt/mysql_3307
# chown mysql.mysql /opt/mysql_3307/
2. 利用已有的MySQL配置文件(/etc/my.cnf)创建一个新的名为 my.cnf.3307 的配置文件,并更新其中的 datadir/port 配置:
# cp /etc/my.cnf /etc/my.cnf.3307
# vi /etc/my.cnf.3307
    datadir=/opt/mysql_3307
    port=3307
3. 利用已有的MySQL启动脚本(/etc/init.d/mysql)创建一个新的名为 mysql3307 的启动脚本用于 启动/停止/重载 新的MySQL实例:
# cp /etc/init.d/mysql /etc/init.d/mysql3307
4. 对刚才新建的名为 mysql3307 的启动脚本做一些修改(至少需要4处修改):
# vi /etc/init.d/mysql3307

修改1: 将下面一行的内容添加到 第138行(即 --pid-file= 所在行) 之后用来处理端口选项

--port=*) port=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;

修改2: 修改 第215行(即 conf=/etc/my.cnf 所在行) 更新配置文件的路径:

conf=/etc/my.cnf.3307

修改3: 修改 第257行(即 parse_server_arguments `$print_defaults 所在行) 添加「-c」选项,使其在解析参数时会去读取刚才新建的配置文件:

parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server -c/etc/my.cnf.3307`

修改4: 修改 第284行(即 「wait_for_pid created」 上一行) 添加「--defaults-file=/etc/my.cnf.3307 --port="$port"」选项,设置默认的配置文件和端口:

$bindir/mysqld_safe --defaults-file=/etc/my.cnf.3307 --port="$port" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --socket="$datadir"/mysql3307.sock $other_args >/dev/null 2>&1 &
5. 为新的MySQL实例安装默认的表:
# mysql_install_db --datadir=/opt/mysql_3307 --defaults-file=/etc/my.cnf.3307 --user=mysql
6. 启动新的MySQL实例:
# /etc/init.d/mysql3307 start
7. 为该MySQL实例设置密码,并连接到该实例:
# /usr/bin/mysqladmin -u root -h127.0.0.1 -P3307 password 'new_password'
# mysql -uroot -h127.0.0.1 -P3307 -p
8. 将该服务添加到启动列表中[可选]
# chkconfig --add mysql3307
# chkconfig mysql3307 --level 2345 on

如果你想部署更多的MySQL实例,照着上面的方法一步一步来即可(注意进行一些修改),不过要确保有足够的内存和CPU资源。

参考链接:

Running Multiple MySQL 5.6 Instances on one server in CentOS 6/RHEL 6/Fedora

=END=

, ,

《“MySQL多实例环境的创建(CentOS)”》 有 3 条评论

回复 hi 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注