当前位置: 澳门新濠3559 > 数据库 > 正文

按照以下步骤,Mysql多实例(多个数据库)搭建

时间:2019-11-29 07:15来源:数据库
   Mysql集群讲解(三)     ## 源码 编译安装 Mysql  以 mysql-5.7.15.tar.gz 为例     安装中涉及的几点需要提前说明的问题:     所有下载的文件将保存在 /root 目录下     mysql 将以 mysq

 

 Mysql集群讲解(三)

    ## 源码 编译安装 Mysql  以 mysql-5.7.15.tar.gz 为例
    安装中涉及的几点需要提前说明的问题:
    所有下载的文件将保存在 /root 目录下
    mysql 将以 mysql 用户运行,而且将加入 service 开机自动运行
    mysql 将被安装在 /usr/local/mysql/ 目录下
    mysql 默认安装使用 utf8 字符集
mysql 的数据和日志文件保存在 /usr/local/mysql/data/ 目录下
    mysql 的配置文件保存于/usr/local/mysql/etc/my.cnf
    注意从 MySQL 5.7.5 开始 Boost 库是必需的
安装依赖包
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
、、、安装依赖库
    、、安装 cmake 和 bison
yum install -y cmake bison ncurses
    、、下载 Boost
wget
    、、解压
tar zxf boost_1_59_0.tar.gz
    、、移动
mv boost_1_59_0 /usr/local/boost

本文出处: 

Mysql多实例(多个数据库)搭建

    ##建立 mysql 安装目录和用户,
mkdir -pv /usr/local/mysql
    、、、在/usr/local/mysql 建立【data】、【tmp】、【log】、【etc】4 个目录
cd /usr/local/mysql
mkdir data tmp log etc
    、、建立组和用户
groupadd mysql
useradd -g mysql -s /usr/sbin/nologin mysql
    、、、下载 mysql
cd ~
wget
    、、、解压并进入目录
tar zxf mysql-5.7.16.tar.gz
cd mysql-5.7.16    
    、、、编写一个辅助 shell 文件,帮我们配置 mysql
vim mysql_install.sh
    、、、以下内容都写在一行上,不要换行
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_按照以下步骤,Mysql多实例(多个数据库)搭建。general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_DEBUG=0 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_BOOST=/usr/local/boost
    、、、把刚刚的 shell 文件加上可执行权限:
chmod +x ./mysql_install.sh
    、、、执行 shell 文件进行软件的配置和环境检测
./mysql_install.sh
    、、、编译软件并且进行安装
make && make install
出错停止。。。。。。
另外如果过程中出现报错而中断,需
要删除 CMakeCache.txt 文件后再执行 mysql_install.sh 文件(没出错请不要执行以
下两行指令!!!!):
make clean
rm -f CMakeCache.txt 或者 shell>#  unlink CMakeCache.tx

 

      多实例概述:

##############################配置########################

 

      MySQL多实例是指安装MySQL之后,我们可以在一台Linux服务器上同时启动多个MySQL数据库(实例),不需要安装多个MySQL;

。。。。使用递归,把 mysql 目录所有者设置为 mysql 这个用户:
chown -R mysql:mysql /usr/local/mysql

最新在学习MySQL,纯新手,对Linux了解的也不多,因为是下载的最新版的MySQL(MySQL5.7.18)二进制包,CentOS7.2下测试安装,方便以后折腾。
大概步骤如下,安装删除反复折腾了几遍,按照以下步骤,应该没啥问题了。
也没有想象中的复杂,大部分步骤都是参考网上的,照做就是了,出错的话,多尝试,多查资料。

      如果是有多台Linux服务器,那么我们需要每台服务器都分别安装MySQL;

。。。。如果 /etc/my.cnf 存在的话,请删除
unlink /etc/my.cnf

 

在一台Linux服务器上启动多个MySQL数据库(实例),通过为各个数据库实例配置独立的配置文件来实现,即每个数据库实例有自己单独的配置文件;

。。。。进入 MySQL 安装目录下
cd /usr/local/mysql

操作系统版本

 

。。。。重建 my.cnf 文件
cp support-files/my-default.cnf etc/my.cnf

   图片 1

多实例配置:

。。。。根据实际情况优化 mysql 配置
vim etc/my.cnf

创建mysql组和用户

1、 在MySQL安装主目录下创建/data/3307, /data/3308/, /data/3309, /data/3310四个目录;

比如将 my.cnf 的内容改成以下:
[client]
default-character-set = utf8
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
[mysqld]
datadir =/usr/local/mysql/data
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
user = mysql
symbolic-links = 0
pid-file = /usr/local/mysql/tmp/mysql.pid
explicit_defaults_for_timestamp = true
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER
slow_query_log = on
slow_query_log_file = /usr/local/mysql/log/slow.log
long_query_time = 2
log_error = /usr/local/mysql/log/mysql.err

   图片 2

 

 第 四 步:
。。。。 初始化 mysql 的基本表
。。5.7 以前的做法:
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

 

 

。。。。5.7 及以上的做法:
;;;;--initialize 会生成一个随机密码(~/.mysql_secret),而--initialize-insecure 不会生成密码
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

下载最新版的MySQL 5.7.18二进制包,上传至服务器的usr/local目录下

2、执行数据库初始化,在MySQL的/usr/local/mysql-5.7.18/bin目录下执行命令:

。。。。启动 mysql
/usr/local/mysql/bin/mysqld_safe > /dev/null 2>&1 &

图片 3

./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.18 --datadir=/usr/local/mysql-5.7.18/data/3307 --user=mysql

。。。。修改 mysql 的 root 密码
/usr/local/mysql/bin/mysqladmin -u root password 密码

 

 

。。。。增加到开机启动
;;;;先将 mysqld 设置为服务
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

解压MySQL二进制包

./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.18 --datadir=/usr/local/mysql-5.7.18/data/3308 --user=mysql

。。。。然后将 mysqld 服务加入启动项:
chkconfig --add mysqld

图片 4

 

。。。。设置为自启动:
chkconfig --level 345 mysqld on

 

./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.18 --datadir=/usr/local/mysql-5.7.18/data/3309 --user=mysql

。。。。将 mysql 命令加入到环境变量里
PATH=$PATH:/usr/local/mysql/bin

如下是解压之后的,并且重命名文件夹之后的文件信息

 

。。。。为了重启后仍能有效:
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /root/.bashrc

图片 5

./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.18 --datadir=/usr/local/mysql-5.7.18/data/3310 --user=mysql

。。。。如果需要对外开放 3306 端口
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 

 

。。。。如果 mysqld 服务正常运行中,但是执行 mysql 指令时报出以下错误
::error 2202 (HY000):can't connent ....
解决方案就是创建一个软链接
mkdir -pv /var/lib/mysql
ln -s /usr/local/mysql/tmp/mysql.sock /var/lib/mysql/mysql.sock

更改所属的组和用户

其中 initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空;

弄了好几天,整理出来的。  有错误的地方欢迎指正。。。

图片 6

 

 

 

解压之后的MySQL文件包含的内容

3、在/data/3307, /data/3308/, /data/3309, /data/3310 四个目录下分别创建一个my.cnf文件;

图片 7

 

 

4、配置四个MySQL数据库服务的my.cnf文件

查看support-files文件夹的内容,发现并没有my_default.cnf默认的配置文件,如果没有默认的配置文件,需要手动创建一个my_default.cnf配置文件

这里之举个例子:其他3308 3309 3310 中只需要修改端口号即可

图片 8

 

 

 

  如下是一个最简化的配置文件,上传到supp-files文件夹中,当然其他配置选项可以根据需要自行修改,

 

  如下有一个配置是skip-grant-tables = 1,表示可以跳过密码登陆,登陆之后可以修改root的密码和远程访问权限,然后取消跳过密码验证,用root+密码可以正常登陆

 

[mysqld]
character-set-server=utf8
basedir = /usr/local/mysql/
datadir=/usr/local/mysql/data/
log-error=/usr/local/mysql/mysqld.log
port = 3306
socket=/tmp/mysql.sock

[client]

skip-grant-tables = 1

port        = 3307

 

socket      = /usr/local/mysql-5.7.18/data/3307/mysql.sock

如下,将上述默认配置文件上传至support-files文件夹中

default-character-set=utf8

图片 9

 

 

[mysqld]

注册和初始化MySQL服务

port    = 3307

  这一点比较坑,网上的教程大多是mysql_install_db 方式安装的,这一步也是遇到问题最最多的,折腾了好久,但是mysql_install_db 命令是不推荐的,也提示使用mysqld来安装
  在安装mysql 5.7.18的时候也是各种报错,经过各种尝试之后吧,采用如下命名方式安装,只要没有Error,警告信息Warning先不理它

socket  = /usr/local/mysql-5.7.18/data/3307/mysql.sock

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/  --datadir=/usr/local/mysql/data/ 

datadir = /usr/local/mysql-5.7.18/data/3307

图片 10

log-error = /usr/local/mysql-5.7.18/data/3307/error.log

 

pid-file = /usr/local/mysql-5.7.18/data/3307/mysql.pid

复制上述的my_default.cnf和mysql.server配置文件到etc目录,之前复制过该文件到etc目录,它这里提示是否覆盖,输入Y覆盖

 

图片 11

character-set-server=utf8

 

lower_case_table_names=1

启动MySQL服务

autocommit = 1

图片 12

 

 

 

连接至MySQL,默认没有密码,直接回车后连接至MySQL

多实例启动:

 图片 13

        切换到/usr/local/mysql-5.7.18/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:

 

   ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3307/my.cnf &

修改MySQL的root密码

   ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3308/my.cnf &

 图片 14

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3309/my.cnf &

图片 15

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3310/my.cnf &

修改可远程访问

其中 --defaults-file 是指定配置文件,& 符合表示后台启动;

图片 16

 

  

      启动后配置:(3308 3309 3310 别忘记修改 密码和远程权限)

重启MySQL服务

              1、登录进入mysql,在mysql-5.7.18/bin目录下执行命令:

图片 17

./mysql -uroot -p -S /usr/local/mysql-5.7.18/data/3307/mysql.sock

此时本地可以正常使用MySQL

其中 -p 是指定密码,如果没有密码则可以不写 -p,-S是指定sock文件,mysql.sock文件是服务器与本机客户端进行通信的ip与端口文件;或者使用用端口、主机登录 ./mysql -uroot -p -P3307 -h127.0.0.1 登录进入MySQL

图片 18

2、修改mysql的密码,执行:

 

alter user 'root'@'localhost' identified by '123456';

  设置开机自动启动

(其中123456是我们设置的密码)

  图片 19

3、授权远程访问,执行命令:(这样远程客户端才能访问)

 

grant all privileges on *.* to root@'%' identified by '123456';

 

其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;

 

root@'%' 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.10.129

测试远程连接

4、执行以下如下命令刷新权限:

图片 20

flush privileges;

 

 

 

 

20171205:

多实例关闭:

后面因为需要,自己又照做了一遍,安装是ok的,后面考虑使用python做一个自动化安装

切换到/usr/local/mysql-5.7.18/bin目录下,使用 mysqladmin 命令 shutdown

groupadd mysql
cat /etc/group | grep mysql

 

useradd -r -g mysql mysql
cat /etc/passwd | grep mysql

./mysqladmin -uroot -p -S /usr/local/mysql-5.7.18/data/3307/mysql.sock shutdown

tar xvfz mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

或者:./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown

chown -R mysql mysql-5.7.20/
chgrp -R mysql mysql-5.7.20/

如果已经进入到了MySQL的命令行,可以直接执行 shutdown;

./bin/mysqld --initialize-insecure --user=mysql --basedir=/home/mysql/mysql-5.7.20 --datadir=/home/mysql/mysql-5.7.20/data/

退出MySQL命令行,执行: exit

cp /home/mysql/mysql-5.7.20/support-files/mysql.server /etc/init.d/mysqld

 

/etc/init.d/mysqld restart

rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /usr/bin/mysql
rm -rf /usr/lib64/perl5/vendor_perl/auto/DBD/mysql
rm -rf /usr/lib64/perl5/vendor_perl/DBD/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql

 

设置mysql的环境变量

export PATH=$PATH:/home/mysql/mysql-5.7.20/bin
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

 

编辑:数据库 本文来源:按照以下步骤,Mysql多实例(多个数据库)搭建

关键词: