mysql5.7 master-slave build

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
Insert picture description here
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

Guess you like

Origin blog.csdn.net/lq_hello/article/details/106277147