增加.net环境部署 mysql部署 和其他

1. .Net Core 环境

需要连外网

1.1 更新yum源

rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

1.2 安装

yum install dotnet-sdk-3.1

1.3 完成后查看

dotnet -info
dotnet
dotnet
dotnet

2. MySql 环境

2.1. 安装yum源

# 下载
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装 mysql 源
yum localinstall mysql57-community-release-el7-11.noarch.rpm

2.2. 取消密钥验证

vi /etc/yum.repos.d/mysql-community.repo

将5.7 下的gpgcheck改为0;保存(Esc : wq! 回车)

dotnet

2.3. 安装

yum install -y mysql-community-server

2.4.启动服务

systemctl start mysqld
查看服务状态
systemctl status mysqld
dotnet

2.5. 设置开机启动

#开机服务
systemctl enable mysqld
# 重载所有修改过的配置文件
systemctl daemon-reload

2.6.修改root本地账户密码

#查看临时密码
grep 'temporary password' /var/log/mysqld.log
dotnet

使用临时密码登录,修改密码

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'XXXX'; 	
dotnet

以后通过 update set 语句修改密码

mysql> use mysql;
mysql> update user set password=PASSWORD('MyNewPass5!') where user='root';
mysql> flush privileges;

2.7. 添加远程登录用户

mysql> use mysql;
mysql> UPDATE user SET Host='%' WHERE User='root';
mysql> flush privileges;
dotnet

2.8. 设置默认编码

vim /etc/my.cnf
#设置字符 
character-set-client-handshake = 0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

#设置备份用户
[mysqldump]
user=root
#密码
password=xxx
[server]
max_allowed_packet = 1024M
dotnet

重启服务并检查是否已经改过来了

shell> systemctl restart mysqld
shell> mysql -uroot -p
mysql> show variables like 'character%';

配置文件:/etc/my.cnf

日志文件:/var/log/mysqld.log

服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid

启动关闭服务:systemctl start|stop mysqld

2.9. 还原数据库脚本
创建数据库

mysql -uroot -p
#输入密码
create database Test;
dotnet

创建还原脚本

vim mysqlRestore.sh
username="root" #用户名
password="Hdzx2022." #密码
mysql -u$username -p$password Test<$1

执行

/home/mysqlRestore.sh /home/20220228154729_Test.sql 

2.10. 备份数据脚本

创建备份脚本

vim /home/mysqlback.sh 
#---备份---#
!/bin/bash
backup="/home/mysqlbackup"
tablename="Test"
if [ ! -d $backup  ];then
    mkdir $backup
    chmod 777 $backup
fi
/usr/bin/mysqldump  --default-character-set=utf8  $tablename > $backup/$(date +%Y%m%d%H%M%S)$1_$tablename.sql
chmod 777 /home/mysqlback.sh

3. keepalived 安装

3.1 安装

yum install keepalived
#service keepalived start  #启动服务
#service keepalived stop    #停止服务
#service keepalived restart #重启服务
#ps -ef | grep keepalived #查看进程 3个就是启动了

3.2 查看日志

vim /var/log/messages #按G到最后一行

3.3 配置

vim /etc/keepalived/keepalived.conf

3.4 监听策略

global_defs {
    router_id MES
}
vrrp_script chk_mq {
    script                   "/etc/keepalived/chk_mq.sh"
    interval                 10 #会出现advert_int时间内无效应情况 要大于此值
    weight                  -15 #减优先级
    fall                     2 #2次失败才是失败
}
vrrp_instance VI_1 {
    state MASTER  # 备份服务器上将 MASTER 改为 BACKUP 
    interface ens32 #ip a
    virtual_router_id 51
    priority 100 #备机 90
    advert_int 1 #间隔时间
    authentication {
        auth_type PASS
        auth_pass 1111
   }
    virtual_ipaddress {
       192.168.123.45
   }
    track_script {
        chk_mq
   }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}
 global_defs {
    router_id MES
}
vrrp_script chk_mq {
    script                   "/etc/keepalived/chk_mq.sh"
    interval                 10
    weight                   -15
    fall                     2
}
vrrp_instance VI_1 {
    state MASTER
    interface em1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.123.45
    }
    track_script {
        chk_mq
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

3.5 notify.sh邮件通知

contact='xxx@xxx.com' #多个请以 -c 开头
arg=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
hostip=$arg #只拿第一个网卡 可以写死

function notify() {
   mailsubject=" IP $hostip"
   mailbody="$(date +'%F %T'),\n\n  权重变更 $1, 请检查服务状态"
   echo -e "$mailbody" | mail -s "$mailsubject"  $contact
}
function notify2() {
   mailsubject=" 服务出现异常请排查 IP $hostip"
   mailbody="$(date +'%F %T'), 服务异常 $1"
   echo "$mailbody" | mail -s "$mailsubject" $contact
}

case $1 in
    master)
        notify 主服务
       ;;
    backup)
        notify 备服务
       ;;
    fault)
        notify fault
       ;;
    *)
        notify2 $1
       ;;
esac

3.6 ch_mq.sh监听端口

#!/bin/bash
port=61614
pid=$(netstat -nlp | grep -w :$port  | awk '{print $7}' | awk -F"/" '{ print $1 }' | wc -l);
#拿到pid第一位 如果是0
if [ $pid -eq 0 ];then
     exit 1
fi
exit 0

部署表

编号 项目 内容
1 主服务器IP *
2 备份器IP *
3 虚拟IP *
4 Mysql数据库名 *
5 Mysql用户名 *
6 Mysql密码 *
7 Mysql备份路径 *
8 MySql还原脚本路径 *
9 MySql备份文件夹 *
10 Keepalived相关脚本位置 *