美文网首页
MySQL 多实例部署

MySQL 多实例部署

作者: eriolchan | 来源:发表于2017-09-24 15:36 被阅读418次

最近在做高可用方面的改进,需要将业务相关的数据库和管理系统的数据库相互隔离,以实现分别维护操作。这里利用mysqld_multi 来部署多个实例。

1. 安装MySQL 5.6

$ sudo apt-get purge mysql-server-5.5 mysql-client-5.5
$ sudo apt-get install mysql-server-5.6

2. 迁移数据库文件到SSD 目录

$ sudo service mysql stop
$ sudo cp -R /var/lib/mysql /data/s1/mysql
$ sudo chown -R mysql:mysql /data/s1/mysql

将SSD 的目录添加到apparmor 配置文件中

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld

在最后添加以下内容,允许对该文件下的读写操作,其中的路径名十分重要,否则mysql 将因为权限问题无法启动成功。

/data/s1/mysql/ r,
/data/s1/mysql/** rwk,
/var/run/mysqld/** rw,
/run/mysqld/** rw,

重新加载apparmor,使配置生效

$ sudo service apparmor reload

3. 配置多实例

使用自带的mysqld_multi 工具进行多个实例的管理,在更改my.cnf 文件前先进行备份

$ sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak

可以使用以下命令生成example 文件,并在该基础上进行修改

$ mysqld_multi --example

在配置文件中多个实例使用 mysqldN 进行表示,其中N 代表实例的id,用于在mysqld_multi 命令中指定实例

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld1]
user       = mysql
pid-file   = /var/run/mysqld/mysqld1.pid
socket     = /var/run/mysqld/mysqld1.sock
port       = 3306
basedir    = /usr
datadir    = /data/s1/mysql/mysqld1

[mysqld2]
user       = mysql
pid-file   = /var/run/mysqld/mysqld2.pid
socket     = /var/run/mysqld/mysqld2.sock
port       = 3307
basedir    = /usr
datadir    = /data/s1/mysql/mysqld2

如果在datadir 下还没有数据库文件,可以使用以下命令生成一个新的数据库文件

$ sudo cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
$ sudo mysql_install_db --datadir=/data/s1/mysql/mysqld1

3.1 启动数据库实例

可以通过指定id 来启动某个数据库实例,若不指定,则代表启动所有的实例

$ sudo mysqld_multi start 1 # 启动1号实例
$ sudo mysqld_multi start   # 启动所有实例

对于新建的数据库文件,可以使用以下命令进行root 密码设置和基本的MySQL 安全配置。由于mysql_secure_installation 工具默认使用 /var/run/mysql/mysqld.sock 文件进行连接,可以通过创建软连接来指向自定义的socket 文件。

$ sudo mysqladmin -u root -S /var/run/mysqld/mysqld1.sock password 'password'
$ sudo ln -s /var/run/mysql/mysqld1.sock /var/run/mysqld/mysqld.sock
$ mysql_secure_installation

3.2 关闭数据库实例

需要在数据库实例上创建一个账户用来关闭数据库,该账户的用户名和密码和[mysqld_multi] 中配置的一样

> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'my_password';
> FLUSH PRIVILEGES;

由于在5.6中mysqld_multi 读取的[mysqld_multi] 密码为*,需要修改mysql_multi 的源文件来正确读取明文的密码

$ sudo vim /usr/bin/mysqld_multi

在该文件的216行中,添加-s 参数

# Line: 216
# my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;

可以通过指定id 来关闭某个数据库实例,若不指定,则代表关闭所有的实例

$ sudo mysqld_multi stop 1 # 关闭1号实例
$ sudo mysqld_multi stop   # 关闭所有实例

3.3 查看实例状态

$ sudo mysqld_multi report

相关文章

  • MySQL 多实例部署

    最近在做高可用方面的改进,需要将业务相关的数据库和管理系统的数据库相互隔离,以实现分别维护操作。这里利用mysql...

  • MySQL多实例部署

    一.什么是多实例 1)多套后台进程+线程+内存结构2)多个配置文件a.多个端口b.多个socket文件c.多个日志...

  • centos安装多版本mysql

    部署mysql多个版本,或者多实例,方法基本一致。下面均以glibc包安装mysql5.6,mysql5.7 参考...

  • Tomcat多实例单应用部署方案

    一、Tomcat部署的场景分析 通常,我们对tomcat部署需求可以分为几种:单实例单应用,单实例多应用,多实例单...

  • 实践:mysql单机多实例部署(mac)

    背景:在自己电脑搭建或测试分布式服务框架时,经常会用多个数据库实例模拟多个环境的情况,因此我把搭建多实例mysql...

  • elk+cerebro

    多实例部署elasticsearch 下载 http://localhost:9200/ kibana 部署 下载...

  • Tomcat 安装及其单机多实例部署

    Tomcat 安装及其单机多实例部署

  • 5.7.20 多实例——MGR部署实战

    多实例——MGR部署实战 MGR介绍 基于传统异步复制和半同步复制的缺陷——数据的一致性问题无法保证,MySQL官...

  • 在linux上部署的服务,无法连接本地的MySQL

    问题的表现 在A服务器上部署了一个mysql实例。其他服务器上的服务,可以正常连接该mysql实例,但是A服务器上...

  • MySQL主从复制搭建

    MySQL主从复制简介 1. 主从复制 1.1 准备多实例环境 MySQL多实例环境准备(复制粘贴) 1.2 检查...

网友评论

      本文标题:MySQL 多实例部署

      本文链接:https://www.haomeiwen.com/subject/udkhextx.html