mysql怎么部署多实例_MySQL 多实例部署

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值