我mysqldump以 mysql root 用户身份运行时遇到问题。当我尝试备份mysql表时,出现此错误:
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user
'root'@'localhost' for table 'cond_instances' when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)
有人见过吗?我已经看到一些对我的 mysql 和我的 mysqldump 的引用是不同的版本,但是当我运行它们时它们在同一目录中。
我正在运行 MySQL 5.5.8。
在创建用于备份和恢复整个 MySQL 服务器的自动化解决方案的过程中,我遇到了mysql似乎包含用户帐户、权限、元数据之类的数据库。这个数据库应该备份吗?备份并尝试恢复它会破坏事情吗?
正如您可以想象的那样,我有一段时间在谷歌上搜索“mysql 备份 mysql 数据库”。
我正在使用该automysqlbackup脚本转储我的 mysql 数据库,但我希望有一个只读用户来执行此操作,这样我就不会将我的根数据库密码存储在纯文本文件中。
我创建了一个这样的用户:
grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';
Run Code Online (Sandbox Code Playgroud)
当我运行mysqldump(通过automysqlbackup或直接)时,我收到以下警告:
mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)
我做错了吗?我的只读用户需要额外的授权吗?还是只能root锁information_schema表?这是怎么回事?
编辑:
GAH,现在它可以工作了。我以前可能没有运行 FLUSH PRIVILEGES。
顺便说一句,这种情况多久自动发生一次?
编辑:
不,它不起作用。mysqldump -u username -p --all-databases > dump.sql手动运行不会产生错误,但不会转储 information_schema。automysqlbackup确实会引发错误。
我当前的 MySQL 备份方案是将我们的数据库复制到第二台服务器并在该服务器上运行 mysqldump 以消除表或行锁定中的任何停机时间。这运行良好,但第二台服务器的费用为每月 150 美元(澳大利亚托管比美国贵得多。)
我在这里阅读了很多关于此的问题,大多数人需要有关计划备份的帮助,而这不是我需要的。我需要在没有停机的情况下进行 mysqldump(最好每 4 小时一次)。数据库未压缩约 7GB,因此 mysqldump 可能需要一些时间,具体取决于服务器。
我考虑过复制到同一台机器上,但我不想让奴隶吃到急需的内存。我不确定我可以在每个数据库的基础上限制内存使用吗?无论哪种方式,这都会在转储数据库时给服务器带来负载。
我刚读了这个http://www.zmanda.com/quick-mysql-backup.html看起来不错,每年 300 美元就可以了,这为我节省了很多。
不幸的是,我无法复制到 Amazon 的 RDS,但我可以复制到微型 RC2 实例,但复制将通过网络进行,ping 约为 220 毫秒。
我在这里看到一些人在谈论 LVM 快照,这可能是一个不错的选择。我不太了解这个选项。
意见将不胜感激。
是否有任何技术可以使用 mysqldump(或类似命令)为 MySQL 进行增量或差异备份?
我有一个专用服务器,其中包含大约 10GB 的 MongoDB 数据库。我需要每天进行备份,但我不能让数据库停机。是否可以在单个磁盘上使用副本集(在不同端口上运行 2 个 mongod 实例),并且只需将辅助磁盘脱机并将数据文件备份到 S3 等异地存储(日志已打开)?或者使用主/从比副本集更好?
这是否可行,如果可行,我可能会遇到哪些潜在问题?如果没有,我如何将其概念化以使其起作用?
我定期保存并稍后恢复用于测试的小型 PostgreSQL 数据库。它的数据作为测试的结果定期更新,然后必须进行新的转储,并且定期使用转储以良好定义的状态重新创建数据库。
我注意到转储(使用pg_dump -Fc database)只需要几秒钟,但恢复(pg_restore -d database)需要大约一分钟。这看起来很奇怪。我本来希望两者花费大约相同的时间(假设两个任务都是 I/O 绑定的)。
还原有问题吗?我可以让它更快吗?或者恢复比转储花费更长的时间是否正常?(如果是,那为什么?)
转储文件通常有大约 3-4 MiB;DBMS 是 PostgreSQL V8.4,在 Ubuntu Linux 下运行在 Pentium4 3GHz 和 1GiB RAM 上。
我有一台运行 SQL Server 2005 的服务器。我每晚进行一次完整备份,每 15 分钟进行一次事务日志备份。这是一个相对较小的服务器,所以我没有做任何差异备份。
如果每晚完整备份之一失败,是否可以使用前一天晚上的备份和两天的所有事务日志来恢复数据库,或者丢失完整备份是否会出现问题?
我正在为我的 mysql 服务器寻找备份解决方案,我需要尽可能少的停机时间。我有以下几点:
这个数字可能会增长,因此设置主/从复制不是一个好主意。
我认为最简单的备份方法是将 mysqldump 与诸如“automysqlbackup”之类的软件一起使用。我最重要的数据使用 InnoDB。我的 InnoDB 表很重。
问题是:如果我对服务器中的所有数据库进行 mysqldump,它会锁定我的 Innodb 表吗?
我有一个计划任务(在 Windows 任务计划程序中),它使用 SMO(Windows 身份验证)连接到 SQL Server 并创建数据库备份。到目前为止,此任务在管理员帐户下运行,我想将其更改为使用 SYSTEM 帐户。
我更改了计划任务,令我惊讶的是,它开箱即用。
我想了解为什么会这样。系统为Windows Server 2012 R2,数据库为SQL Server 2012 (SP1) Express Edition。这是一个标准安装,添加了一个 SQL Auth 用户。
在 SSMS 中,这些是登录名及其关联的服务器角色:
数据库本身具有以下用户及其角色:
查看用户 NT AUTHORITY\SYSTEM 的“有效权限”会产生以下输出:
为什么 NT AUTHORITY\SYSTEM 有备份数据库的权限?我很高兴它确实如此,但我真的很想了解为什么......
database-backup ×10
mysql ×6
backup ×5
sql-server ×2
database ×1
innodb ×1
mongodb ×1
myisam ×1
performance ×1
permissions ×1
postgresql ×1
read-only ×1