设为首页 收藏本站
查看: 1741|回复: 0

[经验分享] MySQL单机多实例配置实战

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-10-6 07:02:34 | 显示全部楼层 |阅读模式
  本文主要介绍在CentOS6.9下快速安装和部署MySQL多实例
  基本流程:
  1.Mysql多实例介绍
  2.安装MySQL多实例
  3.创建MySQL多实例的数据文件目录以及配置文件
  4.创建MySQL多实例的启动文件
  5.配置文件权限和软链接
  6.初始化MySQL多实例的数据库文件
  7.启动MySQL多实例数据库
  8.配置和管理MySQL多实例数据库
  流程一:Mysql多实例介绍
  
  简单的说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(如 : 3306/3307/3308)同时运行多个Mysql服务器,这些服务进程通过不同的socket来监听不同的服务端口来提供服务
  这些Mysql多实例共用一套Mysql安装程序,使用不同的my.cnf配置文件,启动程序,和数据文件,在提供服务时,多实例Mysql在逻辑上来看是各自独立的,他们根据配置文件对应设定值,获得服务器相应的资源
  流程二:安装MySQL多实例
  1)安装MySQL所需的依赖包
  yum install ncurses-devel libaio-devel -y
  yum install cmake -y
  2)获取MySQL二进制包以及安装
  useradd -s /sbin/nologin  -M mysql
  id mysql
  wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.32-linux2.6-x86_64.tar.gz 解压并创建软连接(这是二进制安装包,仅需要解压就可以,不需要cmake/configure,make&&make install等过程)
  tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz
  mkdir -p /application/
  mv mysql-5.5.32-linux2.6-x86_64  /application/mysql-5.5.32
  ln -s /application/mysql-5.5.32/ /application/mysql
  cd /application/mysql
  ls -l support-files/*.cnf
  流程三:创建MySQL多实例的数据文件目录以及配置文件
  mkdir -p /data/{3306,3307}/data
  cd /data/3306
  [root@localhost 3306]# cat my.cnf
  [mysqld]
  basedir=/application/mysql
  datadir=/data/3306
  socket=/data/3306/mysql.sock
  log-error=/data/3306/mysqlerr.log
  log_bin=/data/3306/mysql-bin
  binlog_format=row
  skip_name_resolve=1
  server_id=3306
  port=3306
  cd /data/3307
  [root@localhost 3307]# cat my.cnf
  [mysqld]
  basedir=/application/mysql
  datadir=/data/3307
  socket=/data/3307/mysql.sock
  log-error=/data/3307/mysqlerr.log
  log_bin=/data/3307/mysql-bin
  binlog_format=row
  skip_name_resolve=1
  server_id=3307
  port=3307
  #实际工作中我们都是拿早已配置好的模板来进行修改的,这里用醉简单的模板来做演示
  流程四:创建MySQL多实例的启动文件
  cd /data/3306
  [root@localhost 3306]# cat mysqld
  . /etc/init.d/functions
  . /etc/profile
  Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --pid-file=/data/3306/3306.pid'
  Stop='mysqladmin -uroot -S /data/3306/mysql.sock shutdown'
  Port=`ss -tunlp|grep 3306|wc -l`
  function START(){
  if [ $Port -ne 1 ];then
  $Start >/dev/null 2>&1 &
  sleep 3
  if [ $? -eq 0 ];then
  action 'MySQL 3306 Starting' /bin/true
  fi
  else
  action 'MySQL 3306 Already Exists' /bin/true
  fi
  }
  function STOP(){
  if [ $Port -ne 0 ];then
  $Stop
  if [ $? -eq 0 ];then
  action 'MySQL Stoping Successfuly' /bin/true
  fi
  else
  action 'MySQL already Stoped' /bin/true
  fi
  }
  function RESTART(){
  STOP
  sleep 1
  START
  }
  case $1 in
  start)
  START
  ;;
  stop)
  STOP
  ;;
  restart)
  RESTART
  ;;
  *)
  echo "Usage: $0 {start|stop|restart}"
  ;;
  esac
  cd /data/3307
  [root@localhost 3307]# cat mysqld
  . /etc/init.d/functions
  . /etc/profile
  Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --pid-file=/data/3307/3307.pid'
  Stop='mysqladmin -uroot -S /data/3307/mysql.sock shutdown'
  Port=`ss -tunlp|grep 3307|wc -l`
  function START(){
  if [ $Port -ne 1 ];then
  $Start >/dev/null 2>&1 &
  sleep 3
  if [ $? -eq 0 ];then
  action 'MySQL 3307 Starting' /bin/true
  fi
  else
  action 'MySQL 3307 Already Exists' /bin/true
  fi
  }
  function STOP(){
  if [ $Port -ne 0 ];then
  $Stop
  if [ $? -eq 0 ];then
  action 'MySQL Stoping Successfuly' /bin/true
  fi
  else
  action 'MySQL already Stoped' /bin/true
  fi
  }
  function RESTART(){
  STOP
  sleep 1
  START
  }
  case $1 in
  start)
  START
  ;;
  stop)
  STOP
  ;;
  restart)
  RESTART
  ;;
  *)
  echo "Usage: $0 {start|stop|restart}"
  ;;
  esac
  
  流程五:配置文件权限和软链接
  [root@localhost 3307]# chown -R mysql.mysql /data/
  [root@localhost 3307]# find /data/ -name mysqld|xargs ls -l
  -rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3306/mysqld
  -rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3307/mysqld
  [root@localhost 3307]# find /data/ -name mysqld|xargs chmod 700
  [root@localhost 3307]# ln -s  /application/mysql/bin/*  /usr/local/sbin/
  
  流程六:初始化MySQL多实例的数据库文件
  cd /application/mysql/scripts
  ./mysql_install_db  --basedir=/application/mysql --datadir=/data/3306 --user=mysql
  ./mysql_install_db  --basedir=/application/mysql --datadir=/data/3307 --user=mysql
  初始化数据库后可以看到对应实例目录下会多了如下文件,省略部分
  [root@localhost scripts]# tree /data/|head -10
  /data/
  ├── 3306
  │   ├── data
  │   ├── my.cnf
  │   ├── mysql
  │   │   ├── columns_priv.frm
  │   │   ├── columns_priv.MYD
  │   │   ├── columns_priv.MYI
  │   │   ├── db.frm
  │   │   ├── db.MYD
  流程七:启动MySQL多实例数据库
  sed -i "s#/usr/local/mysql#/application/mysql#g"  /application/mysql/bin/mysqld_safe           #修改脚本执行路径
  [root@localhost scripts]# /data/3306/mysqld start
  MySQL 3306 Starting                                        [  OK  ]
  [root@localhost scripts]# /data/3307/mysqld start
  MySQL 3306 Starting                                        [  OK  ]
  [root@localhost 3307]# netstat -tnlp | grep 330
  tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7983/mysqld
  tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      8271/mysqld
  
  流程八:配置和管理MySQL多实例数据库
  1)加入开机自启
  [root@localhost 3306]# echo "#mysql  multi instances" >> /etc/rc.local
  [root@localhost 3306]# echo "/data/3306/mysqld start" >> /etc/rc.local
  [root@localhost 3306]# echo "/data/3307/mysqld start" >> /etc/rc.local
  2)登录MySQL测试
  [root@localhost 3306]# mysql -S /data/3306/mysql.sock         #mysql.sock用于区分登录不同的实例
  Welcome to the MySQL monitor.  Commands end with ; or \g.

  Your MySQL connection>  Server version: 5.5.32-log MySQL Community Server (GPL)
  Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  Oracle is a registered trademark of Oracle Corporation and/or its
  affiliates. Other names may be trademarks of their respective
  owners.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | data               |
  | mysql              |
  | performance_schema |
  | test               |
  +--------------------+
  5 rows in set (0.01 sec)
  mysql> select user();
  +----------------+
  | user()         |
  +----------------+
  | root@localhost |
  +----------------+
  1 row in set (0.00 sec)
  3)MySQL多实例数据库的管理方法
  无密码情况下登录数据库方法:
  mysql -S /data/3306/mysql.sock
  mysql -S /data/3307/mysql.sock
  重启对应实例数据库的命令:
  /data/3306/mysqld restart
  4)MySQL安全配置
  通过mysqladmin命令为MySQL不同实例的数据库设置独立的密码,命令如下:
  [root@localhost 3306]# mysqladmin -u root -S /data/3306/mysql.sock password 'ywxi123'
  [root@localhost 3306]# mysqladmin -u root -S /data/3307/mysql.sock password 'ywxi123'
  [root@localhost 3306]# mysql -uroot -pywxi123 -S /data/3306/mysql.sock
  [root@localhost 3306]# mysql -uroot -pywxi123 -S /data/3307/mysql.sock
  5)再增加一个MySQL的实例
  mkdir -p /data/3308/data
  \cp /data/3306/mysqld /data/3308/
  \cp /data/3306/my.cnf /data/3308/
  sed -i 's/3306/3308/g' /data/3308/my.cnf
  sed -i 's/3306/3308/g' /data/3308/mysqld
  chmod 700 /data/3308/mysqld
  cd /application/mysql/scripts/
  ./mysql_install_db  --basedir=/application/mysql --datadir=/data/3308 --user=mysql
  chown -R mysql:mysql /data/3308/
  egrep "server_id|log_bin" /data/3308/my.cnf
  /data/3308/mysqld start
  netstat -tnlp | grep 3308
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612918-1-1.html 上篇帖子: mysql六:数据备份、pymysql模块 下篇帖子: mysql数据库-警告问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表