一、數據備份與恢復階段,選在凌晨1點進行操作,暫停服務進行備份(允許停服2個小時)
1、首先停止Nginx服務,并且修改數據庫用戶密碼,防止還有新的連接進來
2、殺掉某個用戶所有進程
for i in `mysql -udba -pPASSWORD -ssse "show full processlist"|grep DATABAES_NAME |awk '{print $1}'`; do /usr/local/mysql/bin/mysql -udba -pPASSWORD -e "kill $i"; done
3、開發人員記錄源庫數據
4、采用Innodbbackup對需要的數據庫做物理備份。需要備份的數據庫信息:A庫94G、B庫460M。另還需對mysql、performance_schema這2個庫做備份,此為mysql服務默認庫,保存有用戶權限等信息,恢復時需要用到。如果不備份這2個庫,數據還原后啟動服務會報錯Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist。備份命令如下:
time innobackupex --defaults-file=/etc/my.cnf --databases="mysql performance_schema database_a database_b" --user=dba --password=PASSWORD /data/backup/
5、將數據傳輸到新服務器,這2臺機器隨后會部署為主從模式
scp -r /data/backup/2018-12-05_11-59-45/ root@10.3.0.224:/data/backup/
scp -r /data/backup/2018-12-05_11-59-45/ root@10.3.0.225:/data/backup/
6、暫停目標服務器已經提前搭建好的MySQL 3310實例,清空數據目錄,重新初始化,準備還原
mysqladmin -udba -p -S /tmp/mysql3310.sock shutdown #停止新實例的服務
rm -rf /data/mysql3310 /data/dblog/mysql3310 /etc/my3310.cnf #刪除數據和配置
/usr/local/shell/mysql_multi_install.sh #這是只是一個初始化腳本
mysql -uroot -p`cat /data/mysql3310/passwd.txt` -S /tmp/mysql3310.sock
alter user root@'localhost' identified by 'PASSWORD';
grant all privileges on *.* to 'dba'@'%' identified by 'PASSWORD' with grant option;
grant all privileges on *.* to 'dba'@'localhost' identified by 'PASSWORD' with grant option;
mysqladmin -udba -p -S /tmp/mysql3310.sock shutdown #初始化完畢后再次停止服務準備還原數據
7、備份數據還原
rm -rf /data/mysql3310/*
innobackupex --defaults-file=/etc/my3310.cnf --apply-log /data/backup/2018-12-05_11-59-45/
innobackupex --defaults-file=/etc/my3310.cnf --copy-back /data/backup/2018-12-xx_xx-xx-xx/
chown -R mysql. /data/mysql3310
8、啟動服務
mysqld_safe --defaults-file=/etc/my3310.cnf &
二、主從部署階段(主節點:10.3.0.224;從節點:10.3.0.225)
1、登錄SQLYOG刪除原有repl賬戶信息,兩臺均操作
2、在224上授權并獲取binlog的位置信息
mysql -udba -p -S /tmp/mysql3310.sock
mysql > GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@'10.3.0.225' IDENTIFIED BY 'PASSWORD';
mysql > show master status \G
3、在225從庫同步
mysql -udba -p -S /tmp/mysql3310.sock
CHANGE MASTER TO MASTER_HOST='10.3.0.224',MASTER_PORT=3310,MASTER_USER='repl',MASTER_PASSWORD='PASSWORD',MASTER_LOG_FILE='mysql-bin.xxxxx',MASTER_LOG_POS=xxx;
start slave;
三、域名切換
服務前移后使用了新域名,只需要做好解析即可,然后啟動Nginx觀察服務