您好,登錄后才能下訂單哦!
新跳槽了一家公司,上來就是數據庫調優和數據遷移。調優那部分后面再補上來。公司目前用的是5.1的數據庫,很老了,而且隨著業務的發展需要做讀寫分離和主從復制。想把所有的數據都挪到新庫上去。但這個庫大概有60G的數據。
主要思路:
1.創建用戶,并授權
2.搭建主從,做到主從同步,數據目前先保持一致,在切換主從同步切換ip
Mysql5.1已有數據量了,為保證數據的一致性。故需要鎖庫,等數據導入后再解鎖
3.需要注意從庫和主庫的引擎,字符集
show variables like 'character_set%'; --查看當前環境的character_set
show variables like 'collation%'; --查看當前的collation
4.數據搬完后做數據校驗,校驗一致性
采用pt-table-checksum 進行校驗用pt-table-sync恢復一致
Zabbix定時監控mysql是否一致,如果不一致,調用腳本自動修復
統計了幾種方式:
一·版本相同的數據庫
1.如果版本相同的話,直接停庫,拷貝(cp、tar,gzip,cpio) 把mysql的整個目錄打包發送到新的主機上。
這個是最簡單粗暴的,也是最有效,而且數據也是很一致的
2。也可以采用percona-xtrabackup 物理備份 + binlog
借助第三方軟件備份,好處:它能對InnoDB和XtraDB存儲引擎的數據庫非阻塞地備份。它不暫停服務創建Innodb熱備份;
為mysql做增量備份;在mysql服務器之間做在線表遷移;使創建replication更加容易;備份mysql而不增加服務器的負載。
3.mysqldump備分
a.主機A備份成sql文件,在導入到主機B數據庫里,這種方式需要長時間鎖表,而且需要大量時間
mysqldump -uvnum -pvnum@123 --force data_base_name > /data/data_base_name.sql
或直接傳到對應主機下的sql文件,60個G的話,導出導入時間差不多要五個小時左右,太慢了
b.tar備份
備份并壓縮
mysqldump -uusername -ppassword dbname | gzip > /data/wwwroot/www/dbname.sql.gz
解壓并還原
gunzip < /root/dbname.sql.gz | mysql -uusernameb -ppasswordb dbnamenew
時間相對減少點
最佳方式介紹
還有一種直接將數據庫A直接轉移到數據庫B的方式(在服務器A中執行)但要求網速一定要好
mysqldump --default-character-set=utf8mb4 --host=127.0.0.1 -uusername -ppassword
1.必須保證服務器B的數據庫能夠服務器A訪問,且B服務器存在對應的庫
2.--opt命令可選,建議加上。等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以給出很快的轉儲操作并產生一個可以很快裝入MySQL服務器的轉儲文件。
3.--default-character-set=utf8mb4 指定該數據庫連接的字符類型。如果服務器默認未utf8的話,導出的數據可能會丟失四字節的unicode信息(表情之類的)
4.-C 客戶端和服務器之間啟用壓縮傳遞所有信息。當然得要有咯。
mysql通過命令行快速轉移數據庫,一個命令(mysqldump)完成數據備
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。