SUSE上部署MHA
目录
第1章 准备工作
- 1.1 服务器版本信息
TEST-108:~ # cat /etc/issue
Welcome to SUSE Linux Enterprise Server 11 SP3 (x86_64) - Kernel \r (\l).
TEST-108:~ # lsb_release -a
LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE Linux Enterprise Server 11 (x86_64)
Release: 11
Codename: n/a
- 1.2 系统编码设置
TEST-108:~ # locale #<==查看语言环境
LANG=POSIX
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
为方便后期排错,我们将其更改为中文环境。
TEST-108:~ # echo "export LC_ALL="zh_CN.UTF-8"" >>/etc/profile
TEST-108:~ # echo "export LANG="zh_CN.UTF-8"" >>/etc/profile
TEST-108:~ # source /etc/profile
TEST-108:~ # echo $LANG
zh_CN.UTF-8
- 1.3 查看防火墙状态
TEST-108:~ # chkconfig --list|grep fire
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[1] : http://www.wo81.com/tec/os/suse/2014-04-21/129.html SLES 11 SP3防火墙设置
[2] : http://blog.sina.com.cn/s/blog_4761faa40100nr95.html SUSE Linux 关闭防火墙的命令
- 1.4 关闭SElinux
SUSE Linux 默认不会开启 SELinux
YaST–>系统–>运行级别–>关闭SELinux 即可.
如果你用了内核参数的形式的,必须修改GRUB,在 引导代码后添加:selinux=0
提示:在另外两台机器上也做上述同样的操作。
第2章 安装数据库
- 2.1 机器规划
本次测试准备了三台SUSE系统的机器,IP地址为:10.0.0.108-10.0.0.110。
角色 | IP地址 | 主机名 |
---|---|---|
MHA manager | 10.0.0.110 | TEST-110 |
MySQL master | 10.0.0.108 | TEST-108 |
MySQL slave1 | 10.0.0.109 | TEST-109 |
MySQL slave2 | 10.0.0.110 | TEST-110 |
- 2.2 安装MySQL master
2.2.1 创建mysql用户并进入
TEST-108:~ # useradd -m mysql
TEST-108:~ # passwd mysql
Changing password for mysql.
新口令: #<==mysql
无效的口令:过于简单
重新输入新口令: #<==mysql
口令已更改。
2.2.2 上传已经准备好的MySQL安装包
首先通过Xftp的方式将rzsz-0.12.20-934.22.x86_64.rpm的rpm包上传并安装,方便后期通过rz、sz命令执行上传和下载的工作。
TEST-108:~ # cd /home/mysql/
TEST-108:/home/mysql # rpm -ivh rzsz-0.12.20-934.22.x86_64.rpm
Preparing... ########################################### [100%]
1:rzsz ########################################### [100%]
rzsz-0.12.20-934.22.x86_64.rpm的rpm包百度云分享
链接:http://pan.baidu.com/s/1c1UPRXY 密码:apmh
mysql@TEST-108:~> rz #<==上传已经打包好的MySQL安装包
mysql@TEST-108:~> ll
-rw-r--r-- 1 root root 323661730 8月 10 18:55 mysql_ok.tar.gz
mysql@TEST-108:~> tar xvf mysql_ok.tar.gz
mysql_ok.tar.gz的tar包百度云分享
链接:http://pan.baidu.com/s/1gf3VFI7 密码:pwk3
2.2.3 修改相关配置文件并启动
mysql@TEST-108:~> cd scripts/
mysql@TEST-108:~/scripts> cat modify_userdir.sh
#!/bin/sh
userdir="/home/db" #<==将用户家目录改为/home/mysql
sed -i "s#/usr/local#${userdir}#g" ${userdir}/dbdata/my.cnf
sed -i "s#/dbdata#${userdir}/dbdata#g" ${userdir}/dbdata/my.cnf
sed -i "s#/home/db#${userdir}#g" ${userdir}/.bash_profile
mysql@TEST-108:~/scripts> sh modify_userdir.sh
修改启动脚本:
mysql@TEST-108:~/scripts> cat start_mysql.sh
#!/bin/sh
userdir="/home/db" #<==将用户家目录改为/home/mysql
cd ${userdir}/mysql;./bin/mysqld_safe --defaults-file=${userdir}/dbdata/my.cnf &
mysql@TEST-108:~/scripts> sh start_mysql.sh #<==启动数据库
mysql@TEST-108:~/scripts> netstat -lntup|grep mysql #<==查看端口
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::3307 :::* LISTEN 4442/mysqld
mysql@TEST-108:~/scripts> mysql -uroot -S /tmp/mysql.sock
#<==进入数据库
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.23-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
- 2.3 安装MySQL Slave1和MySQL Slave2
提示: 在10.0.0.109和10.0.0.110这两台机器上按上述步骤再分别安装数据库。
2.3.1 启动过程中的错误排查
mysql@TEST-109:~> sh scripts/start_mysql.sh
mysql@TEST-109:~> 170815 21:24:14 mysqld_safe Logging to '/home/mysql/dbdata/data/mysqld_3307.log'.
170815 21:24:14 mysqld_safe Starting mysqld daemon with databases from /home/mysql/dbdata/data
mysql@TEST-109:~> which mysql
which: no mysql in (/home/mysql/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin)
解决方式:
mysql@TEST-109:~> echo "export PATH=/home/mysql/mysql/bin/:$PATH" >>.bash_profile
mysql@TEST-109:~> source .bash_profile
mysql@TEST-109:~> which mysql
/home/mysql/mysql/bin/mysql
第3章 数据库主从复制
- 3.1 准备工作
3.1.1 保证10.0.0.108~10.0.0.110这三台机器的server-id的唯一性。
mysql@TEST-108:~> egrep "server-id|log-bin" dbdata/my.cnf
log-bin=mysql-bin
server-id = 1
mysql@TEST-109:~> egrep "server-id|log-bin" dbdata/my.cnf
log-bin=mysql-bin
server-id = 2
mysql@TEST-110:~> egrep "server-id|log-bin" dbdata/my.cnf
log-bin=mysql-bin
server-id = 3
3.1.2 保证10.0.0.108~10.0.0.110这三台机器的UUID的唯一性
mysql@TEST-108:~> cat dbdata/data/auto.cnf
[auto]
server-uuid=f60c196f-4c71-11e6-8558-000c29ba27ff
mysql@TEST-109:~> cat dbdata/data/auto.cnf
[auto]
server-uuid=f60c196f-4c71-11e6-8558-