• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

rhel6下,mysql5.6.14 多实例配置

mysql 搞代码 4年前 (2022-01-09) 31次浏览 已收录 0个评论

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)在我们的生产环境中,很少一台dbserver就一个mysql实例,从节约成本和充分利用资源的角度出发,

更多博文请关注:没有伞的孩子必须努力奔跑 ()

在我们的生产环境中,很少一台db server就一个mysql实例,从节约成本和充分利用资源的角度出发,我们往往会在主从环境下,对从机的db server 安装多个mysql实例,用来同步主db server的相应实例

1.mysql 多实例的控制原理:
多实例通过Mysqld_multi 可以管理多个监听不同的 unix 套字节文件和 TCP/IP 端口的连接的 mysqld 进程,包括 start,stop,status。
默认的 mysqld_multi 是读取 my.cnf 中的[mysqld/N]中的数据,N 一定是正整数,如果你是单独写的文件,可以通过–config-file 参数来指定读取的 configfile。
mysqld_multi 的 optionusage:myysqld_multi [optinos] {start|stop|report} [GNR[,GNR]..]option:start|stop |reportGNR 指的是[msyqld/N]中的 N,GNR 中不能有空格和 tab
mysqld_multi start 10 就是启动 my.cnf 中的 10 的实例;mysqld_multi start 1,4-6 就是启动 1,4 到 6 个实例
如果任何参数都不加入的话,,默认会启动所有的实例

登陆会话,则指定对应mysq实例的套接字文件:mysql -uuser -ppassword -S sockpath

2.下面我们简单搭建一台DB server启动两个mysql实例[主从同步,会在下一篇文章中搭建]

(1).我默认在这台DB server上已经安装一个mysql 实例[ 我这里是源码安装的mysql,各位可以采用RPM、二进制、源码等方式安装一个mysql ]

数据库安装目录:/usr/local/mysql

3306实例数据存放目录:/home/mysql/data

(2).新建第二个mysql实例数据存放目录,目录名为:data_3307

[root@client100 mysql]# mkdir -p /home/mysql/data_3307# 修改数据目录的属主[root@client100 mysql]# chown mysql. -R /home/mysql/data_3307

(3).编辑数据库配置文件:/etc/my.cnf

[root@client100 mysql]# vim /etc/my.cnf[mysqld_multi]# 指定相关命令的路径mysqld= /usr/local/mysql/bin/mysqld_safemysqladmin = /usr/local/mysql/bin/mysqladmin# 指定用户,用于启动和关闭mysql服务[这里尽量使用root用户,默认root用户拥有所以权限,记得在两个实例中root密码一致]user = rootpassword = kongzhong# 指定错误日志路径log = /usr/local/mysql/multi.log[mysqld3306]basedir =/usr/local/mysqldatadir =/home/mysql/datasocket = /usr/local/mysql/mysqld3306.sockpid-file = /home/mysql/data/mysql3306.pidgeneral_log = 1general_log_file = /home/mysql/data/mysql3306.logport =3306server_id =100user = mysqljoin_buffer_size = 128Msort_buffer_size = 2Mread_rnd_buffer_size = 2Mdefault_storage_engine = MYISAMjoin_buffer_size = 128Mmax_allowed_packet= 1Mnet_buffer_length= 8Kskip-external-lockingskip-host-cacheskip-name-resolve# InnoDBinnodb_buffer_pool_size = 128Minnodb_log_file_size = 48Minnodb_file_per_table = 1innodb_flush_method = O_DIRECT# MyISAMkey_buffer_size = 48Mcharacter-set-server=utf8collation-server=utf8_general_ci# LOGlog_error = /home/mysql/data/mysql-error.loglong_query_time = 1slow-query-logslow_query_log_file = /home/mysql/data/mysql-slow.log# Othersexplicit_defaults_for_timestamp=truemax_connections = 500open_files_limit = 65535sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysqld3307]basedir =/usr/local/mysqldatadir =/home/mysql/data_3307socket = /usr/local/mysql/mysqld3307.sockpid-file = /home/mysql/data_3307/mysql3307.pidgeneral_log = 1general_log_file = /home/mysql/data_3307/mysql3307.logport =3307server_id =101user = mysqljoin_buffer_size = 128Msort_buffer_size = 2Mread_rnd_buffer_size = 2Mdefault_storage_engine = MYISAMjoin_buffer_size = 128Mmax_allowed_packet= 1Mnet_buffer_length= 8Kskip-external-lockingskip-host-cacheskip-name-resolve# InnoDBinnodb_buffer_pool_size = 128Minnodb_log_file_size = 48Minnodb_file_per_table = 1innodb_flush_method = O_DIRECT# MyISAMkey_buffer_size = 48Mcharacter-set-server=utf8collation-server=utf8_general_ci# LOGlog_error = /home/mysql/data_3307/mysql-error.loglong_query_time = 1slow-query-logslow_query_log_file = /home/mysql/data_3307本文来源gaodai$ma#com搞$代*码6网/mysql-slow.log# Othersexplicit_defaults_for_timestamp=truemax_connections = 500open_files_limit = 65535sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

(4).为第二个实例初始化数据库:

# 进入数据库安装目录[root@client100 mysql]# cd /usr/local/mysql/scripts/# 执行初始化脚本,指定数据目录/用户[root@client100 scripts]# ./mysql_install_db –basedir=/usr/local/mysql –datadir=/home/mysql/data_3307 –user=mysql

(5).使用mysqld_multi命令启动相应实例[如果my.cnf不在默认位置,需指明位置–defaults-extra-file=****]

# 启动相应实例[root@client100 ~]# mysqld_multi start 3306[root@client100 ~]# mysqld_multi start 3307# 使用如下命令检测 mysql 相应实例进程是否启动[root@client100 ~]# ps -ef |grep mysql# 使用netstat 检测mysql两个实例端口是否启动[看到两个端口的监听都出现,就说明搭建正常][root@client100 ~]# netstat -ntlp |grep mysql# 使用如下两条命令,可登陆到对应实例数据库[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3307.sock -p# 登陆后,可查看参数,查看数据存放目录,以确认是否登陆自己要登陆的实例mysql> show variables like ‘%datadir%’# 关闭实例[root@client100 ~]# mysqld_multi stop 3306[root@client100 ~]# mysqld_multi stop 3307# 如果执行以上命令,不能关闭的话,请使用以下方式关闭[root@client100 ~]# mysqladmin -uroot -p -S /usr/local/mysql/mysqld3307.sock shutdown[root@client100 ~]# mysqladmin -uroot -p -S /usr/local/mysql/mysqld3306.sock shutdown## 有的朋友可能在使用 mysqld_multi stop 关闭时,始终有实例关闭不了,这里就是/etc/my.cnf中user/password的作用## 需要做如下操作:## 如果你指定的用户不是root用户,那最好拥有mysql的所有目录权限,不然会报权限不够,所以建议用mysql或root用户## 如果是root用户,因为root拥有所有权限,所以只要设置两个实例的密码都是一样的就行## 而对于mysql,则编译安装时,创建用户是就要允许此用户登录,即不要加nologin限制## 并登录到实例数据库后,授予shutdown权限,设置密码mysql> GRANT SHUTDOWN ON *.* TO ‘mysql’@’localhost’ IDENTIFIED BY ‘kongzhong’;mysql> flush privileges## 现在再用 mysqld_multi stop 关闭,就可正常关闭[还是那句,建议用root]

本文出自 “没有伞的孩子必须努力奔跑” 博客,请务必保留此出处


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:rhel6下,mysql5.6.14 多实例配置

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址