mysql不停服務遷移數據庫,部分備份+主從同步

方案

通過一番深思熟慮(google),最終決定了如下方案:mysql

1.在新服務器上搭建mysql,並做爲"從"服務器 2.使用innobackupex在不中止舊mysql服務的狀況下順利備份數據到從數據庫 3.將從服務器提高爲主服務器,舊項目代碼的數據庫鏈接方式改成遠程鏈接新數據庫 4.在新服務器上部署項目代碼,域名解析到新服務器,在徹底生效以前,舊服務器還須要承擔一部分請求 5.觀察舊服務器請求日誌,當沒有請求後完全刪除舊代碼和舊數據庫,完成整個遷移sql

主從搭建

主從搭建要注意的是數據庫版本最好保持一致,至少保證大版本號一致,從數據庫小版本號不要低於主數據庫數據庫

主從搭建比較簡單,大體分爲如下步驟服務器

1.修改主數據庫my.cnf,設置server_id 2.修改從數據庫my.cnf 設置server_id 3.修改從數據庫my.cnf 設置replicate-do-db來指定你想要同步的數據庫名稱,多個寫多行,若想同步全部,則不要設置這個參數 4.主數據庫上建立同步賬號並受權,給從服務器用的 5.從數據庫上配置slave 此時不要啓動slave,等數據庫備份過來再啓動google

具體步驟能夠參考這篇文章: http://369369.blog.51cto.com/319630/790921/.net

不停服備份數據

經過innobackupex備份指定的數據庫,將備份文件傳到從數據庫所在服務器,恢復數據。線程

備份過程參考這篇文章: http://blog.csdn.net/zhu19774279/article/details/49681767日誌

啓動從數據庫的slave

start slave;

一條sql語句,簡單!不要忘了查看狀態 show slave status\G 前面的主從設置文章裏有說明,這裏就不囉嗦了code

將從數據庫提高爲主數據庫

#查看主庫狀態
show processlist;
Master has sent all binlog to slave; waiting for binlog to be updated
show master status \G

#從庫中止 IO_THREAD 線程
stop slave IO_THREAD;
show processlist;
Slave has read all relay log; waiting for the slave I/O thread to update it
show slave status \G

#從庫切換爲主庫
stop slave;
reset master;
reset slave all;
show master status \G

#激活賬戶
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
GRANT REPLICATION SLAVE ON *.* TO 'slave_passport'@'10.10.16.51' IDENTIFIED BY 'slave_passport';
FLUSH PRIVILEGES;

#切換原有主庫爲從庫
reset master;
reset slave all;

CHANGE MASTER TO
MASTER_HOST='10.10.16.24',
MASTER_USER='slave_passport',
MASTER_PASSWORD='slave_passport',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=804497686;

#檢查主庫
SHOW PROCESSLIST;
show master status \G

#啓動從庫
SHOW PROCESSLIST;
start slave;
show slave status \G
相關文章
相關標籤/搜索