数据迁移是将数据从一个MySQL实例(源)转移到另一个实例(目标)的过程,适用于系统升级、环境迁移等场景。以下是常用方法:
mysqldump+mysql命令行(通用方法)适用场景:小到中型数据库、跨版本迁移、需要备份文件保留。
步骤:
mysqldump命令,生成包含结构和数据的SQL文件。mysqldump -u [源用户名] -p[源密码] [源数据库名] > backup.sql
(注:-p后直接跟密码会有安全风险,建议仅输入-p,然后交互式输入密码。)scp将backup.sql复制到目标服务器。scp backup.sql [目标用户名]@[目标服务器IP]:/path/to/destination/
mysql -u [目标用户名] -p[目标密码] -e "CREATE DATABASE [目标数据库名];"
mysql -u [目标用户名] -p[目标密码] [目标数据库名] < /path/to/destination/backup.sql
mysqlpump(MySQL 5.7+并行工具)适用场景:大型数据库、需要加快导出速度。
mysqlpump是mysqldump的并行版本,支持多线程导出,显著缩短大型数据库的迁移时间。
步骤:
mysqlpump -u [源用户名] -p[源密码] --databases [源数据库名] > backup.sql
mysqldump步骤一致(同上)。xtrabackup(热备份,适用于生产环境)适用场景:大型数据库、需要零停机迁移、InnoDB引擎。
xtrabackup是Percona提供的热备份工具,可在不锁表的情况下备份数据,适合生产环境。
步骤:
sudo apt-get update && sudo apt-get install percona-xtrabackup-24
xtrabackup --backup --user=[源用户名] --password=[源密码] --target-dir=/path/to/backup
prepare命令,使备份可恢复。xtrabackup --prepare --target-dir=/path/to/backup
scp -r /path/to/backup [目标用户名]@[目标服务器IP]:/path/to/destination/
sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql/* # 清空现有数据(谨慎操作)
sudo cp -R /path/to/destination/backup/* /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql # 修复权限
sudo systemctl start mysql
适用场景:不熟悉命令行、需要可视化操作。
常用工具:
数据整合是将多个MySQL数据库或多个数据源(如MySQL与MongoDB)的数据合并到一个统一系统中的过程,适用于数据仓库、企业中台等场景。
适用场景:实时同步两个MySQL数据库、主从架构。
步骤:
/etc/mysql/my.cnf,添加以下配置:[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = [需要同步的数据库名]
重启MySQL服务:sudo systemctl restart mysql。CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
获取二进制日志位置:FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS; -- 记录File和Position
UNLOCK TABLES;
/etc/mysql/my.cnf,添加以下配置:[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = [需要同步的数据库名]
重启MySQL服务:sudo systemctl restart mysql。CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- 主服务器记录的File
MASTER_LOG_POS=123; -- 主服务器记录的Position
START SLAVE;
检查同步状态:SHOW SLAVE STATUS\G(确保Slave_IO_Running和Slave_SQL_Running为Yes)。适用场景:大规模数据同步、跨数据源整合、企业级需求。
常用工具:
适用场景:数据仓库构建、复杂数据转换。
步骤:
mysqldump、SELECT INTO OUTFILE或ETL工具的抽取组件。LOAD DATA INFILE或ETL工具的加载组件。mysqldump或xtrabackup),防止数据丢失。xtrabackup可实现零停机迁移。