南昌IOS培训
达内南昌中心

0571-56020830

热门课程

如何在 Linux 上配置 MySQL5.7 多实例数据库?

  • 时间:2018-02-12 11:14
  • 发布:转载
  • 来源:网络

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;


到这里我们基本实现了多实例。

上一篇:C/C++ 和 Java 哪个更有前途?
下一篇:0基础学Python,有哪些学习路径和经验?

IOS培训出来好找工作难吗?

新手怎样自学iOS开发?这些方法让你快速入门

iOS开发,通知怎么写?

IOS软件开发需要什么条件 ?

选择城市和中心
贵州省

广西省

海南省