1. 准备工作
迁移前需完成两项基础准备:一是确认版本兼容性,目标服务器的MariaDB版本应与源服务器兼容(如无特殊需求,建议选择相同主版本);二是评估数据规模,大型数据库(如超过10GB)需选择更高效的迁移工具(如xtrabackup),并预留充足的迁移时间。
2. 方法一:使用mysqldump工具(逻辑备份,适合中小型数据库)
mysqldump命令导出数据。导出单个数据库的命令为:mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(如mysqldump -uroot -pMySecretPassword mydb > mydb_backup.sql);导出所有数据库的命令为:mysqldump -u [用户名] -p[密码] --all-databases > full_backup.sql。执行后会生成包含建表语句、插入数据的SQL文件。scp命令将备份文件复制到目标服务器,例如:scp backup.sql user@target_server_ip:/path/to/destination/(替换为用户、IP和目标路径)。sudo apt install mariadb-server mariadb-client;CentOS:sudo yum install mariadb-server mariadb)。恢复数据时,使用mysql命令导入:mysql -u [用户名] -p[密码] [数据库名] < /path/to/destination/backup.sql(如mysql -uroot -pMySecretPassword mydb < /home/user/mydb_backup.sql)。USE [数据库名]; SHOW TABLES; SELECT COUNT(*) FROM [表名];(如USE mydb; SHOW TABLES; SELECT COUNT(*) FROM users;)。3. 方法二:使用xtrabackup工具(物理备份,适合大型/生产数据库)
sudo apt install percona-xtrabackup-24;CentOS:sudo yum install percona-xtrabackup-24。xtrabackup --backup --user=[用户名] --password=[密码] --target-dir=/path/to/backup(如xtrabackup --backup --user=root --password=MySecretPassword --target-dir=/var/backups/mariadb),备份文件会保存到指定目录。scp -r递归复制备份目录到目标服务器,例如:scp -r /var/backups/mariadb user@target_server_ip:/path/to/destination/。xtrabackup --prepare --target-dir=/path/to/destination/backup,将备份文件转换为可恢复状态。sudo systemctl stop mariadb),将备份数据复制到数据目录(如/var/lib/mysql):xtrabackup --copy-back --target-dir=/path/to/destination/backup --datadir=/var/lib/mysql,恢复后修改数据目录权限:sudo chown -R mysql:mysql /var/lib/mysql。sudo systemctl start mariadb),登录数据库检查数据完整性(同方法一的核对步骤)。4. 方法三:迁移数据目录(适用于同一Linux系统内的版本升级或路径变更)
sudo systemctl stop mariadb。/var/lib/mysql,使用cp -a(保留权限)复制到新位置,例如:sudo cp -a /var/lib/mysql /new/location/mysql。/etc/mysql/mariadb.conf.d/50-server.cnf或/etc/my.cnf),找到datadir参数,修改为新路径:datadir=/new/location/mysql。mysql用户,命令:sudo chown -R mysql:mysql /new/location/mysql。sudo systemctl start mariadb),登录数据库检查数据是否正常。5. 注意事项
rsync),避免中断。utf8mb4)与源数据库一致,避免乱码问题。