1. 程式人生 > 其它 >Linux中_mysql_mariadb不同版本之間_的資料遷移_筆記

Linux中_mysql_mariadb不同版本之間_的資料遷移_筆記

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%'; 可以看到。
  • 重啟 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';
  • 匯入使用者資料庫
    • 在舊系統中執行 mysqldump -u xxx -p mydbname | gzip > mydbname.sql.gz 匯出。
    • 在新系統中建立對應的使用者資料庫,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/ .