Linux中_mysql_mariadb不同版本之間_的資料遷移_筆記
阿新 • • 發佈:2022-03-13
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%';
可以看到。
- 比如在 /etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 中加入
- 重啟 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';
- 例如
- 在舊的mariaDB中執行
- 匯入使用者資料庫
- 在舊系統中執行
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/ .