以管理员身份进行以下操作:
删除centos预先安装的mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -qa | grep mariadb
安装MySQL依赖
yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*
创建MySQL工作目录
cd ~ && mkdir mysql && cd mysql
安装cmake
wget http://www.cmake.org/files/v3.4/cmake-3.4.0.tar.gz
tar -zxvf cmake-3.4.0.tar.gz && cd cmake-3.4.0
./configure
gmake && make install
安装MySQL
rm -rf /etc/my.cnf && rm -rf /etc/init.d/mysqld
userdel mysql
groupdel mysql
groupadd mysql
useradd -g mysql mysql
cd ~/mysql
wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.54.tar.gz
tar -zxvf mysql-5.5.54.tar.gz cd mysql-5.5.54
执行cmake命令
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGIME=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql
make && make install
修改MySQL文件权限,创建软连接,复制MySQL配置文件等
chmod +w /usr/local/mysql && chown -R mysql:mysql /usr/local/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 #软连接
cd support-files #里面有多个my-*.cnf,large,huge,small,medium,不同的配置适用于不同的机器
cp my-large.cnf /etc/my.cnf && cp mysql.server /etc/init.d/mysqld
修改配置文件
vi /etc/my.cnf
在[mysqld]下面添加
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/mysql_error.log
pid-file = /usr/local/mysql/data/mysql.pid
default-storage-engine=InnoDB
user = mysql
vi /etc/init.d/mysqld
修改路径
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
完成MySQL初始化
/usr/local/mysql/scripts/mysql_install_db \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--user=mysql
将MySQL加入开机启动
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld && chkconfig --level 345 mysqld on
为MySQL配置环境变量
vi ~/.bashrc
export PATH=/usr/local/mysql/bin:$PATH
source ~/.bashrc
启动MySQL
service mysqld start
配置root密码
cd /usr/local/mysql && /usr/local/mysql/bin/mysql_secure_installation (一开始root初始密码为空)
允许MySQL远程连接
# mysql -u root -p
>use mysql;
>grant all privileges on *.* to root@'%' identified by "password";
至此在Centos 7上完成了MySQL 5.5的安装。
MySQL的主主复制即为两个MySQL之间互为主从关系。通过主主复制,可以达到容灾防范,同时为后面的MySQL负载均衡做好准备。
在两台Centos虚拟机中分别安装好MySQL数据库,这两台虚拟机的地址分别被192.168.200.214与192.168.200.215,下午中分别称为214机与215机。
214机上操作:
a) 在214机的MySQL中为215机建立一个可以登录的用户
用户名:mysql12,密码:mysql12
mysql>GRANT REPLICATION SLAVE ON *.* TO 'mysql12'@'192.168.200.215' IDENTIFIED BY 'mysql12';
mysql>FLUSH PRIVILEGES;
b) 查看214机上MySQL服务器二进制文件名与位置
mysql>SHOW MASTER STATUS;
c) 修改214机中MySQL的配置文件 (在215机器上做相同配置server-id=215)
vi /etc/my.cnf
server-id=214
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1
binlog-ignore=mysql #忽略mysql库,可以不写
binlog-ignore=information_schema #忽略information_schema库,可以不写
replicate-do-db=test #要同步的数据库,默认所有库,可以不写
auto_imcrement(步进值,一般有n台主MySQL就填n),auto_increment_offset(起始值。一般填第n台主MySQL。此时为第一台主MySQL)。
这两个值非常重要,如果不配置,则会导致主键重复而引起的插入冲突。
配置完成后重启MySQL服务。
d) 在215机上的MySQL中进行从属配置
mysql>CHANGE MASTER TO
>MASTER_HOST=’192.168.200.214’,
>MASTER_USER=’mysql12’,
>MASTER_PASSWORD=’mysql12’,
>MASTER_LOG_FILE=’mysql-bin.000016’,
>MASTER_LOG_POS=107;
在215机中开启从属复制
mysql>SLAVE START;
mysql>SHOW SLAVE STATUS\G
当看见Slave_IO_Running: YES、Slave_SQL_Running: YES时,主从复制即完成。
在215机上的MySQL中对214机进行相同的主从配置操作,用户名可以为mysql21,密码为mysql21。
至此214机与215机实现了主主复制。无论在214机还是215机的MySQL中进行更新操作,均会相应的体现在另一台机器上面。
Haproxy做为负载均衡的中间件,它将被安装在地址为192.168.200.216的虚拟机中。
groupadd haproxy
useradd -g haproxy haproxy
yum install haproxy
A) 关闭SELinux
如果不想配置SELinux策略,则一定要关闭SELinux。否则Haproxy和所代理的后端会出现端口连接错误。
vi /etc/selinux/config
// 修改为
SELINUX=disabled
设置后需要重启才能生效。
B) 将Haproxy加入Centos的系统服务中
将Haproxy压缩包中(haproxy-1.5.14.tar.gz,直接用yum安装的话,压缩包需要单独下载)examples文件夹下的haproxy.init拷贝至/etc/init.d文件夹下,更名为haproxy。
chmod +x /etc/init.d/haproxy
chkconfig haproxy on
重启系统即可完成开机自动启动Haproxy服务。
C) 开启Haproxy的日志服务
创建记录日志文件
touch /var/log/haproxy.log
chown haproxy:haproxy /var/log/haproxy.log
chmod a+x /var/log/haproxy.log
开启rsyslog记录haproxy日志功能
vi /etc/rsyslog.conf
(打开如下配置项)
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
(在RULES块中添加)
#### RULES ####
# save haproxy.log
local0.* /var/log/haproxy.log
修改/etc/sysconfig/rsyslog文件,内容如下:
vi /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-r -m 0 -c 2"
配置Haproxy打开日志服务
vi /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
重启rsyslog与Haproxy服务
service rsyslog restart
service haproxy restart
查看Haproxy日志文件
tail -f /var/log/haproxy.log
D) Haproxy基础配置
vi /etc/haproxy/haproxy.cfg
global
global
log 127.0.0.1 local0
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
defaults
mode tcp
log global
option dontlognull // 不记录健康检查日志
option httpclose
option httplog
option redispatch // serverId对应的服务器挂掉后,强制定向到其他健康的服务器
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
E) 开启Haproxy监控页面
在/etc/haproxy/haproxy.cfg中进行配置:
vi /etc/haproxy/haproxy.cfg
listen admin_stats
mode http
stats enable
bind *:8080 // 监听端口
stats refresh 30s
stats uri /admin // 统计页面访问的url
stats realm haproxy
stats auth root:root // 认证用户与密码
stats hide-version
在主机浏览器地址栏中输入192.168.200.216:8080/admin即可访问统计页面。
D) 进行MySQL负载均衡配置
在/etc/haproxy/haproxy.cfg中进行配置:
vi /etc/haproxy/haproxy.cfg
frontend main *:5000 // Haproxy对外部访问MySQL请求的监听端口
default_backend mysql_backend
backend mysql_backend
balance leastconn // 最小连接数为筛选的负载均衡原则
server mysql1 192.168.200.214:3306 check port 3306 maxconn 300 // 一定要加check,否则Haproxy会认为该server一直是可用状态
server mysql2 192.168.200.215:3306 check port 3306 maxconn 300
至此重新启动Haproxy,在监控页面中就可以看见mysql1与mysql2两个可用的数据库。
在数据库连接工具(如MySQL workbench)中,配置新的MySQL连接时,地址不再是214或者215,而是Haproxy所在的216虚拟机。同时端口需要输入Haproxy所监听的5000端口。
在验证过程中,我们任意停止214机,或者215机,均可以在数据库客户端保持正常的数据访问操作。同时214机或者215机一旦恢复启动,会通过主主复制,把想要的数据复制到数据库中。