在企业中数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性
及数据的可靠性是运维的重中之重,任何数据的丢失都可能对企业产生严重的后果。通常情
况下造成数据丢失的原因有如下几种:
mysqldump 或其他工具生成 SQL 脚本,这些脚本可以用来重建数据库。物理冷备份时需要在数据库处于关闭状态下,能够较好地保证数据库的完整性。物理冷备份一般用于非核心业务,这类业务一般都允许中断,物理冷备份的特点就是速度快,恢复时也是最为简单的。通常通过直接打包数据库文件夹来实现备份
mysqldump:这是一个常用的 MySQL 备份工具,可以创建逻辑备份。它支持完全备份、增量备份,并允许用户选择备份特定的数据库或表。
mysqldump -u username -p dbname > backup.sql mysqlhotcopy:这是一个非官方的工具,主要用于进行物理热备份。它依赖于 FLUSH TABLES WITH READ LOCK 命令来保证一致性。
mysqldump 进行初始完全备份。mysqlbinlog 工具来获取自上次备份以来的更改,并应用到最新的备份中以保持数据同步。停写操作:首先,需要确保在备份过程中没有新的数据写入数据库。可以通过执行 FLUSH TABLES WITH READ LOCK 命令来锁定所有的表,防止在备份过程中数据被修改。
FLUSH TABLES WITH READ LOCK; 备份数据文件:使用操作系统级别的工具(如 tar 或 cp 命令)来复制 MySQL 数据目录下的文件。例如,如果 MySQL 数据目录位于 /var/lib/mysql,可以使用以下命令来备份:
tar -czf backup.tar.gz /var/lib/mysql 解锁表:完成备份后,解锁表以便其他进程可以继续写入数据。
UNLOCK TABLES; 备份二进制日志:如果你启用了二进制日志,还需要备份二进制日志文件。
cp /var/lib/mysql/mysql-bin.* . 记录备份信息:记录备份的时间点、备份文件的位置等信息,以便于恢复时使用。
停止 MySQL 服务:在恢复之前,需要先停止 MySQL 服务。
systemctl stop mysql 删除旧的数据目录:清空或移动旧的数据目录,以准备放置新的备份数据。
rm -rf /var/lib/mysql/* 恢复数据文件:使用之前备份的文件来恢复数据。
tar -xzvf backup.tar.gz -C /var/lib/mysql/ 恢复二进制日志:如果之前备份了二进制日志,则需要将其恢复到正确的位置。
mv mysql-bin.* /var/lib/mysql/ 启动 MySQL 服务:启动 MySQL 服务,并验证数据的完整性。
systemctl start mysql 验证数据:登录 MySQL 并检查数据是否完整且可用。
SELECT * FROM your_table LIMIT 10; 备份整个数据库:使用 mysqldump 命令来备份整个数据库或特定的数据库。
mysqldump -u root -p --all-databases > all_databases.sql 备份单个数据库:备份特定的数据库。
mysqldump -u root -p your_database > your_database.sql 备份单个表:备份特定数据库中的单个表。
mysqldump -u root -p your_database your_table > your_table.sql 使用压缩:可以使用 gzip 或 bzip2 压缩备份文件以节省存储空间。
mysqldump -u root -p your_database | gzip > your_database.sql.gz 检查备份文件的内容:使用文本编辑器或命令行工具查看备份文件的内容。
less all_databases.sql 解压备份文件:如果使用了压缩,可以先解压备份文件。
gunzip all_databases.sql.gz 停止 MySQL 服务:在恢复之前,需要先停止 MySQL 服务。
systemctl stop mysql 删除旧的数据文件:清空或移动旧的数据文件,以准备放置新的备份数据。
rm -rf /var/lib/mysql/* 创建数据库:创建需要恢复的数据库。
CREATE DATABASE your_database; 导入备份文件:使用 mysql 命令将备份文件导入到数据库中。
mysql -u root -p your_database < your_database.sql 启动 MySQL 服务:启动 MySQL 服务,并验证数据的完整性。
systemctl start mysql 验证数据:登录 MySQL 并检查数据是否完整且可用。
SELECT * FROM your_table LIMIT 10; 启用二进制日志:在 MySQL 中启用二进制日志功能,这是进行增量备份的基础。
my.cnf 或 my.ini) 中添加如下配置: log_bin = /path/to/mysql-bin server_id = 1 binlog_format = ROW 初始完全备份:进行一次完全备份作为增量备份的基础。
记录备份时间点:记录每次备份的时间点,以便在恢复时确定需要应用哪些二进制日志文件。
进行完全备份:使用 mysqldump 或物理冷备份的方式进行完全备份。
mysqldump -u root -p --all-databases > all_databases.sql 记录二进制日志文件名:在进行完全备份后,记录当前的二进制日志文件名。
SHOW MASTER STATUS; 后续增量备份:当需要进行增量备份时,记录下自上次备份以来的二进制日志文件名和位置。
SHOW BINARY LOGS; 备份二进制日志文件:将自上次备份以来产生的二进制日志文件备份到指定的位置。
恢复完全备份:首先恢复完全备份文件。
mysql -u root -p < all_databases.sql 应用二进制日志:使用 mysqlbinlog 工具来读取并应用自上次备份以来的二进制日志文件。
mysqlbinlog --start-position=position --stop-position=position mysql-bin.000001 | mysql -u root -p 重复应用日志:如果存在多个二进制日志文件,需要按照时间顺序依次应用。
for file in $(ls -t /path/to/logfiles/*.log); do mysqlbinlog $file | mysql -u root -p done 验证数据:登录 MySQL 并检查数据是否完整且可用。
SELECT * FROM your_table LIMIT 10; 下一篇:现在有什么赛道可以干到退休?