主庫鎖表
flush table with read lock;
備份數據庫(會有壓縮,測試數據 11G,得到備份文件 227M)
- 其中
max_allowed_packet
和net_buffer_length
兩個參數是用來加速的,可以查看從庫數據 - 如果 root 有密碼請加上參數例如
-uroot -proot
/usr/local/mariadb/bin/mysqldump --max_allowed_packet=33554432 --net_buffer_length=8192 --events -A -B |gzip >/server/backup/mysql_bak.$(date +%F).sql.gz
PS: 如果上面的命令報錯如下
Couldn't execute 'show events': Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)
請執行命令(如果 root 有密碼請加上參數例如 -uroot -proot
)
/usr/local/mariadb/bin/mysql_upgrade
備份結束後,解鎖主庫,恢復讀寫
unlock tables;
拷貝到從庫中
- 注意日期一定有所不同,如果端口不是默認的請叫參數
-P 端口號
- 注意確保
/root
目錄有足夠的空間,如果空間不夠請切換目錄
scp /server/backup/mysql_bak.2020-06-04.sql.gz monitor-host02:/root
從庫
進入備份文件目錄,解壓(11G 的庫,sql 文件只有 1.2G,注意空間比例)
cd /root
gzip -d mysql_bak.2020-06-04.sql.gz
導入數據
- 注意始終從庫中不可以有寫入
- 請先測試
mysql -A
是否可以進入數據庫
mysql -A < mysql_bak.2020-06-04.sql &
實際上這種方式遇到特別大的數據還是很慢,可以考慮使用xtrabackup
來自動備份數據庫。