Linux MySQL5.7多实例数据库配置

  纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。

  Linux技术交流QQ群:2650582(六月份最新!!)

  mysql的多实例,是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。

  1.下载并安装glibc版本的mysql

  通过yum安装的mysql无法实现多实例配置,因此这里使用glibc版本。由于官网不容易找到glibc版本的mysql,建议从下面站点下载:

  http://www.360sdn.com/opensource-datasource/2016/0909/8964.html

  # wget -c https://dev.mysql.com/get/archives/mysql-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

  # tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

  # mv mysql-5.7.18-linux-x86_64-glibc2.5 /usr/mysql/mysql-5.7.18

  添加环境变量

  #vim /etc/profile

  添加如下内容

  export PATH=/usr/mysql/mysql-5.1.18/bin:$PATH

  重新加载配置

  #source /etc/profile

  2.准备运行环境

  下载基础运行库

  #yum install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel

  bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5

  krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap

  openldap-clients openldap-servers

  创建账户并且分配权限

  mysql不允许通过root用户启动,因此,我们这里使用新用户进行管理mysql

  ---创建mysql分组

  #groupadd mysql

  ---创建名称为mysql的用户,登录时使用basg,用户信息目录在/usr/mysql,并将该用户加入mysql分组

  #useradd -s /bin/bash -d /usr/mysql -g mysql mysql

  ---设置密码#passwd mysql---复制用户信息到用户目录下

  #cd /etc/skel#cp .bashrc /usr/mysql.bashrc

  #cp .bash_logout /usr/mysql/.bash_logout

  #cp .bash_profile /usr/mysql.bash_profile

  ---更改目录拥有者

  #chown -R mysql:mysql /usr/mysql

  ---给【mysql组】执行sudo的权限

  #vim /etc/sudoers

  ---添加如下内容

  %mysql ALL=(ALL) ALL:ALL

  3.创建系统初始化文件

  拷贝support-files中的mysql-server到/etc/init.d/目录下

  注意拷贝之前需要修改mysqld_multi.server中的为你的安装目录

  #cd support-files

  #vim mysqld_multi.server

  ---添加如下内容

  basedir=/var/mysql/mysql-5.7.18

  bindir=/var/mysql/mysql-5.7.18/bin

  ---复制到/etc/init.d/目录下

  #cp mysqld_multi.server /etc/init.d/mysqld_multi

  #cp mysql.server /etc/init.d/mysql

  4.创建配置文件

  创建数据目录和日志目录

  #mkdir -p /usr/mysq/mysql-5.7.18/databases

  #chown -R mysql:mysql /usr/mysq/mysql-5.7.18/databases

  #chmod 766 mysql:mysql /usr/mysq/mysql-5.7.18/databases

  #mkdir -p /usr/mysq/mysql-5.7.18/logs

  #chown -R mysql:mysql /usr/mysq/mysql-5.7.18/logs

  #chmod 766 mysql:mysql /usr/mysq/mysql-5.7.18/logs

  创建my.cnf

  #vim /etc/my.cnf

  my.cnf配置如下

  [mysqld_multi]

  mysqld = /usr/mysql/mysql-5.7.18/bin/mysqld_safe

  mysqladmin = /usr/mysql/mysql-5.7.18/bin/mysqladmin

  log = /usr/mysql/mysql-5.7.18/logs/mysqld_multi.log

  user = mysql

  password = mysql

  [mysqld3306]

  port=3306

  basedir=/usr/mysql/mysql-5.7.18

  datadir=/usr/mysql/mysql-5.7.18/databases/data3306 #数据库目录

  socket=/usr/mysql/mysql-5.7.18/logs/mysqld3306.sock #socket连接存根

  log-error=/usr/mysql/mysql-5.7.18/logs/error-mysqld3306.log #错误日志pid-file=/usr/mysql/mysql-5.7.18/logs/mysqld3306.pid #进程文件language=/usr/mysql/mysql-5.7.18/share/english #使用提示语言,这里目录下必须包含errmsg.sys

  max_allowed_packet = 256M

  query_cache_size=256M

  max_connections=2000

  max_connect_errors=10000

  key_buffer_size=6000M

  read_buffer_size=32M

  read_rnd_buffer_size = 32M

  myisam_sort_buffer_size=512M

  tmp_table_size=1024M

  sort_buffer_size=128M

  symbolic-links=0

  [mysqld3307]

  port=3307

  basedir=/usr/mysql/mysql-5.7.18

  datadir=/usr/mysql/mysql-5.7.18/databases/data3307

  socket=/usr/mysql/mysql-5.7.18/logs/mysqld3307.sock

  log-error=/usr/mysql/mysql-5.7.188/logs/error-mysqld3307.log

  pid-file=/usr/mysql/mysql-5.7.18/logs/mysqld3307.pid

  language=/usr/mysql/mysql-5.7.18/share/english

  max_allowed_packet = 256M

  query_cache_size=256M

  max_connections=2000

  max_connect_errors=10000

  key_buffer_size=6000M

  read_buffer_size=32M

  read_rnd_buffer_size = 32M

  myisam_sort_buffer_size=512M

  tmp_table_size=1024M

  sort_buffer_size=128M

  symbolic-links=0

  [mysqld_safe]

  log-error=/usr/mysql/mysql-5.7.18/logs/mysqld_safe.log

  pid-file=/usr/mysql/mysql-5.7.18/logs/mysqld_safe.pid

  [mysqld3308]

  port=3308

  basedir=/usr/mysql/mysql-5.7.18

  datadir=/usr/mysql/mysql-5.7.18/databases/data3308

  socket=/usr/mysql/mysql-5.7.18/logs/mysqld3308.sock

  log-error=/usr/mysql/mysql-5.7.18/logs/error-mysqld3308.log

  pid-file=/usr/mysql/mysql-5.7.18/logs/mysqld3308.pid

  language=/usr/mysql/mysql-5.7.18/share/english

  max_allowed_packet = 256M

  query_cache_size=256M

  max_connections=2000

  max_connect_errors=10000

  key_buffer_size=6000M

  read_buffer_size=32M

  read_rnd_buffer_size = 32M

  myisam_sort_buffer_size=512M

  tmp_table_size=1024M

  sort_buffer_size=128M

  symbolic-links=0

  [mysqldump]

  quick

  max_allowed_packet = 512M

  [mysql]

  no-auto-rehash

  [isamchk]

  key_buffer = 512M

  sort_buffer_size = 32M

  read_buffer = 2M

  write_buffer = 2M

  [myisamchk]

  key_buffer = 512M

  sort_buffer_size = 32M

  read_buffer = 2M

  write_buffer = 2M

  [mysqlhotcopy]

  interactive-timeout

  5.初始化数据库实例

  ---切换到mysql用户

  # su - mysql

  ---进行初始化

  $ cd /usr/mysql/mysql-5.7.18/bin

  ---执行初始化命令

  $ ./mysqld --initialize --user=mysql --basedir=/var/mysql/mysql-5.7.18 --datadir=/var/mysql/mysql-5.7.18/databases/data3306

  --生成的临时密钥--->D8*>?hmFfGq8

  $ ./mysqld --initialize --user=mysql --basedir=/var/mysql/mysql-5.7.18 --datadir=/var/mysql/mysql-5.7.18/databases/data3307

  --生成的临时密钥--->jogrlMlka7&X

  $ ./mysqld --initialize --user=mysql --basedir=/var/mysql/mysql-5.7.18 --datadir=/var/mysql/mysql-5.7.18/databases/data3308

  --生成的临时密钥--->mogr11ka6kl

  这个过程可能遇到如下问题的解决办法

  Q:./mysqld: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录

  #yum install glibc.i686

  Q:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file:

  No such file or directory

  #yum install libaio libaio-devel

  创建日志

  日志必须手动创建,系统不会自动创建。此外权限是766,用户是mysql,否则无法启动

  ---切换到root

  $ su - root

  #cd /usr/mysq/mysql-5.7.18/logs

  --创建日志和进程文件,以3306实例为例

  #touch mysqld3306.pid

  #touch error-mysqld3306.log

  #chmod 766 /usr/mysq/mysql-5.7.18/logs/*

  #chown -R mysql:mysql /usr/mysq/mysql-5.7.18/logs/

  最终需要创建如下文件

  -rwxrwxrwx 1 mysql mysql 0 5月 2 15:45 error-mysqld3306.log

  -rwxrwxrwx 1 mysql mysql 1 5月 2 17:23 error-mysqld3307.log

  -rwxrwxrwx 1 mysql mysql 1 5月 2 17:24 error-mysqld3308.log

  -rwxrwxrwx 1 mysql mysql 0 5月 2 17:22 mysqld3306.pid

  -rwxrwxrwx 1 mysql mysql 0 5月 2 17:04 mysqld3307.pid

  -rwxrwxrwx 1 mysql mysql 0 5月 2 17:10 mysqld3308.pid

  6.启动实例

  # su - mysql

  $ mysql_multi start 3306

  $ mysql_multi start 3307

  $ mysql_multi start 3308

  如果启动成功,我们可以从如下命令中找到

  #su - root#netstat -lntp -p 4 | grep 330tcp 0 0 :::3307 :::* LISTEN 27717/mysqld

  tcp 0 0 :::3308 :::* LISTEN 25537/mysqld

  tcp 0 0 :::3306 :::* LISTEN 27334/mysqld

  然后我们登录即可,这里以3306数据库为例

  # mysql -h 172.20.11.62 -P 3306 -S /usr/mysql/mysql-5.7.18/logs/mysqld3306.sock -u root -p

  注意:首次登录时使用初始化临时密码,然后在数据库中修改为自己的密码

  >SET PASSWOR=PASSWORD('admin123');>flush privileges;

  到这里我们基本实现了多实例,至于远程连接,请参考其他网络博客。

  原文来自: https://my.oschina.net/ososchina/blog/916982

  让您学习到的每一节课都有所收获

  《Linux就该这么学》是由资深运维专家刘遄及全国多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。

  刘遄老师QQ:5604241 微信:gnu_chuan

  学员助教QQ:5604674

  Linux技术交流A群(满):560843

  Linux技术交流B群:340829

  Linux技术交流C群:463590

  Linux技术交流D群:915246

  Linux技术交流E群:1663106

  Linux技术交流F群:1653851

  Linux技术交流G群:2632018(新群,火热加群中……

  官方站点:www.linuxprobe.com

  ☀ 电脑在线阅读效果更佳:

  http://www.linuxprobe.com/chapter-00.html

按住图片3秒,即可自动关注。

声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
推荐阅读