linux备份mysql到另一个linux,异地定时备份
<ul><li>
<p>163,备份服务器</p>
</li>
<li>
<p>165,mysql服务器</p>
</li>
<li>
<p>使用NFS文件共享</p>
</li>
<li>
<p>ubuntu系统</p>
</li>
<li>
<p>mysql8</p>
</li>
</ul>
<hr>
<h3 id="首先确认服务器版本">首先确认服务器版本</h3>
<pre><code class="language-plain">uname -a
或者
uname -r
</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/3575900/202507/3575900-20250714101808968-1288456739.png"></p>
<p>确认为ubuntu系统</p>
<hr>
<h3 id="安装nfs">安装nfs</h3>
<p>nfs分为服务端(实际文件储存的服务器163)和客户端(存入者165)</p>
<p>服务端</p>
<pre><code class="language-plain">sudo apt update && sudo apt install nfs-kernel-server
</code></pre>
<p>客户端</p>
<pre><code class="language-plain">sudo apt update && sudo apt install nfs-common
</code></pre>
<p>安装中会有确认,需要填入【Y】进行继续</p>
<hr>
<h3 id="创建和配置文件夹">创建和配置文件夹</h3>
<p>服务端</p>
<pre><code class="language-plain">sudo mkdir /shared
sudo chmod 777 /shared
</code></pre>
<p>编辑配置文件<code>/etc/exports</code>,添加共享规则:</p>
<pre><code class="language-plain">/shared 192.168.13.3/24(rw,sync,no_subtree_check,no_root_squash)
</code></pre>
<p>其中ip是客户端的ip</p>
<p>可以在客户端使用</p>
<pre><code class="language-plain">ip a
</code></pre>
<p>进行查询</p>
<p>也可以使用*号来同意所有ip的访问(可能不安全),如:</p>
<pre><code class="language-plain">/shared *(rw,sync,no_subtree_check,no_root_squash)
</code></pre>
<p>其他参数</p>
<ul>
<li><code>rw</code>:读写权限。</li>
<li><code>sync</code>:同步写入磁盘。</li>
<li><code>no_root_squash</code>:允许客户端root用户保留权限(谨慎使用)。</li>
</ul>
<hr>
<h3 id="启用">启用</h3>
<p>服务端</p>
<pre><code class="language-plain">sudo systemctl start rpcbind nfs-server
sudo systemctl enable rpcbind nfs-server
</code></pre>
<p>应用配置</p>
<pre><code class="language-plain">sudo exportfs -arv
</code></pre>
<hr>
<h3 id="客户端挂载共享文件夹"><strong>客户端挂载共享文件夹</strong></h3>
<pre><code class="language-plain">sudo mkdir /nfs_shared/163
</code></pre>
<p>此处文件名(163)请自定义</p>
<p>指定服务端的文件夹</p>
<pre><code class="language-plain">sudo mount -t nfs 服务端IP:/shared /nfs_shared/163
</code></pre>
<p>此处的服务端ip同样使用(ip a)去服务端获取</p>
<p>校验</p>
<pre><code class="language-plain">df -h
</code></pre>
<hr>
<h3 id="mysql定时备份">mysql定时备份</h3>
<p>mysql使用linux的定时器执行命令行进行备份</p>
<p>进入mysql的服务器(也就是客户端)</p>
<h3 id="创建脚本">创建脚本</h3>
<p>一般放在</p>
<p>/usr/local/bin/mysql_backup.sh</p>
<p>可以自定义</p>
<p>进入目录</p>
<p>cd /usr/local/bin/</p>
<p>创建脚本</p>
<p>nano mysql_backup.sh</p>
<p>配置内容(每天备份,删除超过7天的)</p>
<pre><code class="language-plain">#!/bin/bash
# 检查NFS挂载点是否存在
if ! mountpoint -q "/nfs_shared/163"; then
echo "Error: NFS not mounted. Attempting to remount..."
mount /nfs_shared/163 || exit 1
fi
# 数据库凭据
DB_USER="用户名"
DB_PASSWORD="密码"
DB_NAME="数据库名称"
# 备份目录(这里使用的是共享的目录
BACKUP_DIR="/nfs_shared/163/mysqlBackups"
DATE=$(date +"%Y%m%d%H%M%S")
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
# 压缩备份文件
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;
</code></pre>
<p>ctrl+x退出</p>
<p>按Y保存</p>
<p>按回车退出</p>
<hr>
<h3 id="赋予脚本执行权限"><strong>赋予脚本执行权限</strong></h3>
<pre><code class="language-plain">sudo chmod +x /usr/local/bin/mysql_backup.sh
</code></pre>
<hr>
<h3 id="设置-cron-定时任务"><strong>设置 <strong><code>cron</code></strong> 定时任务</strong></h3>
<p>创建文件夹</p>
<pre><code class="language-plain">mkdir /nfs_shared/163/mysqlBackups/
</code></pre>
<p>使用 <code>crontab -e</code> 添加每天凌晨2点执行的备份任务:</p>
<pre><code class="language-plain">crontab -e
</code></pre>
<p>执行crontab -e后会让你选择打开的编辑工具,一般是nano或者vim,无所谓</p>
<p>在新的一行添加:</p>
<pre><code class="language-plain">0 2 * * * /usr/local/bin/mysql_backup.sh >> /nfs_shared/163/mysqlBackups/mysql_backup.log 2>&1
</code></pre>
<p>查看root的定时任务</p>
<pre><code class="language-plain">sudo crontab -u root -l
</code></pre>
<hr>
<h3 id="测试">测试</h3>
<p>可以手动执行脚本立刻继续备份进行。<br>
并在两台服务器中访问共享地址来确认是否成功挂载。<br>
经过7天以上查看备份文件查看是否删除了过期文件。</p>
<hr>
<h3 id="end">end</h3><br><br>
来源:https://www.cnblogs.com/fffffff/p/18983492
頁:
[1]