在Ubuntu上遷移MySQL數據可以通過多種方式進行,以下是一些常見的方法:
mysqldump
和mysql
命令行工具備份源數據庫
在源服務器上,使用mysqldump
命令備份數據庫:
mysqldump -u [用戶名] -p[密碼] [數據庫名] > backup.sql
例如:
mysqldump -u root -pMySecretPassword mydatabase > backup.sql
將備份文件傳輸到目標服務器
使用scp
或其他文件傳輸工具將備份文件傳輸到目標服務器:
scp backup.sql user@target_server:/path/to/destination/
在目標服務器上恢復數據庫
在目標服務器上,使用mysql
命令導入備份文件:
mysql -u [用戶名] -p[密碼] [數據庫名] < /path/to/destination/backup.sql
例如:
mysql -u root -pMySecretPassword mydatabase < /home/user/backup.sql
xtrabackup
進行熱備份xtrabackup
是一個用于MySQL和MariaDB的熱備份工具,可以在不中斷服務的情況下進行備份。
安裝xtrabackup
在源服務器和目標服務器上安裝xtrabackup
:
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
執行熱備份 在源服務器上執行熱備份:
xtrabackup --backup --user=[用戶名] --password=[密碼] --target-dir=/path/to/backup
準備備份 將備份文件傳輸到目標服務器,并在目標服務器上準備備份:
xtrabackup --prepare --target-dir=/path/to/backup
恢復備份 將準備好的備份文件復制到MySQL數據目錄,并啟動MySQL服務:
cp -R /path/to/backup/* /var/lib/mysql/
systemctl start mysql
如果你需要實時同步數據,可以使用MySQL的復制功能。
配置主服務器
編輯主服務器的my.cnf
文件,添加以下配置:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = [數據庫名]
重啟MySQL服務
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;
UNLOCK TABLES;
配置從服務器
編輯從服務器的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服務
systemctl restart mysql
設置主服務器信息 在從服務器上執行以下命令設置主服務器信息:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
START SLAVE;
通過以上方法,你可以在Ubuntu上遷移MySQL數據。選擇哪種方法取決于你的具體需求和場景。