mysql/maridb多实例安装

本文介绍了在CentOS6.5环境下,如何通过多个配置文件安装和管理3个MariaDB实例,包括环境配置、防火墙设置、安装过程、初始化数据库、配置文件修改和创建自动启动脚本等关键步骤。
摘要由CSDN通过智能技术生成

MySQL的多实例,有两种方式:
          第一种是使用多个配置文件启动不同的进程来实现多实例。这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。
          第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理。
          推荐使用多个配置文件方式。这种实际应用中好,耦合性不强,配置方便,特别是主从复制的时候。
          这里分两次介绍,先介绍多个配置文件方式。

 

1 环境介绍:



1)简介
mysql 版本:maridb.10.0.19
cmakecmake-2.8.8
操作系统:CentOS6.5
mysql实例数:3
实例占用端口分别为:330633073308



2 配置防火墙
1) 在防火墙配置文件中添加33063307,3308(允许33063307,3308端口通过防火墙) 
# vi /etc/sysconfig/iptables   #编辑防火墙配置文件 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3308 -j ACCEPT
2)重启防火墙
# /etc/init.d/iptables restart  #最后重启防火墙使配置生效


3 安装cmake
解压
# cd /usr/local/src/mysql
# tar zxvf cmake-2.8.8.tar.gz
# cd cmake-2.8.8


配置
# ./configure


编译
# make


安装
# make install


查看版本
# cmake -version


4 安装Mysql
1) 创建用户
# groupadd mysql  #添加mysql   
# useradd -g mysql mysql -s /bin/false  #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统


2) 解压
# cd /usr/local/src/mysql
# tar zxvf mysql-5.5.27.tar.gz
# cd mysql-5.5.27


4) 配置
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 


PS: cmake的时候,参数可以不用那么多,只要一个-DCMAKE_INSTALL_PREFIX=/usr/local/mysql就行了,我们可以在my.cnf里面配置。[mysqld]中的内容,看看你copy后的my.cnf有没有这些设置,有就不用了在设置了。 


5)编译
# make


6)安装
# make install


5 初始化数据库
# mkdir -p /data0/dbdata/mysql/3306
# mkdir -p /data0/dbdata/mysql/3307
# mkdir -p /data0/dbdata/mysql/3308


# chown -R mysql:mysql /data0/dbdata/mysql/3306
# chown -R mysql:mysql /data0/dbdata/mysql/3307
# chown -R mysql:mysql /data0/dbdata/mysql/3308


# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3306 --user=mysql
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3307 --user=mysql
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3308 --user=mysql




6 修改配置文件
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3306/my.cnf
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3307/my.cnf
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3308/my.cnf


# vi /data0/dbdata/mysql/3306/my.cnf   #编辑配置文件(3307,3308同理)
#[client]部分修改一下数据
port = 3308
socket = /tmp/mysql3308.sock




#[mysqld] 部分修改数据
port = 3308
socket = /tmp/mysql3308.sock
datadir = /data0/dbdata/mysql/3308  #添加MySQL数据库路径

basedir=/usr/local/mysql 

   
:wq!  #保存退出 


7 创建自动启动文件 

创建自动启动文件
vim /data/dbdata_3306/mysqld
3306的启动文件如下:
  1. #!/bin/bash
  2. mysql_port=3306
  3. mysql_username="admin"
  4. mysql_password="password"
  5. function_start_mysql()
  6. {
  7. printf "Starting MySQL...\n"
  8. /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/dbdata_${mysql_port}/my.cnf 2>&1 > /dev/null &
  9. }
  10. function_stop_mysql()
  11. {
  12. printf "Stoping MySQL...\n"
  13. /usr/local/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /data/dbdata_${mysql_port}/mysql.sock shutdown
  14. }
  15. function_restart_mysql()
  16. {
  17. printf "Restarting MySQL...\n"
  18. function_stop_mysql
  19. function_start_mysql
  20. }
  21. function_kill_mysql()
  22. {
  23. kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
  24. kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
  25. }
  26. case $1 in
  27. start)
  28. function_start_mysql;;
  29. stop)
  30. function_stop_mysql;;
  31. kill)
  32. function_kill_mysql;;
  33. restart)
  34. function_stop_mysql
  35. function_start_mysql;;
  36. *)
  37. echo "Usage: /data/dbdata_${mysql_port}/mysqld {start|stop|restart|kill}";;
  38. esac
3307和3308同理,只需把PORT改成所需端口

cp /data/dbdata_3306/mysqld /etc/rc.d/init.d/mysqld3306
cp /data/dbdata_3307/mysqld   /etc/rc.d/init.d/mysqld3307
cp /data/dbdata_3308/mysqld   /etc/rc.d/init.d/mysqld3308
chmod 755 /etc/rc.d/init.d/mysqld3306
chmod 755 /etc/rc.d/init.d/mysqld3307
chmod 755 /etc/rc.d/init.d/mysqld3308




8 启动330633073308mysql 
# service mysqld3306 restart
# service mysqld3307 restart
# service mysqld3308 restart


9 查看端口是否监听,如果出现3306,3307,3308则启动正常
# netstat -anp | grep 3308


tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      2348/mysqld         


10 登录数据库

mysql -u root -p -S /tmp/mysql3306.sock#初始无密码,直接登录

修改密码

mysql> set password=password('111111');


登录3307,3308同理

#################################################################################################################################################

一些常用错误:

1. 111019 15:04:28 mysqld_safe The file /usr/local/mysql/bin/mysqld

does not exist or is not executable. Please cd to the mysql installation

directory and restart this script from there as follows:

./bin/mysqld_safe&

See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information
错误码如上,之前没有出现过,现在出现的是mysqld_safe在调用/usr/local/mysql/bin/mysqld的时候 这个文件不存在或者是不能够执行。这个是因为我在/etc/my.cnf这个地方没有指定在每个实例节点的basedir,添加上去basedir=/opt/mysql/即可

2. WARNING: Log file disabled. Maybe directory or file isn't writable?

mysqld_multi log file version 2.16; run: Wed Oct 19 15:07:28 2011 Starting MySQL servers
111019 15:07:29 mysqld_safe Logging to '/data/mysql_data/error.err'.
111019 15:07:29 mysqld_safe Logging to '/data/mysql_data3307/error.err'.
111019 15:07:29 mysqld_safe Logging to '/data/mysql_data3307/error.err'.
111019 15:07:29 mysqld_safe Starting mysqld daemon with databases from /data/mysql_data/
111019 15:07:29 mysqld_safe Starting mysqld daemon with databases from /data/mysql_data3307/
111019 15:07:29 mysqld_safe Starting mysqld daemon with databases from /data/mysql_data3308/

会有如上提示,意思是mysqld_mutil多实例启动一个日志文件没有找到或者没有权限写入,而且把这些日志信息打印出来,非常不好。
解决方法:在[mysqld_mutil]这个节点下加一个log = /opt/mysql/mysqld_mutil.err即可,启动不会有如上警告且不会将日志信息打印在屏幕上,可在日志文件中查看

3. Can't execute /usr/local/mysql/bin//mysqld_multi from dir /usr/local/
该错误是因为没有找到mysqld_mutil这个启动文件,因为我的mysql安装文件不放在/usr/local这个目录下,所有会出现如上三个错误。

4. Please make sure you have this command available and in your path. The command is available from the latest MySQL distribution.ABORT: Can't find command 'my_print_defaults'.This command is available from the latest MySQL distribution. Please make sure you have the command in your PATH.
在用/etc/init.d/mysqldm start启动时,报如上错误,export  PATH=$PATH:/opt/mysql/bin;添加mysql的bin目录至环境变量,可以启动。
而将mysqldm添加至服务启动,发现未能够开机启动。放入/etc/rc.local脚本启动,发现也未能够启动,后来使用/etc/init.d/mysqldm start &> /opt/mysql/errrc.local,在errc.local中截取到如上错误。
解决方法:在/etc/init.d/mysqldm的basedir=/opt/mysql后面加入export  PATH=$PATH:/opt/mysql/bin;该条即可。(注,若为加入该条语句,可能在使用service mysqldm start 命令时,也会报如上错误).
 

5.my.cnf文件权限



6.另外,大部分错误是以为我没有将mysql安装在/usr/local目录下面,之前一直放在该目录下面。所以,大家在安装mysql的时候 ,尽量放在/usr/local目录下,若一定不放在该目录下面,需要修改几处配置文件,一般为/etc/init.d/mysqld_m、mysqld_mutil、my.cnf这些常见的配置文件中的数据存放路径、基础路径、日志路径等、


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值