Eag*_*gle 6 mysql mysqldump backup
我使用以下命令备份一些普通数据库:
mysqldump --host=host --user=user --password=passwd --result-file=result.sql -R --single-transaction database_name
Run Code Online (Sandbox Code Playgroud)
我的问题是:我还需要转储“mysql”数据库吗?请注意,在“恢复”它们之后,我将为每个数据库创建新用户。所以我不需要用户信息的“mysql”数据库。
谢谢
大多数执行 mysqldumps 的人只使用该--all-databases
选项。这将包括mysql
数据库。关于是否应该包括mysql
数据库有两种思想流派。
当你 mysqldump mysql 模式时,你应该让自己意识到 MySQL 版本的差异,特别是 mysql.user 表。
从一个版本恢复 mysqldump 可能会导致某些权限在恢复时消失:
确保将转储用户授权作为特殊脚本处理。为此,有两种方法:
这个 Percona Toolkit 程序移动打印出纯 SQL 中的用户权限。您可以将结果输出运行到文本文件中。然后,在 MySQL 5.5.24 中执行文本文件。故事结局。
pt-show-grants ... > MySQLUserGrants.sql
Run Code Online (Sandbox Code Playgroud)
我为 pt-show-grants 制作了自己的技术
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
Run Code Online (Sandbox Code Playgroud)
我以前讨论过这个
Apr 09, 2012
: mysql用户删除Apr 12, 2012
:不能以 root 身份授予权限Jun 13, 2012
:将数据库从一台服务器移动到另一台服务器的最快方法您可以 mysqldumpmysql
模式的唯一情况是将其恢复到相同版本的mysql
我的原始答案仅涵盖 MySQL Grants,因为 mysql 模式的这一特定方面最容易被破坏和忽视。
除非有必要,否则还有其他原因不要只备份 mysql 模式
proc.frm
, proc.MYD
,proc.MYI
然后通过将其复制回 mysql 子文件夹和 runninf 来重新加载它FLUSH TABLES;
如果您想小心在 mysql 模式中要备份和恢复的内容,您应该将 mysql 模式 mysqldump 在一个单独的文件中。
mysql 模式中的表数以及列数会因版本而异。所以,你应该登录到mysql并运行
SHOW TABLES FROM mysql;
Run Code Online (Sandbox Code Playgroud)
表列表可能不包括事件(如 MySQL 5.0),可能没有 InnoDB 系统表(如 MySQL 5.6),可能不包括表空间授权(如 MySQL 5.6),等等。Sp,如果您觉得必须备份 mysql 模式,那么对于真正需要从 mysql 模式备份哪些表,您会非常保守(好吧,非常挑剔和小心)。
如果您在新系统上创建新用户等,则无需备份MySQL数据库。
希望我有一些文档可以向您展示,但是 Google MySQL 数据库相当困难,因为所有结果都纯粹与 MySQL 系统有关,而不是本身创建的数据库。
归档时间: |
|
查看次数: |
4891 次 |
最近记录: |