osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

Linux中_mysql_mariadb不同版本之间_的数据迁移_笔记

转载注明来源: 本文链接 来自osnosn的博客,写于 2022-03-11.

起因

要更换服务器,里头的数据库,就要迁移。
原来用的是 mariadb-5.5 ,新服务器装的是 mariadb-10.5

做法

  • 不同版本的 mariaDB 中 系统库 mysql 里头的表结构是不同的。
    所以用户,和用户权限的迁移,就不能简单的 导出 再 导入。
  • 其他的用户数据库,就比较简单。用 mysqldump 导出,再导入到新系统的 mariaDB 中就行了。

参考

笔记

  • 以下笔记,仅针对用户数量不多,用户库也不多的做法。
    如果用户数多,用户库也多,可以编写脚本去实现。
  • 新服务器中安装新版的 mariaDB-10.5
  • 新服务器中, 执行mariadb-secure-installation 提高安全性。
  • 修改 /etc/mysql/ 中的一些配置,优化。
    • 比如在 /etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 中加入innodb_file_per_table = 1
      mariaDB-10.5 默认是开启的,show variables like '%per_table%'; 可以看到。
    • 在 [mysqld] 中加入 character-set-server=utf8 设置缺省字符集。
      show variables like '%character%'; 可以看到。
      • 如果 character-set-database 还是 Latin1,考虑删光所有数据重建。
        service mariadb stop;
        cd /var/lib/mysql/; rm -rf *;
        service mariadb start;
        mariadb-secure-installation;`
        
  • 重启 mariaDB 激活新的配置。
  • 手工导入用户,用户权限。
    • 在旧的mariaDB中执行 select user,host from mysql.user; 列出所有用户名。
    • 在旧的mariaDB中对每一个用户,执行 show grants for xxx@localhost;
    • show grants 输出的内容,copy到新服务器中的 mariaDB 中执行。
      • 例如
        GRANT USAGE ON *.* TO 'xxx'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxx';
        GRANT SELECT, INSERT, UPDATE, DELETE ON `myxxx`.* TO 'xxx'@'localhost';
      • 如果写错了,可以用下面这句取消。
        REVOKE SELECT, INSERT, UPDATE, DELETE ON `myxxx`.* FROM 'xxx'@'localhost';
    • 最后,在新数据库中执行 flush privileges; 确保所有用户权限被刷新。
  • 导入用户数据库
    • 在旧系统中执行 mysqldump -u xxx -p --databases mydbname | gzip > mydbname.sql.gz 导出。
    • 如果dump时没有带 --databases 参数,则要事先在新系统中创建对应的用户数据库,create database mydbname; 再导入。
    • 在新系统中执行 zcat mydbname.sql.gz | mysql -u xxx -p mydbname 导入。

转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/15994979.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .


posted on 2022-03-11 21:22  osnosn  阅读(402)  评论(0编辑  收藏  举报