mysqldump工具备份所有数据库(含结构和数据),防止迁移过程中数据丢失。命令示例:mysqldump -u root -p --all-databases > /backup/all_databases_$(date +%F).sql
输入密码后,备份文件将保存在指定路径。sudo yum install mysql -y
适用于同一版本、需保留原数据库文件(如.frm、.ibd、ibdata1)的场景,速度较快但需停机。
sudo systemctl stop mysqld
rsync将源服务器的MySQL数据目录(默认/var/lib/mysql)同步到目标服务器相同路径:rsync -avz /var/lib/mysql/ root@目标服务器IP:/var/lib/mysql/
mysql)对数据目录有读写权限:sudo chown -R mysql:mysql /var/lib/mysql/
sudo systemctl start mysqld
mysql -u root -p -e "SHOW DATABASES;"
mysql -u root -p -e "USE your_database; SELECT COUNT(*) FROM your_table;"
适用于跨版本、跨平台或需灵活调整数据库结构的场景,步骤较繁琐但灵活性高。
mysqldump导出所有数据库到SQL文件(同准备阶段)。scp将备份文件从源服务器复制到目标服务器:scp /backup/all_databases_$(date +%F).sql root@目标服务器IP:/tmp/
mysql -u root -p -e "CREATE DATABASE your_database;"
mysql -u root -p your_database < /tmp/all_databases_$(date +%F).sql
适用于需要零停机或持续数据同步的场景(如生产环境主库迁移至新从库),通过binlog实现实时数据同步。
/etc/my.cnf,添加以下参数(server-id需唯一,log-bin开启二进制日志):[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW # 推荐ROW格式,兼容性更好
重启MySQL服务使配置生效:sudo systemctl restart mysqld
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
File)和位置(Position),后续从库需使用:SHOW MASTER STATUS;
示例输出:+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | | |
+------------------+----------+--------------+------------------+
/etc/my.cnf,添加以下参数(server-id需与主库不同):[mysqld]
server-id=2
relay-log=mysql-relay
重启MySQL服务:sudo systemctl restart mysqld
CHANGE MASTER TO命令,指定主库信息(替换为实际IP、用户名、密码及主库状态中的File、Position):CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='StrongPassword123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
SHOW SLAVE STATUS\G,检查Slave_IO_Running和Slave_SQL_Running是否为Yes,Seconds_Behind_Master是否为0(表示同步正常):SHOW SLAVE STATUS\G