Centos 7下安装MySQL 5.5

以管理员身份进行以下操作:


删除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 5.5的主主复制

MySQL的主主复制即为两个MySQL之间互为主从关系。通过主主复制,可以达到容灾防范,同时为后面的MySQL负载均衡做好准备。


在两台Centos虚拟机中分别安装好MySQL数据库,这两台虚拟机的地址分别被192.168.200.214与192.168.200.215,下午中分别称为214机与215机。


A) 实现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;


Centos 7_MySQL主主复制_Haproxy实现负载均衡_linux

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

Centos 7_MySQL主主复制_Haproxy实现负载均衡_mysql_02

当看见Slave_IO_Running: YES、Slave_SQL_Running: YES时,主从复制即完成。


B) 实现215机与214机的主从复制

在215机上的MySQL中对214机进行相同的主从配置操作,用户名可以为mysql21,密码为mysql21。


至此214机与215机实现了主主复制。无论在214机还是215机的MySQL中进行更新操作,均会相应的体现在另一台机器上面。


Centos 7下安装Haproxy,配置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即可访问统计页面。

Centos 7_MySQL主主复制_Haproxy实现负载均衡_linux_03

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机一旦恢复启动,会通过主主复制,把想要的数据复制到数据库中。