linux安装mysql-5.7.22与数据自动备份

时间:2022-09-23 11:36:07

mysql官网下载地址
https://dev.mysql.com/downloads/mysql/5.7.html#downloads

首先将mysql压缩包解压到/usr/local目录下
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar
将解压出来文件重命名为mysql
mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql

添加用户与用户组
groupadd mysql
添加用户mysql 到用户组mysql
useradd -g mysql mysql

安装-进入mysql目录

cd /usr/local/mysql
新建data文件
mkdir data
改变目录拥有着mysql
chown -R mysql:mysql ./
在mysql目录下执行安装命令,执行输出完之后尾部会有mysql的初始密码
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

将mysql/目录下除了data/目录的所有文件,改回root用户所有
chown -R root .
mysql用户只需作为mysql-5.7.20/data/目录下所有文件的所有者
chown -R mysql data

复制文件到系统目录
cp support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

cp bin/my_print_defaults /usr/bin/

修改启动脚本

vi /etc/init.d/mysqld

修改项如下:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306

加入环境变量,编辑 /etc/profile,这样就无需定位到mysql目录执行了
vi /etc/profile
添加mysql路径,加入下面内容,按ESC-->:wq保存
export PATH=$PATH:/usr/local/mysql/bin
刷新立即生效
source /etc/profile

修改mysql配置项

vi /etc/my.cnf

配置如下:

[mysqld]
basedir = /usr/local/mysql/
datadir = /usr/local/mysql/data/
socket = /tmp/mysql.sock
user = mysql
tmpdir = /tmp
symbolic-links=0
lower_case_table_names=1 # add here 添加大小写不区分
[mysqld_safe]

log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid

启动mysql

service mysql start
service mysqld start

修改mysql初始密码以及远程链接的用户权限问题
mysql -u root -p

ALTER USER USER() IDENTIFIED BY 'root';

use mysql;

update user set host = '%' where user ='root';

flush privileges;

远程连接mysql异常缓慢,

解决方法,my.ini里面添加如下 

[mysqld]
skip-name-resolve
skip-grant-tables

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面编写备份脚本

#cd  /home/

#vi back.sh

编写如下

#!/bin/bash
#保留备份个数,会删除时间较早的.dump备份
number=3
#设置备份保存路径,替换成自己的备份保存路径
backup_dir=/root/db_askdata/
#日期格式
dd=`date +%Y%m%d`
#备份工具
tool=mysqldump
#数据库用户名
username=root
#数据库密码,由于密码可能包含特殊字符,需要用''转义
password='intel@123'
#数据库链接地址
host='192.168.1.111'
#数据库看装目录,如该文件执行生成的.dump文件没有数据则在tool前加上这一变量,反之则去掉
mysql=/usr/local/mysql/bin/
#将要备份的数据库名称,yourdb替换成自己要备份的数据库名,此脚本只支持备份一个数据库,多数据库mysqldump用法
database_name=jeesite_ukefu
#远程备份
$mysql$tool -h$host -u $username -p$password --databases $database_name > $backup_dir/$database_name-$dd.dump
#本地备份
#$mysql$tool -u $username -p$password --databases $database_name > $backup_dir/$database_name-$dd.dump
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt

#查询本目录下所有备份文件
#查询备份文件是按照备份文件的生成时间来计算的
FileNum=$(ls -l $backup_dir/*.dump | grep ^- | wc -l)
echo "Number of backup files:"$FileNum >> $backup_dir/log.txt
while(( $FileNum > $number ))
do
#取最旧的文件,*.*可以改为指定文件类型
OldFile=$(ls -rt $backup_dir/*.dump | head -1)
echo "Delete File:"$backup_dir'/'$OldFile >> $backup_dir/log.txt
rm -f $OldFile
let "FileNum--"
done

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

利用crond实现自动备份

下面的安装方法

#yum install vixie-cron
#yum install crontabs
主要命令操作

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

配置文件配置

crontab -e

配置实例

添加如下

01 00 * * * /home/back.sh
每天00点01分执行back.sh