本文介紹如何在Ubuntu 14.04系統(tǒng)上,將阿里云RDS mysql 5.6數(shù)據(jù)庫同步到本地MySQL 5.6數(shù)據(jù)庫。
一、準(zhǔn)備工作:
環(huán)境:阿里云RDS MySQL 5.6,本地環(huán)境Ubuntu 14.04,MySQL 5.6。
二、安裝Percona Xtrabackup:
wget https://repo.percona.com/apt/percona-release_0.1-5.$(lsb_release -sc)_all.deb dpkg -i percona-release_0.1-5.$(lsb_release -sc)_all.deb apt-get update apt-get install percona-xtrabackup-24
三、安裝MySQL服務(wù)和客戶端:
apt-get install mysql-server-5.6 mysql-client-5.6 /etc/init.d/mysql stop
四、下載RDS數(shù)據(jù)庫備份文件:
wget -c '' -O rds_backup.tar.gz # 請?zhí)鎿Q空字符串為你的RDS備份文件下載鏈接
五、解壓備份文件:
將備份文件解壓到指定目錄(例如/home/mysql/data,請根據(jù)實際情況修改)。
bash rds_backup_extract.sh -f rds_backup.tar.gz -C /home/mysql/data # 請確保rds_backup_extract.sh腳本可用
六、恢復(fù)數(shù)據(jù)庫:
使用innobackupex恢復(fù)解壓后的備份文件。
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
七、配置backup-my.cnf文件:
編輯/home/mysql/data/backup-my.cnf文件,根據(jù)你的RDS配置調(diào)整參數(shù)。以下提供一個示例,請根據(jù)實際情況修改:
[mysqld] innodb_checksum_algorithm=innodb innodb_data_file_path=ibdata1:200M:autoextend innodb_log_files_in_group=2 innodb_log_file_size=1048576000 innodb_page_size=16384 innodb_undo_directory=. innodb_undo_tablespaces=0
八、修改文件屬主:
chown -R mysql:mysql /home/mysql/data
九、啟動MySQL進(jìn)程:
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
十、清理MySQL系統(tǒng)表:
mysql -uroot mysql> delete from mysql.db where user='root' and char_length(user)>0; mysql> delete from mysql.tables_priv where user='root' and char_length(user)>0; mysql> flush privileges; mysql> use mysql; mysql> drop table slave_master_info; mysql> drop table slave_relay_log_info; mysql> drop table slave_worker_info; mysql> drop table innodb_index_stats; mysql> drop table innodb_table_stats; mysql> source /usr/share/mysql/mysql_system_tables.sql; mysql> quit; mysqladmin shutdown;
十一、配置my.cnf文件:
將backup-my.cnf中的必要參數(shù)復(fù)制到/etc/mysql/my.cnf文件中,并根據(jù)你的實際情況進(jìn)行調(diào)整。 請?zhí)貏e注意server-id,gtid-mode等參數(shù)的設(shè)置,以及數(shù)據(jù)庫復(fù)制相關(guān)的配置。
十二、設(shè)置slave并進(jìn)行同步 (請在阿里云RDS控制臺創(chuàng)建一個只讀用戶用于同步):
- 重啟MySQL服務(wù):/etc/init.d/mysql restart
- 獲取xtrabackup_slave_info文件內(nèi)容:cat /home/data/mysql/xtrabackup_slave_info
- 使用獲取到的信息,執(zhí)行以下SQL語句 (替換為你的RDS地址,用戶名和密碼):
mysql -uroot mysql> SET GLOBAL gtid_purged='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:1-123456'; # 根據(jù)xtrabackup_slave_info文件內(nèi)容修改 mysql> CHANGE MASTER TO MASTER_HOST='RDS外網(wǎng)地址', MASTER_PORT=3306, MASTER_USER='RDS同步賬號', MASTER_PASSWORD='RDS同步密碼', MASTER_AUTO_POSITION=1; mysql> START SLAVE; mysql> SHOW SLAVE STATUS G;
十三、問題排查:
- InnoDB錯誤: 重啟服務(wù)器。
- unknown variable: 在my.cnf中注釋掉未知變量。
- Table crashed: 使用myisamchk -c -r /home/mysql/data/db/tablesname.MYI修復(fù)。
- 內(nèi)存錯誤: 調(diào)整my.cnf中的內(nèi)存相關(guān)參數(shù)。
- GTID錯誤 (1236): 獲取RDS最新的備份文件重新同步。
注意: 以上步驟中的路徑和參數(shù)需要根據(jù)你的實際情況進(jìn)行調(diào)整。 在進(jìn)行任何操作之前,請務(wù)必備份你的數(shù)據(jù)。 強(qiáng)烈建議在測試環(huán)境中先進(jìn)行測試,再應(yīng)用到生產(chǎn)環(huán)境。 部分參數(shù)的設(shè)置,可以參考阿里云RDS的配置,確保本地MySQL的配置與RDS盡可能一致。