Debian系统下MariaDB数据迁移的常见方法
逻辑备份是最通用的迁移方式,适用于跨MariaDB版本、跨服务器或需要保留完整SQL语句的场景,核心工具为mysqldump。
mysqldump导出数据。若迁移全部数据库,运行sudo mysqldump -u root -p --all-databases > full_backup.sql(替换root为实际用户名,输入密码后生成full_backup.sql文件);若仅迁移特定数据库,将--all-databases替换为--databases 数据库名(如--databases mydb)。.sql文件传输至目标服务器,推荐使用scp命令(安全复制):scp full_backup.sql user@target_server_ip:/path/to/destination(替换user为目标服务器用户名、target_server_ip为目标服务器IP、/path/to/destination为目标路径)。sudo apt update && sudo apt install mariadb-server;启动服务并设置开机自启:sudo systemctl start mariadb、sudo systemctl enable mariadb。CREATE DATABASE new_db;,替换new_db为目标数据库名);退出MySQL命令行(输入exit),使用mysql命令导入备份文件:mysql -u root -p new_db < full_backup.sql(替换root为用户名、new_db为目标数据库名)。SHOW DATABASES;)、表结构(USE new_db; SHOW TABLES;)及数据完整性(SELECT COUNT(*) FROM 表名;)。若迁移环境为同版本MariaDB且无需更换服务器,可直接复制数据文件,效率更高但灵活性较低。
sudo systemctl stop mariadb(确保数据一致性,避免复制过程中文件修改)。/var/lib/mysql,使用cp命令复制到新位置(保留文件属性):sudo cp -a /var/lib/mysql /new/location/mysql(替换/new/location/mysql为新路径,如/home/mysql-data)。/etc/mysql/mariadb.conf.d/50-server.cnf),找到datadir参数,将其值修改为新路径:datadir = /new/location/mysql;若新路径位于受限目录(如/home),需修改MariaDB服务文件(sudo systemctl edit mariadb.service),添加ProtectHome = false以允许访问。mysql用户:sudo chown -R mysql:mysql /new/location/mysql。sudo systemctl start mariadb),检查状态(sudo systemctl status mariadb,确保为“active (running)”);登录数据库,执行SHOW DATABASES;验证数据是否正常。ALTER DATABASE new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(修改数据库字符集),或在导出时添加--default-character-set=utf8mb4参数(如mysqldump -u root -p --all-databases --default-character-set=utf8mb4 > full_backup.sql)。