在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版本與源服務器兼容。在執行任何遷移操作之前,請務必備份所有重要數據,并確保您了解遷移過程中可能遇到的風險。