不止热门角色,我们为你扩展了更多细分角色分类,覆盖职场提升、商业增长、内容创作、学习规划等多元场景。精准匹配不同目标,让每一次生成都更有方向、更高命中率。
立即探索更多角色分类,找到属于你的增长加速器。
示例:创建备份专用账号(根据实际需要裁剪权限)
CREATE USER 'backup'@'%' IDENTIFIED BY 'Strong!Passw0rd';
GRANT SELECT, SHOW VIEW, TRIGGER, EVENT, LOCK TABLES ON *.* TO 'backup'@'%';
-- 如使用 mysqlbackup,再授予:
GRANT PROCESS, RELOAD, REPLICATION CLIENT ON *.* TO 'backup'@'%';
-- 8.0 可选:
GRANT BACKUP_ADMIN ON *.* TO 'backup'@'%';
FLUSH PRIVILEGES;
预期输出示例:
Query OK, 0 rows affected
建议:
mysql -ubackup -p -h127.0.0.1 -P3306 -e "SELECT VERSION(), @@GLOBAL.gtid_mode, @@GLOBAL.enforce_gtid_consistency\G"
预期输出示例(摘要):
VERSION(): 8.0.36
@@GLOBAL.gtid_mode: ON
@@GLOBAL.enforce_gtid_consistency: ON
命令:
DUMP_FILE=/backup/mysql/full_$(date +%F_%H%M%S).sql
mysqldump \
-ubackup -p -h127.0.0.1 -P3306 --protocol=TCP \
--all-databases \
--single-transaction --quick \
--routines --events --triggers \
--set-gtid-purged=ON \
--order-by-primary \
--default-character-set=utf8mb4 \
--hex-blob \
--comments \
--result-file="$DUMP_FILE"
交互提示示例:
Enter password:
完成后检查:
echo $?
tail -n 5 "$DUMP_FILE"
预期输出示例:
0
-- Dump completed on 2025-12-02 10:21:37
可选:记录当下 binlog 位点(非 GTID 环境常用)
mysql -ubackup -p -e "SHOW MASTER STATUS\G"
预期输出示例:
File: binlog.000123
Position: 456789
Executed_Gtid_Set: 0f23a1d3-...:1-34567
注意:
ls -lh "$DUMP_FILE"
chmod 600 "$DUMP_FILE"
预期输出示例:
-rw------- 1 mysql mysql 28G /backup/mysql/full_2025-12-02_102137.sql
mysqlbackup --version
mkdir -p /backup/meb
预期输出示例:
mysqlbackup: MySQL Enterprise Backup version 8.0.36
命令(交互输入密码示例):
mysqlbackup \
--host=127.0.0.1 --port=3306 \
--user=backup --password \
--backup-dir=/backup/meb --with-timestamp \
--compress \
backup-and-apply-log
预期输出摘要:
mysqlbackup: INFO: Starting with following command line ...
mysqlbackup: INFO: Backup completed OK!
mysqlbackup: INFO: Apply-log completed OK!
ls -l /backup/meb
预期输出示例:
drwxr-x--- 2 mysql mysql 4096 2025-12-02 10:25 2025-12-02_10-25-14
sudo systemctl stop mysqld
# 或
mysqladmin -uroot -p shutdown
预期输出示例:
[OK] Stopped MySQL Server
grep -E "datadir|log_error|innodb_undo_directory" /etc/my.cnf /etc/mysql/my.cnf
tar -C / -czpf /backup/mysql/cold_full_$(date +%F_%H%M%S).tar.gz \
etc/my.cnf var/lib/mysql
预期输出示例:
tar: Creating archive...
sudo systemctl start mysqld
预期输出示例:
[OK] Started MySQL Server
完整性与可读性(逻辑备份)
test -s "$DUMP_FILE" && echo "Dump exists and non-empty"
head -n 200 "$DUMP_FILE" | sed -n '1,50p'
grep -E "Dump completed on|GTID_PURGED" "$DUMP_FILE"
可用性验证(推荐在隔离测试实例)
mysql -utest -p -h127.0.0.1 -P3307 < "$DUMP_FILE"
预期输出:无错误返回,测试库可正常启动/查询mysqlbackup --backup-dir=/backup/meb/2025-12-02_10-25-14 validate
预期输出:
mysqlbackup: INFO: Validate completed OK!
mysqld --datadir=/backup/meb/2025-12-02_10-25-14/datadir --port=3307 --socket=/tmp/mysql3307.sock --skip-networking=0 --skip-slave-start --read_only=ON &
预期:实例可启动,能查询数据后关闭业务校验
mysql -ubackup -p -e "SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA NOT IN ('mysql','sys','performance_schema','information_schema') ORDER BY TABLE_ROWS DESC LIMIT 10;"
对比源库与测试库计数(大表可做 sampling 或校验主键范围)前提:目标实例版本不低于源库,具备足够空间;若使用 GTID,确保全新实例或已协调 GTID 状态。
mysqld --initialize-insecure --datadir=/var/lib/mysql
systemctl start mysqld
SET GLOBAL gtid_mode = ON;
SET GLOBAL enforce_gtid_consistency = ON;
-- 确保 gtid_executed 为空(全新实例或执行 RESET MASTER)
-- 注意:生产环境谨慎使用 RESET MASTER
RESET MASTER;
预期输出:
Query OK, 0 rows affected
mysql -uroot -p --init-command="SET SESSION sql_log_bin=0" < /backup/mysql/full_2025-12-02_102137.sql
预期:无报错返回,控制台静默结束mysql -uroot -p -e "SELECT COUNT(*) FROM db1.table_critical;"
预期输出:
COUNT(*)
1234567
mysqlbinlog --read-from-remote-server -ubackup -p -h127.0.0.1 --include-gtids='0f23a1d3-...:34568-99999' \
| mysql -uroot -p
mysqlbackup --backup-dir=/backup/meb/2025-12-02_10-25-14 apply-log
预期输出:
mysqlbackup: INFO: Apply-log completed OK!
systemctl stop mysqld
mv /var/lib/mysql /var/lib/mysql.bak_$(date +%s)
mkdir -p /var/lib/mysql
chown mysql:mysql /var/lib/mysql
mysqlbackup \
--backup-dir=/backup/meb/2025-12-02_10-25-14 \
--datadir=/var/lib/mysql \
copy-back
chown -R mysql:mysql /var/lib/mysql
预期输出:
mysqlbackup: INFO: copy-back completed OK!
systemctl start mysqld
mysql -uroot -p -e "SHOW DATABASES;"
预期:实例正常启动且数据完整
问题:mysqldump 期间出现锁等待或写入阻塞
问题:恢复时报 GTID_PURGED 不为空或冲突
问题:导入出现字符集/乱码
问题:视图/存储程序导入失败(DEFINER 不存在)
问题:大库 mysqldump/恢复耗时过长
问题:备份文件过大
问题:权限不足报错(如锁表、事件导出)
问题:非 InnoDB 表不一致
提示与最佳实践
适用范围:PostgreSQL 12–16(Linux),官方工具与特性(pg_basebackup、pg_receivewal、WAL 连续归档、pg_verifybackup、pg_waldump)。本方案采用“定期全量 + 持续 WAL 归档”的方式实现增量备份:全量基线备份由 pg_basebackup 生成,基线之后的变更由 WAL 日志增量承载,可实现任意时间点恢复(PITR)。
以下示例变量请按实际替换:
准备通用环境变量(备份主机执行):
export PGHOST=db1.example.com
use admin
db.createUser({
user: "backup",
pwd: "<安全密码>",
roles: [{ role: "backup", db: "admin" }]
})
以下分别给出单机、复制集的标准命令(均为逻辑备份)。将占位符替换为实际值。
mongodump \
--host "rs0/rs0a:27017,rs0b:27017,rs0c:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--readPreference=secondaryPreferred \
--oplog \
--gzip \
--archive="/backups/rs0-full-$(date +%F-%H%M).archive.gz"
2025-12-02T10:01:12.123+0800 writing admin.system.version to archive
2025-12-02T10:01:12.456+0800 writing mydb.users to archive
2025-12-02T10:05:33.789+0800 done dumping mydb.users (1,234,567 documents)
2025-12-02T10:05:34.012+0800 writing oplog.bson
2025-12-02T10:05:35.345+0800 done dumping oplog with 12,345 entries
mongodump \
--host "localhost:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--gzip \
--archive="/backups/standalone-full-$(date +%F-%H%M).archive.gz"
2025-12-02T10:10:11.111+0800 writing mydb.orders to archive
2025-12-02T10:12:22.222+0800 done dumping mydb.orders (345,678 documents)
mongodump \
--host "rs0/rs0a:27017,rs0b:27017,rs0c:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--readPreference=secondaryPreferred \
--oplog \
--out "/backups/rs0-dump-$(date +%F-%H%M)"
/backups/rs0-dump-2025-12-02-1015/
admin/
config/
mydb/
oplog.bson
mongodump ... --db "mydb" --gzip --archive="/backups/mydb-$(date +%F).archive.gz"
mongodump ... --db "mydb" --collection "orders" --gzip --archive="/backups/mydb.orders-$(date +%F).archive.gz"
mongodump \
--host "rs0/rs0a:27017,rs0b:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--readPreference=secondaryPreferred \
--oplog \
--tls \
--tlsCAFile "/etc/ssl/ca.pem" \
--tlsCertificateKeyFile "/etc/ssl/client.pem" \
--gzip \
--archive="/backups/rs0-tls-$(date +%F-%H%M).archive.gz"
目标:确认备份完整、可读、可恢复。推荐组合使用以下方法。
sha256sum /backups/rs0-full-2025-12-02-1001.archive.gz > /backups/rs0-full-2025-12-02-1001.archive.gz.sha256
ls -lh /backups/*.archive.gz
find /backups/rs0-dump-2025-12-02-1015/mydb -name "*.bson" | head -n 3 | while read f; do
bsondump "$f" >/dev/null
echo "$f OK"
done
/backups/.../mydb/users.bson OK
/backups/.../mydb/orders.bson OK
// 源库记录关键集合文档数
use mydb
db.users.estimatedDocumentCount()
db.orders.estimatedDocumentCount()
建议在隔离的测试环境或同实例的测试库命名空间中进行,以验证可用性且不影响生产。
从归档恢复到“映射后的测试库”
mongorestore \
--host "testhost:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--gzip \
--archive="/backups/rs0-full-2025-12-02-1001.archive.gz" \
--nsFrom "mydb.*" \
--nsTo "mydb_restore_test.*"
参数说明
预期输出示例
2025-12-02T11:10:10.100+0800 restoring to mydb_restore_test.users from archive
2025-12-02T11:12:30.200+0800 finished restoring mydb_restore_test.users (1,234,567 documents)
mongosh --host testhost:27017
use mydb_restore_test
db.users.estimatedDocumentCount()
db.orders.stats().nindexes
mongorestore \
--host "testhost:27017" \
--username "backup" \
--password "<PASSWORD>" \
--authenticationDatabase "admin" \
--oplogReplay \
"/backups/rs0-dump-2025-12-02-1015"
mongosh --host testhost:27017 --eval 'db.getSiblingDB("mydb_restore_test").dropDatabase()'
—— 说明:以上命令与参数均为 MongoDB 官方工具支持项,适用于常见单机/复制集逻辑备份与恢复测试场景。生产分片集群的强一致备份请采用存储快照或官方备份方案。
试用后开通会员即可无限使用