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

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 330
tcp        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;

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

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值