1. mysqldump備份命令
# egrep -v "#|\*|--|^$"? /opt/mysql_bak.sql? # 查看備份的內容
# mysqldump -u 用戶名 -p? 數據庫名 > 備份的文件名? # 備份命令
# mysqldump -u 用戶名 -p -B 數據庫名 > 備份的文件名? # 備份命令,-B會把創建切換庫的語句也備份
# mysqldump -u 用戶名 -p -B 數據庫名 | gzip>備份的文件名? # 備份命令,-B會把創建切換庫的語句也備份,gzip壓縮
# mysqldump -u 用戶名 -p -B 數據庫名1 數據庫名2 | gzip>備份的文件名? # 備份多個庫命令,-B表示接多個庫,并且增加use db和create db的信息,gzip壓縮
# mysqldump -u 用戶名 -p 數據庫名1 表名? # 備份單個表命令
# mysqldump -u 用戶名 -p -d 數據庫名? 表名? # 備份單個表結構的命令
# mysqldump -u 用戶名 -p -A -B --events | gzip>備份的文件名? #備份所有數據庫命令
# mysqldump -u 用戶名 -p -A -B -F --events | gzip>備份的文件名? #備份整個數據庫命令,刷新binlog日志(F參數,切割binlog)
分庫備份
mysql -uroot -p'oldboy' -e "show databases;" | grep -Evi "database|info|perfor" | sed -r 's#^([a-z].*$'#msyqldump -uroot -p'oldboy' --events -B \1 | gzip >/opt/bak/\1.sql.gz#g' | bash
2. mysqldump關鍵參數:
1. -B 制定備份多個庫,增加建庫語句和use切換語句
2. --compact 去掉注釋,適合調試,生產環境不用
3. -A 備份時,制定所有庫
4. -F 刷新binlog日志或者用下邊的--master-data
5. --master-data 增加binlog日志名及對應的位置點 1,2的區別 1 不是注釋,2是注釋
6. -x,--lock-all-tables? 鎖表
7. -l,--lock-tables 只讀鎖表
8. -d 只備份表結構
9. -t 只備份數據
10. --single-transaction 適合innodb事務數據庫的備份,保證備份的一致性
11. --master-data作用
--master-data=1? 無注釋? --為注釋
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000020',MASTER_LOG_POS=1191;
--master-data=2? 注釋
--CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000020',MASTER_LOG_POS=1191;
3. myisam備份命令
# mysqldump -uroot -p'pass' -A -B -F --master-data=2 -x --events | gzip >/opt/data.sql.zip? 常規備份(觸發器和存儲過程需要加其他的參數)
# mysqldump --user=root --all-databases --flush-privileges --lock-all-tables --master-data=1 --flush-logs \
--triggers --routines --events --hex-blob >$BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql
4. innodb備份命令
# mysql -uroot -p'pass' -A -B -F --master-data=2 --events --single-transaction | gzip >/opt/data.sql.zip #只是鎖表的參數有區別
# mysqldump --user=root --all-databases --flush-privileges --single-transaction --master-data=1 --flush-logs \
--triggers --routines --events --hex-blob >$ BACKUP_DIR/full_dump_$BACKUP_TIMESTAMP.sql
如果既有myisam和innodb,以myisam的備份命令為主
--master-data? 2的時候是注釋的,1不是注釋的從庫常用的
5. mysql數據庫的恢復
source命令恢復
在備份時未制定-B參數,必須在恢復的時候給定庫名
6. mysql -uroot -p -e '' 參數
常用的參數:
show status? #查看當前的會話的數據庫信息
show global status #查看整個數據庫運行狀態信息,很重要,要分析做好監控
show processlist? #查看正在執行的sql語句,看不全
show full processlist? #查看正在執行的sql語句全
set global key_buffer_size=32777218 #不重啟數據庫修改參數
show variables; #查看數據庫的參數信息
mysqlbinlog 解析mysq的binlog日志文件
mysqldump -uroot -ptest110oldboy?-B -F --single-transaction?eshop_ett100 | gzip>$bakpath/eshop_ett100_$(date +%F).sql.gz
-B:跟著要備份的庫,這里是eshop——ett100