在Debian系統上進行MySQL數據庫遷移,可以采用多種方法。以下是一個基本的遷移方案,包括從舊服務器遷移到新服務器的步驟:
在舊服務器上備份數據庫:
mysqldump -u [用戶名] -p[密碼] --all-databases > backup.sql
注意:-p
后面直接跟密碼,不要有空格。
將備份文件傳輸到新服務器:
可以使用scp
命令:
scp backup.sql [新服務器用戶名]@[新服務器IP]:/path/to/backup.sql
在新服務器上恢復數據庫:
mysql -u [用戶名] -p[密碼] < /path/to/backup.sql
在舊服務器上停止MySQL服務:
sudo systemctl stop mysql
創建數據目錄的備份:
sudo tar czvf mysql_data_backup.tar.gz /var/lib/mysql
將備份文件傳輸到新服務器:
scp mysql_data_backup.tar.gz [新服務器用戶名]@[新服務器IP]:/path/to/mysql_data_backup.tar.gz
在新服務器上解壓并恢復數據目錄:
sudo tar xzvf mysql_data_backup.tar.gz -C /
修改新服務器上的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 = [數據庫名]
重啟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 = [數據庫名]
重啟MySQL服務:
sudo systemctl restart mysql
在新服務器上創建復制用戶:
CREATE USER 'replicator'@'舊服務器IP' IDENTIFIED BY '密碼';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'舊服務器IP';
FLUSH PRIVILEGES;
獲取二進制日志位置:
SHOW MASTER STATUS;
在新服務器上配置復制:
CHANGE MASTER TO
MASTER_HOST='舊服務器IP',
MASTER_USER='replicator',
MASTER_PASSWORD='密碼',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
START SLAVE;
檢查復制狀態:
SHOW SLAVE STATUS\G
確保Slave_IO_Running
和Slave_SQL_Running
都是Yes
。
驗證數據一致性: 在新舊服務器上運行相同的查詢,比較結果是否一致。
通過以上步驟,你可以成功地將MySQL數據庫從Debian舊服務器遷移到新服務器。根據實際情況選擇最適合的方法。