环境配置
- 镜像:Debain11.6.0-AMD64-DVD,安装标准套件
- MySQL 8.0.32
基础服务器配置
调整VI编辑器默认输入
默认情况下,Debian安装完成后的Vi编辑器处于兼容模式,这会导致我们输入内容异常,以及字符乱跳
首先,输入vi /etc/vim/vimrc.tiny
打开vi编辑器配置文件,将set compatible
改为set nocompatible
其次,在此行下另起一行,增加内容 set backspace=2
保存后立即生效
配置中科大(USTC)镜像软件源
我不清楚Debian的自动软件包配置是存在了什么奇怪的BUG,在安装引导过程中选择的软件源在你安装完成后并不会保留,而是默认的ISO镜像源,这导致了我每次装它都要手动重新配置一次软件源
首先,输入apt edit-sources
或vi /etc/apt/sources.list
打开apt源配置文件,增加以下内容
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
#
号注释的两行安装MySQL(APT方式)
首先,下载MySQL APT 存储库 MySQL :: Download MySQL APT Repository
wget https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb
使用dpkg安装存储库,并选择是否要安装配套工具。 一般选择不。 在下图中移动到ok,回车即可
dpkg -i mysql-apt-config_0.8.24-1_all.deb mysql-apt-config_0.8.24-1_all.deb
开始安装
apt update
apt install mysql-server -y
中途会让你配置root密码以及加密方式选择,按需配置即可,安装过程还是很快的
安装完成后,确认MySQL运行状态以及版本号
systemctl status mysql
mysql --version
初始化MySQL安全配置
mysql_secure_installation
根据介绍自行选择Y或N,我这里放一下我的配置截图,非正式环境,仅供参考
mysql -u root -p
#以下为MySQL命令
use mysql;
update user set host='%' where user='root';
grant all privileges on *.* to 'root'@'%';
flush privileges;
数据库定时备份/恢复脚本
Shell脚本编写
这里我们再写一个定时备份数据库的脚本
创建mysql_backup.sh
并授予执行权限
touch mysql_backup.sh
chmod +x mysql_backup.sh
根据需要修改脚本内容,由于脚本是直接拼接了用户名与密码来执行,在新版的MySQL中会有个mysql: [Warning] Using a password on the command line interface can be insecure.
警告,不过问题不大
#!/bin/bash
db_user='root'
db_password='123456'
db_name='test'
backup_dir='/root/backup/mysql/'
current_time=$(date +'%Y-%m-%d_%H%M%S')
filepath=$backup_dir$current_time'.sql.gz'
echo '检查目录...'
if [ ! -d "$backup_dir" ]; then
echo '指定目录不存在,创建目录'$backup_dir
mkdir $backup_dir
fi
if [ ! -w "$backup_dir" ]; then
echo '无写权限,赋予目录写权限'
chomd u+w $backup_dir
fi
echo '开始导出数据库...'
mysqldump -p$db_password -u$db_user $db_name | gzip > $filepath
if [ -f "$filepath" ]; then
echo '导出成功,文件名为: '$filepath
else
echo '导出失败,请检查配置!'
fi
创建mysql_restore.sh并授予执行权限
touch mysql_backup.sh
chmod +x mysql_restore.sh
#!/bin/bash
if [ -z $1 ] || [ ! -f $1 ]
then
echo "请输入sql压缩文件(*.sql.gz)"
exit 1
fi
db_user='root'
db_password='123456'
db_name='test'
base_dir='/root/backup/mysql/'
gz_sql_file=basename $1
file_ext=${gz_sql_file##*.}
if [ $file_ext != 'gz' ]
then
echo '文件格式不正确,请输入 .sql.gz 文件'
exit 1
fi
sql_file=${gz_sql_file%.*}
echo '解压文件中...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo '解压完成.'
echo '开始导入数据库...'
mysql -p$db_password -u$db_user $db_name < $base_dir$sql_file
if [ -f $base_dir$sql_file ]
then
echo '删除临时文件.'
rm -f $base_dir$sql_file
fi
echo '导入完成.'
Crontab定时器设置
这里我们使用crontab来进行脚本的定期自动执行,以达到定时备份的效果
执行crontab -e
,添加下面的内容
0 0 * * * /data/backup/mysql_backup.sh
#每天零点自动执行一次
暂无评论内容