Centos7 build mysql5.7
ip 192.168.20.181 192.168.20.182
1. Turn off the firewall and selinux first
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# setenforce 0
2. Check whether mysql is installed and uninstall if there is
[root@192 ~]# rpm -qa |grep mysql
3. Install the download tool
[root@192 ~]# yum -y install wget
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirrors.huaweicloud.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.huaweicloud.com
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 194 kB 00:00:00
(3/4): updates/7/x86_64/primary_db | 1.3 MB 00:00:00
(4/4): base/7/x86_64/primary_db | 6.1 MB 00:00:02
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================================================================
Package 架构 版本 源 大小
=========================================================================================================================================
正在安装:
wget x86_64 1.14-18.el7_6.1 base 547 k
事务概要
=========================================================================================================================================
安装 1 软件包
总下载量:547 k
安装大小:2.0 M
Downloading packages:
wget-1.14-18.el7_6.1.x86_64.rpm | 547 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : wget-1.14-18.el7_6.1.x86_64 1/1
验证中 : wget-1.14-18.el7_6.1.x86_64 1/1
已安装:
wget.x86_64 0:1.14-18.el7_6.1
完毕!
4. Use wget to download the installation package
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
[root@192 ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
--2020-05-22 10:41:17-- https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
正在解析主机 dev.mysql.com (dev.mysql.com)... 137.254.60.11
正在连接 dev.mysql.com (dev.mysql.com)|137.254.60.11|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://repo.mysql.com//mysql57-community-release-el7-9.noarch.rpm [跟随至新的 URL]
--2020-05-22 10:41:18-- https://repo.mysql.com//mysql57-community-release-el7-9.noarch.rpm
正在解析主机 repo.mysql.com (repo.mysql.com)... 104.75.165.42
正在连接 repo.mysql.com (repo.mysql.com)|104.75.165.42|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9224 (9.0K) [application/x-redhat-package-manager]
正在保存至: “mysql57-community-release-el7-9.noarch.rpm”
100%[===============================================================================================>] 9,224 --.-K/s 用时 0s
2020-05-22 10:41:21 (270 MB/s) - 已保存 “mysql57-community-release-el7-9.noarch.rpm” [9224/9224])
5. View the downloaded package
[root@192 ~]# ll
总用量 16
-rw-r--r--. 1 root root 9224 9月 12 2016 mysql57-community-release-el7-9.noarch.rpm
6. Unzip the installation package
[root@192 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
警告:mysql57-community-release-el7-9.noarch.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql57-community-release-el7-9 ################################# [100%]
After the execution is complete, two repo files will be generated in the /etc/yum.repos.d/ directory mysql-community.repo mysql-community-source.repo
Use the yum command to complete the installation.
Note: You must enter the /etc/yum.repos.d/ directory and then execute the following command
[root@192 yum.repos.d]# yum -y install mysql mysql-server
已安装:
mysql-community-client.x86_64 0:5.7.30-1.el7 mysql-community-libs.x86_64 0:5.7.30-1.el7
mysql-community-libs-compat.x86_64 0:5.7.30-1.el7 mysql-community-server.x86_64 0:5.7.30-1.el7
作为依赖被安装:
mysql-community-common.x86_64 0:5.7.30-1.el7
作为依赖被升级:
postfix.x86_64 2:2.10.1-9.el7
替代:
mariadb-libs.x86_64 1:5.5.56-2.el7
完毕!
7, modify the configuration file
[root@192 yum.repos.d]# vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
skip-grant-tables
8. Start the database
[root@192 yum.repos.d]# systemctl restart mysqld
9. Enter the database
[root@192 yum.repos.d]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30-log MySQL Community Server (GPL)
Copyright (c) 2000, 2020, 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.
10. Solution
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> alter user root@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@192 yum.repos.d]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.30-log MySQL Community Server (GPL)
Copyright (c) 2000, 2020, 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> exit
Bye
11. Enter the database authorization
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to tom@'%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 | 756 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
12. Just modify the configuration file with the same operation of installing the database from above
[root@192 yum.repos.d]# vim /etc/my.cnf
[mysqld]
server-id=2
relay-log=mysql-relay
13, start the database
[root@192 yum.repos.d]# systemctl start mysqld
14. Synchronizing from the server
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to
-> master_host='192.168.20.181',
-> master_user='tom',
-> master_password='123',
-> master_log_file='mysql-bin.000008',
-> master_log_pos=756;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
15. Check whether the master and slave are synchronized
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.20.181
Master_User: tom
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 756
Relay_Log_File: mysql-relay.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
16. Haproxy installation:
[root@localhost ~]# yum -y install haproxy
17. Configuration file path: /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode tcp
log global
option dontlognull
option redispatch
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 600
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
listen stats //配置haproxy状态页(用来查看的页面)
mode http
bind :8888
stats enable
stats hide-version //隐藏haproxy版本号
stats uri /haproxyadmin?stats //一会用于打开状态页的uri
stats realm Haproxy\ Statistics //输入账户密码时的提示文字
stats auth admin:admin //用户名:密码
# MySQL 负载配置
listen proxy-mysql
bind 0.0.0.0:13306 # 监听端口
mode tcp # 模式
balance roundrobin # 负载均衡的方式,轮询(平均)方式
option tcplog # 允许记录tcp 连接的状态和时间
#option mysql-check user haproxy
server MySQL1 192.168.20.181:3306 check weight 1 maxconn 2000
server MySQL2 192.168.20.182:3306 check weight 1 maxconn 2000
option tcpka # 是否允许向server和client发送keepalive
18. Start Haproxy
[root@localhost ~]# systemctl restart haproxy
19. Check whether the startup is successful
[root@localhost ~]# ps -ef |grep haproxy
root 14961 1 0 10:58 ? 00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy 14963 14961 0 10:58 ? 00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy 14964 14963 0 10:58 ? 00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
root 14966 14796 0 10:58 pts/2 00:00:00 grep --color=auto haproxy
20. Check the load status
http://192.168.20.181:8888/haproxyadmin?stats
21. The steps to install HAProxy are the same on 192.168.20.182.
[root@localhost ~]# yum -y install keepalived
22. Configuration file path: /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#简单的头部,这里主要可以做邮件通知报警等的设置,此处就暂不配置了;
global_defs {
notificationd LVS_DEVEL
}
#预先定义一个脚本,方便后面调用,也可以定义多个,方便选择;
vrrp_script chk_haproxy {
script "/etc/keepalived/chk.sh" #具体脚本路径
interval 2 #脚本循环运行间隔
}
#VRRP虚拟路由冗余协议配置
vrrp_instance VI_1 {
#VI_1 是自定义的名称;
state MASTER #MASTER表示是一台主设备,BACKUP表示为备用设备【我们这里因为设置为开启不抢占,所以都设置为备用】
nopreempt #开启不抢占
interface ens33 #指定VIP需要绑定的物理网卡
virtual_router_id 11 #VRID虚拟路由标识,也叫做分组名称,该组内的设备需要相同
priority 120 #定义这台设备的优先级 1-254;开启了不抢占,所以此处优先级必须高于另一台
advert_int 1 #生存检测时的组播信息发送间隔,组内一致
authentication {
#设置验证信息,组内一致
auth_type PASS #有PASS 和 AH 两种,常用 PASS
auth_pass asd #密码
}
virtual_ipaddress {
192.168.20.180 #指定VIP地址,组内一致,可以设置多个IP
}
track_script {
#使用在这个域中使用预先定义的脚本,上面定义的
chk_haproxy
}
notify_backup "systemctl restart haproxy" #表示当切换到backup状态时,要执行的脚本
notify_fault "systemctl stop haproxy" #故障时执行的脚本
}
23. Scripting
[root@localhost ~]# vim /etc/keepalived/chk.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
systemctl stop keepalived
fi
[root@localhost ~]# chmod 777 /etc/keepalived/chk.sh
24, start keepalived
[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:15:37:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.20.181/24 brd 192.168.117.255 scope global noprefixroute dynamic ens33
valid_lft 1632sec preferred_lft 1632sec
inet 192.168.20.180/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::fdf1:237c:2a96:81c6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
25. The steps to install Keepalived are on 192.168.20. 182. Just do the same steps.
26. Manually kill HAProxy on the host, an error message appeared, and then continue to add operations.
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:83:3b:07 brd ff:ff:ff:ff:ff:ff
inet 192.168.20.182/24 brd 192.168.117.255 scope global noprefixroute dynamic ens33
valid_lft 1505sec preferred_lft 1505sec
inet 192.168.20.180/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::f6e7:5569:d37:4950/64 scope link noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::fdf1:237c:2a96:81c6/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever