Linux下MYSQL分庫和分表備份方式(學習小結)

MYSQL分庫備份
mysqldump -uroot -ptest123 -S /data/3306/mysql.sock -B testdb | gzip > /server/backup/mysqlbak_$(date +%F).sql.gz
可經過腳本結合定時任務實現自動備份:
mysql_db_bak.sh
#!/bin/bash
MYUSER=root
MYPASSWD=test123
SOCKET=/data/3306/mysql.sock
MYSQLCMD="mysql -u$MYUSER -P$MYPASSWD -S $SOCKET"
MYSQLDUMP="mysqldump -u$MYUSER -P$MYPASSWD -S $SOCKET"
for database in test01db test02db test03db
do
$MYSQLDUMP $database | gzip > /server/backup/${database}_$(date +%F).sql.gz
done
chmod +x mysqlbak.sh

不登陸數據庫查詢mysql和schema數據庫
$MYSQLCMD -e "show databases;" | sed '1,2d' | egrep -v "mysql|schema"

MYSQL分表備份
mysql_db_table_bak.sh
#!/bin/bash
MYUSER=root
MYPASSWD=test123
SOCKET=/data/3306/mysql.sock
MYSQLCMD="mysql -u$MYUSER -P$MYPASSWD -S $SOCKET"
MYSQLDUMP="mysqldump -u$MYUSER -P$MYPASSWD -S $SOCKET"
for database in `$MYSQLCDM -e "show databases;" | sed '1,2d' | egrep -v "mysql|schema"`
do
   mkdir -p /server/backup/${database}
   for table in `MYSQLCMD -e "show tables from $database;" | sed '1d'`
   do
   $MYSQLDUMP $database $table | gzip > /server/backup/${database}/${database}_${table}_$(date +%F).sql.gz
   done
done
chmod +x mysql_db_table_bak.sh
mysql

相關文章
相關標籤/搜索