我正在将单个 MySQL 数据库(约 10GB 未压缩)从一台服务器移动到同一网络上的另一台服务器。当前 MySQL 版本是5.1.41
,新版本是5.5.24
. 该数据库包含 MyISAM 和 InnoDB 表。是否可以使用这种方法:
/data
目录从旧服务器复制到新服务器我意识到这个基本问题之前可能已经被问过 1000 次,但我见过的大多数问题都没有提到更改版本并支持 MyISAM 和 InnoDB。
如果您要更改版本,请不要移动 mysql SCHEMA。
为什么不应该移动 mysql 文件夹?它与身份验证权限有关。
mysql.user 中的列数因版本而异
如果你跑 desc mysql.user
我之前写过这个
移动其他一切都可以。在装有 MySQL 5.5.24 的新机器上,执行以下操作:
mv /var/lib/mysql /var/lib/mysql/mysql55
mkdir /var/lib/mysql
<scp or rsync /var/lib/mysql of MySQL 5.1.41 over to /var/lib.mysql of MySQL 5.5.24>
rm -f /var/lib/mysql/mysql/*
cp /var/lib/mysql/mysql55/* /var/lib/mysql/mysql/*
chown -R mysql:mysql /var/lib/mysql
service mysql start
Run Code Online (Sandbox Code Playgroud)
所以,问题仍然存在:
你如何将旧 MySQL 5.1.41 中的用户权限移动到 MySQL 5.5.24 ???
在 MySQL 5.1.41 机器上有两种方法可以做到这一点:
这个 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)
无论哪种方式,将 MySQLUserGrants.sql 移动到 MySQL 5.5.24 机器并执行脚本
我之前写过这个:将 myisam 5.0 数据库导入 5.5 innodb 服务器
归档时间: |
|
查看次数: |
12516 次 |
最近记录: |