一、前言
最近一位"无中生友"询问我如何解决他们公司的mysql数据库的异地备份解决方案, 今天在网上搜索了几个比较可行的方案, 整理了一下, 发上来送给我这位老友.
二、FTP服务器的设置
1. 自行准备一台FTP备份服务器
我这里准备的是centos 7.9 的服务器.
2. 安装vsftpd软件包
yum -y install vsftpd db4 db4-utils
3. 创建vsftpd用户
# 创建备份用户并指定用户家目录
useradd -s /sbin/nologin -d /opt/data mysqlbak
# 设置密码
passwd mysqlbak
# 输入密码和确认密码后即可
4. 配置vsftpd
vim /etc/vsftpd/vsftpd.conf
# 开启如下选项
local_enable=YES # 允许本地用户登入
write_enable=YES # 允许本地用户写
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES # 所有的本地用户限制在自己的家目录
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO # 只有/etc/vsftpd/user_list文件下用户可以登入ftp服务器
allow_writeable_chroot=YES # vsftpd 2.5.3后给用户主目录的写权限
guest_enable=YES # 开启虚拟用户
guest_username=mysqlbak # 虚拟用户对应本地用户
tcp_wrappers=YES
virtual_use_local_privs=YES
# 关闭如下选项
listen_ipv6=YES # 注释掉此项
5. 创建虚拟用户文件
touch /etc/vsftpd/vuser.txt
echo "webbak" > /etc/vsftpd/vuser.txt
echo "webbak" >> /etc/vsftpd/vuser.txt
6. 添加允许登入ftp服务器用户到/etc/vsftpd/user_list文件
echo "mysqlbak" >> /etc/vsftpd/user_list
7. 启动vsftpd服务, 并设置开机启动
# 开启vsftp
service vsftpd start
# 开机自启动
chkconfig vsftpd on
三、测试FTP服务器是否正常运行
1. 安装ftp软件包
yum -y install ftp
2. 连接本机的ftp进行测试
ftp 0.0
# 输入账号密码后, 会出现登录成功或登录失败提示
# 登录成功会提示: 230 Login successful
3. 出现530 Login incorrect. Login failed错误时的设置
vim /etc/shells
# 如果文件中没有/sbin/nologin, 则在文件最后一行将其填入
4. 出现vsftpd 500 OOPS: chroot错误时的设置
vim /etc/selinux/config
SELINUX=disabled
# 设置完, 重启服务器
# shutdown -r now
5. 补充说明
# 光标一直在ftp> 时的退出方法
# 1. 输入exit
# 2. ctrl + D
# 输入账号时按退格出现^H的解决办法
# 使用ctrl + 退格即可
四、参考资料
1. 本文基于https://blog.51cto.com/davidbj/1200783 进行制作和补充, 在此对文章作者表示感谢.
2. vsftp登录时提示:“vsftpd 500 OOPS: chroot”, https://blog.51cto.com/sndapk/922748
3. ftp登陆报错530 Login incorrect. Login failed., https://blog.youkuaiyun.com/hahahaxiaoyu/article/details/100582853
4. vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法, https://blog.youkuaiyun.com/bluishglc/article/details/42399439
五、本文首发说明
本文首发于老刘博客, http://laoliu.pro/php/17.html