当前位置:Gxlcms > 数据库问题 > mysql 多实例应用配置部署指南

mysql 多实例应用配置部署指南

时间:2021-07-01 10:21:17 帮助过:44人阅读


  这种方式的优势逻辑简单,配置简单,耦合度低

  缺点是管理起来不太方便。


   技术分享




方案二:单一的部署方案   不推荐,耦合性太高

     [mysqld_muti]

      即一个配置文件 启动多个实例


四、开始配置MySQL多实例

   环境介绍:

   mysql 版本:5.6.27

   操作系统:Centos 6.5

   mysql实例数:2个 

   实例占用端口分别为:3306、3307 


先配置方案一: 



1.下载:在http://dev.mysql.com/downloads/mysql/官网上下载

  

2.解压

tar xvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

 

3.移动到/usr/local/mysql

 

mv mysql-5.6.27-linux-glibc2.5-x86_64 mysql

4.安装依赖的lib包:

centos:yum install  libaio -y

5、配置用户,目录

shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .

6、使用/data/目录作为MySQL多实例的总目录

 mkdir -p /data/{3306,3307}/data

7、开始配置多实例的配置文件

vim  /data/3306/my.cnf

[mysqld] 
 #general
 basedir = /usr/local/mysql
 datadir = /data/3306/data
 socket = /data/3306/mysql.sock
 user = mysql
 port = 3306
 server_id = 1
 log-error = /data/3306/err.log
 pid = /data/3306/mysql.pid
 #binlog 
 log-bin  = /data/3306/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3306/mysql.sock
 port = 3306




vim  /data/3307/my.cnf

[mysqld] 
 #general
 basedir = /usr/local/mysql
 datadir = /data/3307/data
 socket = /data/3307/mysql.sock
 user = mysql
 port = 3307
 server_id = 1
 log-error = /data/3307/err.log
 pid = /data/3307/mysql.pid
 #binlog 
 log-bin  = /data/3307/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3307/mysql.sock
 port = 3307


8、创建多实例的启动文件 。

  放到/data/3306  | /data/3307 下

  脚本省略(mysqld)

 多实例启动文件的启动MySQL服务实质:

 

   

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

  

 多实例启动文件的停止MySQL服务实质:

 mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown
 mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown  平滑停止

9,授权MySQL用户,和组管理整个多实例目录

 chown -R mysql.mysql /data

10,配置MySQL全局环境变量

 echo "export PATH=$PATH:/usr/local/mysql/bin/"  >> /etc/profile
 source  /etc/profile

11,开始初始化数据库

 

 cd/usr/local/mysql/scripts/
 ./mysql_install_db --user=mysql  --datadir=/data/3306/data/ --basedir=/usr/local/mysql/
 ./mysql_install_db --user=mysql  --datadir=/data/3307/data/ --basedir=/usr/local/mysql/

 什么初始化数据库?

 a,初始化的主要目的就是创建基础的数据库文件,例如生成MySQL的库表

 b,初始化后,产看目录,可以看到一些表文件



12,启动| 停止 MySQL服务

 如果有脚本,则使用脚本启动

/data/3306/mysql  start 
/data/3307/mysql  start

 如果没有脚本,则使用一下启动

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

如果没有脚本,则使用一下启动停止

mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown

mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown  平滑停止|

13,检查

  登陆:

 mysql -S /data/3306/mysql.sock 


管理的话,在本地都是采用 -S /data/3306/mysql.sock,如果在远程可以通过不同的端口连接上去坐管理操作。其他的和单实例的管理没什么区别!


#######################################################################################


再来看第二种通过官方自带的mysqld_multi来实现多实例实战:

这里的mysql安装以及数据库的初始化和前面的步骤一样,就不再赘述。


mysqld_multi的配置

vim /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = admin
password = password
[mysqld1] 
 #general
 basedir = /usr/local/mysql/
 datadir = /data/3306/data/
 socket = /data/3306/mysql.sock
 user = mysql
 port = 3306
 server_id = 1
 log-error = /data/3306/
 pid = /data/3306/
 #binlog 
 log-bin  = /data/3306/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3306/mysql.sock
 port = 3306
[mysqld2]
 #general
 basedir = /usr/local/mysql/
 datadir = /data/3307/data/
 socket = /data/3307/mysql.sock
 user = mysql
 port = 3307
 server_id = 2
 log-error = /data/3307/
 pid = /data/3307/
 #binlog 
 log-bin  = /data/3307/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3307/mysql.sock
 port = 3307
[mysql]
no-auto-rehash
prompt=\\u@\\d \\R:\\m>
[mysqld_safe]
open-files-limit = 8192


mysqld_multi启动

/usr/local/mysql/bin/mysqld_multi start 1
/usr/local/mysql/bin/mysqld_multi start 2
 

停止MySQL实例
mysqladmin -uroot -p -S /data/3306/mysql.sock shutdown
mysqladmin -uroot -p -S /data/3307/mysql.sock shutdown

更改原来密码
mysqladmin -uroot password ‘123456‘ -S /data/3306/mysql.sock
mysqladmin -uroot password ‘123456‘ -S /data/3307/mysql.sock

测试登陆

mysql -uroot -p -S /data/3306/mysql.sock 
mysql -uroot -p -S /data/3307/mysql.sock


本文出自 “crazy_sir” 博客,请务必保留此出处http://douya.blog.51cto.com/6173221/1787516

mysql 多实例应用配置部署指南

标签:mysql   多实例   

人气教程排行