[toc]

aim.sh 自动安装 MySQL 5.6/5.7,支持自动配置SLAVE

aim.sh(http://aim.sh) 支持 CentOS/RHEL 6/7 系列的MySQL 5.6/5.7二进制包自动安装,并且支持自动配置Slave 。

用途

  • MySQL 自动安装
  • 自动配置 MySQL Slave

配置说明

etc/config 参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
slave=0
masterip=192.168.56.209
masterport=5718
mastersocket=/data/mysql_data/data_5718/mysql.sock
slaveip=192.168.56.209
ssl_user=root
ssl_passwd='password'
PRE_BASEDIR=/data/mysql
PRE_LOGDIR=/log/mysql_log
PRE_DATADIR=/data/mysql_data
MySQL_Pass=aim.sh
BASEDIR=$PRE_BASEDIR/mysql${verdir}
DATADIR=${PRE_DATADIR}/data_${PORT}
MYSQL_DATADIR=$DATADIR
MYSQL_HOME=$BASEDIR
TMPDIR=${PRE_DATADIR}/tmp_${PORT}
LOGDIR=${PRE_LOGDIR}/log_${PORT}
socket=$DATADIR/mysql.sock

参数说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
slave=0 #是否为Slave库,0 为否, 1 为是
masterip=192.168.56.09 #MySQL主库 IP
masterport=5718 #手动指定 MySQL主库 的端口号,仅slave=1有效
mastersocket=/data/mysql_data/data_5718/mysql.sock #手动指定 MySQL主库 的 sock 文件,仅slave=1有效
slaveip=192.168.56.209 #MySQL Slave 库 IP,仅slave=1有效
ssl_user=root #为了方便配置主从服务器,配置Slave和Master服务器之间免登录的 OS 用户名,通常为root,仅slave=1有效
ssl_passwd='password' # ssl_user 对应的 OS 密码,仅slave=1有效
PRE_BASEDIR=/data/mysql #MySQL安装的目录
PRE_LOGDIR=/log/mysql_log #MySQL日志目录
PRE_DATADIR=/data/mysql_data # #MySQL数据目录
BASEDIR=$PRE_BASEDIR/mysql${verdir} #MySQL安装的目录带版本号,eg mysql5.6/5.7
DATADIR=${PRE_DATADIR}/data_${PORT} #MySQL数据目录带端口号
MYSQL_DATADIR=$DATADIR
MYSQL_HOME=$BASEDIR
TMPDIR=${PRE_DATADIR}/tmp_${PORT} #MySQL tmp 目录带端口号
LOGDIR=${PRE_LOGDIR}/log_${PORT} #MySQL 日志目录带端口号

使用说明

下载 aim.sh 软件包

1
wget  https://github.com/aimdotsh/aim/archive/master.zip

使用说明

1
2
3
./aim.sh -v 版本 -p 端口号
eg:
./aim.sh -v 5.7.18 -p 5718

搭建主库

1
2
3
4
5
6
7
8
cd /root/
wget -O aim-master.zip https://github.com/aimdotsh/aim/archive/master.zip
unzip aim-master.zip
cd aim-master
#安装 MySQL 主库(Master):
chmod +x *.sh
#修改 etc/config 配置文件中的 slave=0,修改masterip为服务器的 IP 地址,以此 IP 地址确定 service_id
./aim.sh -v 5.7.18 -p 5718

搭建从库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#安装 MySQL 从库(Slave):
#例如软件包复制到 MySQL服务器的 /root/
unzip aim-master.zip
cd aim-master
#修改 etc/config 配置文件中的 slave=1,修改 masterip 为服务器的 IP 地址,修改 slaveip 为 Slave 库的 IP 地址。此两台机器需要配置 ssl 免登录,确保可以互相连接。
vi aim.sh
slave=1 #设置slave=1
masterip=192.168.56.09 #设置MySQL主库 IP
masterport=5718 #手动指定 MySQL主库 的端口号,仅slave=1有效
mastersocket=/data/mysql_data/data_5718/mysql.sock #手动指定 MySQL主库 的 sock 文件,仅slave=1有效
slaveip=192.168.56.209 #MySQL Slave 库 IP,仅slave=1有效
ssl_user=root #为了方便配置主从服务器,配置Slave和Master服务器之间免登录的 OS 用户名,通常为root,仅slave=1有效
ssl_passwd='password' # ssl_user 对应的 OS 密码,仅slave=1有效
#安装Slave
./aim.sh -v 5.7.18 -p 5718 #建议主从在不同主机上,端口相同。

启动关闭数据库

安装完成之后,MySQL 数据库默认是启动的,会在${BASEDIR} 目录下面生成启动和关闭脚本 关闭MySQL

1
${BASEDIR}/stop_${PORT}.sh

启动MySQL

1
${BASEDIR}/start_${PORT}.sh

删除 aim.sh 搭建的数据库

1
./unaim.sh -v 5.7.18 -p 5718

此操作会删除配置文件中指定的数据库文件目录请谨慎。

存在的问题

在搭建Slave的时候会配置Slave主机到Master主机上面的免登录进行数据库备份。部分主机在配置免登录的时候可能会失败,有的主机会提示输入密码,设置的等待超时时间为60s,如果在60s内手动输入密码即可以解决,但是如果超时了,会导致配置Slave失败。

解决方案,执行./unaim.sh 删除安装的数据,重新运行./aim.sh在等待输入密码的时候手动输入密码,或者手动配置免登录。

手动配置免登录

1
2
./ssh-copy-id Master库的ip地址 #根据提示输入密码,完成免登录配置,如:
./ssh-copy-id 188.188.188.188

完成之后继续运行aim.sh即可。

原文作者: liups.com

原文链接: http://liups.cn/posts/23138fcb/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议