在Debian系统上迁移MySQL数据库是一个涉及多个步骤的过程,需要仔细规划和执行以确保数据的安全和完整性。以下是详细的迁移步骤:
备份源数据库:
使用 mysqldump
命令导出数据库结构和数据。这将创建一个SQL文件,包含了数据库的所有数据和结构。
mysqldump -u [username] -p[password] [database_name] > [backup_file].sql
安装MySQL客户端和服务器(如果尚未安装):
sudo apt update
sudo apt install mysql-client mysql-server
停止MySQL服务: 在迁移过程中,需要停止MySQL服务以确保数据一致性。
sudo systemctl stop mysql
mysqldump
和 mysql
命令行工具将备份文件传输到目标服务器:
使用 scp
或其他文件传输工具将备份文件从源服务器传输到目标服务器。
scp [backup_file].sql [username]@[target_server]:[destination_path]
在目标服务器上恢复数据库: 登录到目标服务器并恢复数据库。
mysql -u [username] -p[password] [new_database_name] < [backup_file].sql
验证数据完整性: 连接到目标数据库并验证数据是否完整迁移。
mysql -u [username] -p[password] [new_database_name]
USE [database_name];
SHOW TABLES;
DESCRIBE [table_name];
xtrabackup
进行物理备份和恢复安装 Percona XtraBackup(如果尚未安装):
sudo apt install percona-xtrabackup-24
创建备份: 在源服务器上创建物理备份。
sudo xtrabackup --backup --target-dir=/path/to/backup --user=root --password=your_password
准备备份: 在目标服务器上准备备份。
sudo xtrabackup --prepare --target-dir=/path/to/backup
恢复备份: 将备份文件复制到目标服务器并恢复。
sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
修改文件权限: 确保MySQL用户对数据目录有适当的权限。
sudo chown -R mysql:mysql /var/lib/mysql
启动MySQL服务:
sudo systemctl start mysql
在旧服务器上配置复制:
编辑旧服务器的 /etc/mysql/mysql.conf.d/mysqld.cnf
文件,添加以下内容:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = [database_name]
重启MySQL服务:
sudo systemctl restart mysql
在新服务器上配置复制:
编辑新服务器的 /etc/mysql/mysql.conf.d/mysqld.cnf
文件,添加以下内容:
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = [database_name]
重启MySQL服务:
sudo systemctl restart mysql
在新服务器上创建复制用户:
CREATE USER 'replicator'@'旧服务器IP' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'旧服务器IP';
FLUSH PRIVILEGES;
获取二进制日志位置:
SHOW MASTER STATUS;
在新服务器上配置复制:
CHANGE MASTER TO MASTER_HOST = '旧服务器IP', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 123;
START SLAVE;
验证复制状态:
SHOW SLAVE STATUS\G
确保 Slave_IO_Running
和 Slave_SQL_Running
都是 Yes。
xtrabackup
进行物理备份和恢复时,确保目标服务器的MySQL版本与源服务器兼容。在执行任何迁移操作之前,请务必备份所有重要数据,并确保您了解迁移过程中可能遇到的风险。