mysql 多实例 独立配置文件_MySQL单机多实例部署详解之------多实例分别定义不同的配置文件...

mysql多实例安装---分别定义不同的配置文件

1.安装MySQL需要的依赖包

[root@MySQL ~]# yum install ncurses-devel libaio-devel cmake -y

[root@MySQL ~]# rpm -qa ncurses-devel libaio-devel

ncurses-devel-5.7-4.20090207.el6.x86_64

libaio-devel-0.3.107-10.el6.x86_64

2.安装编译MySQl需要的软件(通过wget下载,或者本地电脑上传到linux里,这里用wget下载)

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.32.tar.gz

wget http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz

yum install lrzsz -y #需要安装lrzsz

rz -y  #上传包    sz -y #下载到本地

[root@MySQL ~]# useradd olodboy

[root@MySQL ~]# cd /home/oldboy/

[root@MySQL ~]# mkdir /tools

[root@MySQL ~]# cd /tools/

[root@MySQL tools]# rz -y

分别上传cmake-2.8.8.tar.gz和mysql-5.5.32.tar.gz

查看检查

[root@MySQL tools]# ls -lh

total 29M

-rw-r--r--. 1 root root 5.5M Sep  1  2016 cmake-2.8.8.tar.gz

-rw-r--r--. 1 root root  24M Sep  1  2016 mysql-5.5.32.tar.gz

[root@MySQL tools]# tar xf cmake-2.8.8.tar.gz

[root@MySQL tools]# cd cmake-2.8.8

[root@MySQL cmake-2.8.8]# ./configure  #无需加任何参数

[root@MySQL cmake-2.8.8]# gmake

[root@MySQL cmake-2.8.8]# gmake install

[root@MySQL cmake-2.8.8]# cd ..

开始安装MySQL

创建用户和组

[root@MySQL tools]# useradd mysql -s /sbin/nologin -M

检查

[root@MySQL tools]# id mysql

uid=501(mysql) gid=501(mysql) groups=501(mysql)

[root@MySQL tools]# tar xf mysql-5.5.32.tar.gz

[root@MySQL tools]# cd mysql-5.5.32

[root@MySQL mysql-5.5.32]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \

-DMYSQL_DATADIR=/application/mysql-5.5.32/data \

-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

-DENABLED_LOCAL_INFILE=ON \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FAST_MUTEXES=1 \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_READLINE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DWITH_DEBUG=0

[root@MySQL mysql-5.5.32]# make && make install

[root@MySQL mysql-5.5.32]# ln -s /application/mysql-5.5.32/ /application/mysql

检查

[root@MySQL mysql-5.5.32]# ls /application/ -l

total 4

lrwxrwxrwx.  1 root root   26 Aug 30 01:36 mysql -> /application/mysql-5.5.32/

drwxr-xr-x. 13 root root 4096 Aug 30 01:17 mysql-5.5.32

这里以3306,3307两个实例为例,创建相关mysql多实例的目录如下:

[root@MySQL mysql-5.5.32]# yum install tree dos2unix nmap -y    #安装tree

[root@MySQL mysql-5.5.32]# mkdir -p /data/{3306,3307}/data

[root@MySQL mysql-5.5.32]# tree /data

/data

├── 3306        #3306实例的目录

│?? └── data   #3306实例的数据文件目录

├── 3307        #3307实例的目录

│?? └── data   #3307实例的数据文件目录

└── oldboy.txt

4 directories, 1 file

提示:

1.mkdir -p /data/{3306,3307}/data相当于mkdir -p /data/3306/data; mkdir -p /data/3307/data

创建MySQL多实例的配置文件

MySQL数据库默认为用户提供了多个配置文件模板,用户可以根据服务器大小来选择

[root@MySQL mysql-5.5.32]# ls -l support-files/my*cnf

上面是单实例的配置过程的默认配置文件模板,我们这里配置多实例和单实例相同了,我们为了让MySQL多实例之间彼此独立,因此,我们为每一个实例建立一个配置文件和一个启动文件mysql,分别对应自己的数据文件data。

我们可以通过vi命令来添加配置文件的内容,如下:

vi /data/3306/my.cnf

vi /data/3307/my.cnf

[root@MySQL mysql-5.5.32]# cd /

上传data.zip

[root@MySQL /]# rz -y

解压data.zip

[root@MySQL /]# unzip data.zip

[root@centos1 /]# tree /data

/data

|-- 3306

|   |-- data

|   |-- my.cnf

|   `-- mysql

|-- 3307

|   |-- data

|   |-- my.cnf

|   `-- mysql

`-- oldboy.txt

4 directories, 5 files

特别说明

本文多实例启动文件的启动mysql服务实质命令:

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 /dev/null &

mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 /dev/null &

本文多实例启动文件的停止mysql服务实质命令:

mysqladmin -u root -poldboy -S /data/3306/mysql.sock shutdown

mysqladmin -u root -poldboy -S /data/3307/mysql.sock shutdown

[root@MySQL /]# chown -R mysql.mysql /data

[root@MySQL /]# find /data -type f -name "my.cnf"

/data/3306/my.cnf

/data/3307/my.cnf

[root@MySQL /]# find /data -type f -name "my.cnf"|xargs ls -l

-rw-r--r--. 1 mysql mysql 1899 Oct 29  2013 /data/3306/my.cnf

-rw-r--r--. 1 mysql mysql 1901 Oct 29  2013 /data/3307/my.cnf

[root@MySQL /]# find /data -type f -name "mysql"|xargs ls -l

-rw-r--r--. 1 mysql mysql 1307 Jul 15  2013 /data/3306/mysql

-rw-r--r--. 1 mysql mysql 1307 Jul 21  2013 /data/3307/mysql

[root@MySQL /]# find /data -type f -name "mysql"|xargs chmod 700

[root@MySQL /]# find /data -type f -name "mysql"|xargs ls -l

-rwx------. 1 mysql mysql 1307 Jul 15  2013 /data/3306/mysql

-rwx------. 1 mysql mysql 1307 Jul 21  2013 /data/3307/mysql

[root@MySQL /]# ls -l /application/mysql/bin/mysql

-rwxr-xr-x. 1 root root 5345508 Aug 21 22:52 /application/mysql/bin/mysql

[root@MySQL /]# ls  /application/mysql/bin

[root@MySQL /]# echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile   #注意,echo后是单引号,双引号是不行的

[root@MySQL /]# tail -l etc/profile

export PATH=/application/mysql/bin:$PATH

[root@MySQL /]# source /etc/profile

执行source使上一行添加到/etc/profile中内容直接生效

以上命令的用途为,定义mysql全局路径,实现在任意路径执行mysql命令

[root@MySQL /]# echo $PATH

/application/mysql/bin:/application/mysql/bin:/application/mysql/bin:/application/mysql/bin:/application/mysql/bin:/application/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

执行echo $PATH有/application/mysql/bin输出表示配置成功

#提示:也可以用这条命令做软链接

[root@MySQL /]# ln -s /application/mysql/bin/* /usr/local/sbin/

[root@MySQL /]# ls -l /usr/local/sbin/mysql*

[root@MySQL /]# which mysql

/usr/local/sbin/mysql

检查

[root@MySQL /]# ls -l `which mysql`

lrwxrwxrwx. 1 root root 28 Jul 22 12:56 /usr/local/sbin/mysql -> /application/mysql/bin/mysql

[root@MySQL /]# type `which mysql`

/usr/local/sbin/mysql is /usr/local/sbin/mysql

[root@MySQL /]# cd /application/mysql/scripts/

[root@MySQL scripts]# ls

mysql_install_db

初始化mysql 3306实例

[root@MySQL scripts]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql

看到两个OK代表初始化成功

初始化mysql 3307实例

[root@MySQL scripts]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307/data/ --user=mysql

[root@MySQL scripts]# /data/3306/mysql start

Starting MySQL...

[root@MySQL scripts]# /data/3307/mysql start

Starting MySQL...

检查端口

[root@MySQL scripts]# netstat -lntup|grep 330

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      30768/mysqld

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      31494/mysqld

登录mysql实例 3306,-S /data/3306/mysql.sock 用于区别登录不同实例

[root@MySQL scripts]# mysql -S /data/3306/mysql.sock

[root@MySQL scripts]# mysql -S /data/3307/mysql.sock

重启对应的实例数据库

/data/3306/mysql stop

/data/3307/mysql start

设置mysql不同实例登录密码

[root@MySQL scripts]# mysqladmin -uroot password oldboy123 -S /data/3306/mysql.sock

[root@MySQL scripts]# mysqladmin -uroot password oldboy456 -S /data/3307/mysql.sock

带密码登录不同实例数据库方法

mysql -uroot -poldboy456 -S /data/3307/mysql.sock

mysql -uroot -poldboy123 -S /data/3306/mysql.sock

[root@MySQL scripts]# sed -i '13 s#oldboy#oldboy123#g' /data/3306/mysql

[root@MySQL scripts]# sed -n '13p' /data/3306/mysql

mysql_pwd="oldboy123"

[root@MySQL scripts]# sed -i '13 s#oldboy#oldboy456#g' /data/3307/mysql

[root@MySQL scripts]# sed -n '13p' /data/3307/mysql

mysql_pwd="oldboy456"

[root@MySQL scripts]# /data/3306/mysql stop

Stoping MySQL...

[root@MySQL scripts]# /data/3307/mysql stop

Stoping MySQL...

[root@MySQL scripts]# ss -lntup|grep 3307

[root@MySQL scripts]# ss -lntup|grep 3306

[root@MySQL scripts]# /data/3306/mysql start

Starting MySQL...

[root@MySQL scripts]# /data/3307/mysql start

Starting MySQL...

[root@MySQL scripts]# ss -lntup|grep 3306

tcp    LISTEN     0      128                    *:3306                  *:*      users:(("mysqld",32625,12))

[root@MySQL scripts]# ss -lntup|grep 3307

tcp    LISTEN     0      128                    *:3307                  *:*      users:(("mysqld",33343,11))

[root@MySQL scripts]# ss -lntup|grep 330

tcp    LISTEN     0      128                    *:3306                  *:*      users:(("mysqld",32625,12))

tcp    LISTEN     0      128                    *:3307                  *:*      users:(("mysqld",33343,11))

下面增加一个MySQL 3308端口实例的命令集合如下:

mkdir -p /data/3308/data

\cp /data/3306/my.cnf /data/3308/

\cp /data/3306/mysql /data/3308/

sed -i 's/3306/3308/g' /data/3308/my.cnf

sed -i 's/server-id=1/server-id=8/g' /data/3308/my.cnf

sed -i 's/3306/3308/g' /data/3308/mysql

chown -R mysql:mysql /data/3308

chmod 700 /data/3308/mysql

cd /application/mysql/scripts

./mysql_install_db  --datadir=/data/3308/data/ --basedir=/application/mysql/ --user=mysql

chown -R mysql:mysql /data/3308

/data/3308/mysql start

sleep 5

netstat -lnt|grep 3308

登录mysql实例3308

[root@MySQL scripts]# mysql -S /data/3308/mysql.sock

关于多实例MySQL登录问题小结

1、多实例本地登录MySQL

多实例本地登录一般通过socket文件来指定具体登录到那个实例,此文件具体位置是在mysql编译过程或者my.cnf文件里指定的。在本地登录数据库时,登录程序通过socket文件来判断登录的是那个数据库实例

2、远程连接登录MySQL多实例

远程登录MySQl多实例其中的一个实例,通过TCP端口(port)来指定所要登录的MySQL实例,此端口的配置是在mysql配置文件my.cnf中指定的

端口 port 例如:mysql -uoldboy -p'oldboy' -h 192.168.10.129 -P 3307  #-P为端口参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值