執行個體:
備份:
<code>mysqldump -u root -p</code><code>'123456'</code> <code>kaliboy></code><code>/opt/kaliboy</code><code>.sql</code>
指定字元集備份:
<code>mysqldump -u root -p</code><code>'123456'</code> <code>--default-character-</code><code>set</code><code>=utf8 kaliboy></code><code>/opt/kaliboy</code><code>.sql</code>
備份參數:
<code>-e : 後面可以執行mysql 指令用;分開</code>
<code>-B :參數的作用是增加建立資料庫和連接配接資料庫的指令</code>
<code>-d : 備份表結構</code>
<code>-t : 備份資料</code>
<code>-A -B --events 備份全部資料庫</code>
<code>-F : 重新整理binlog日志檔案</code>
<code>--master-data=1(=2) : 增加binlog日志檔案名及對應的位置點</code>
<code>-x,--lock-all-tables 鎖表</code>
<code>-l,--lock-tables 隻讀鎖表</code>
<code>--compact :去掉注釋</code>
<code>--single-transaction : 适合innodb事務資料庫備份</code>
<code>mysqldump -u root -p</code><code>'123456'</code> <code>-B kaliboy></code><code>/opt/kaliboy_bak</code><code>.sql</code>
還原資料庫:
<code>mysql -uroot -p</code><code>'123456'</code> <code><</code><code>/opt/kaliboy_bak</code><code>.sql</code>
檢視備份内容:
<code>egrep</code> <code>-</code><code>v</code> <code>"#|\*|--|^$"</code> <code>/opt/kaliboy</code><code>.sql</code>
檢視字元集:
<code>mysql -uroot -p</code><code>'123456'</code> <code>-e </code><code>"show variables like '%character%'"</code>
myqsl多庫備份:
<code>mysqldump -uroot -p</code><code>'123456'</code> <code>-B (庫名)kaliboy (庫名)ClasssInfo (庫名)kaliboy_gbk|</code><code>gzip</code> <code>></code><code>/opt/mysql_bak</code><code>.sql.gz</code>
mysql分庫備份:
<code>mysql -uroot -p</code><code>'123456'</code> <code>-e </code><code>"show databases;"</code><code>|</code><code>grep</code> <code>-Evi </code><code>"database|info|perfor"</code><code>|</code><code>sed</code> <code>-r </code><code>'s#^([a-z].*$)#mysqldump -uroot -p'</code><code>123456</code><code>' --events -B \1|gzip >/opt/\1.sql.gz#g'</code><code>|</code><code>bash</code>
<code>#!/bin/bash</code>
<code>for</code> <code>dbname </code><code>in</code> <code>`mysql -uroot -p</code><code>'123456'</code> <code>-e </code><code>"show databases;"</code><code>|</code><code>grep</code> <code>-Evi </code><code>"database|infor|perfor"</code><code>`</code>
<code>do</code>
<code>mysqldump -uroot -p</code><code>"123456"</code> <code>--events -B $dbname|</code><code>gzip</code> <code>></code><code>/opt/bak</code><code>${dbname}_bak.sql.gz</code>
<code>done</code>
備份單個表和多表:
文法:mysqldump -u 使用者名 -p 資料庫名 表名 表名 表名>備份的檔案名
<code>mysqldump -u root -p ClassInfo score></code><code>/opt/table1</code><code>.sql</code>
分庫分表備份:
<code>#!/bin/bash</code>
<code>USER=root</code>
<code>PASSWD=123456</code>
<code>SOCK=</code><code>/data/3306/mysql</code><code>.sock</code>
<code>LOGIN=</code><code>"mysql -u$USER -p$PASSWD -S $SOCK"</code>
<code>DATABASES=`$LOGIN -e </code><code>"show databases;"</code><code>|</code><code>sed</code> <code>"1d"</code><code>|</code><code>egrep</code> <code>-</code><code>v</code> <code>"^.*sch|mysql"</code><code>`</code>
<code>dump=</code><code>"mysqldump -u$USER -p$PASSWD -S $SOCK"</code>
<code>for</code> <code>database </code><code>in</code> <code>$DATABASES</code>
<code>[ ! -d </code><code>/back/</code><code>$database ] && </code><code>mkdir</code> <code>-p </code><code>/back/</code><code>$database</code>
<code>TABLE=`$LOGIN -e </code><code>"show tables from $database;"</code><code>|</code><code>sed</code> <code>'1d'</code><code>`</code>
<code>for</code> <code>table </code><code>in</code> <code>$TABLE</code>
<code>$dump $database $TABLE|</code><code>gzip</code> <code>></code><code>/back/</code><code>$database/${database}_${table}_$(</code><code>date</code> <code>+%F).sql.gz</code>
隻備份表結構和隻備份資料:
參數-d 備份表結構
參數-t 備份資料
<code>mysql -u root -p</code><code>'123456'</code> <code>--compact -d ClassInfo score></code><code>/opt/tabled</code><code>.sql</code>
<code>mysql -u root -p</code><code>'123456'</code> <code>--compact -t ClassInfo score></code><code>/opt/tablet</code><code>.sql</code>
備份全部資料庫:
<code>mysqldump -u root -p</code><code>'123456'</code> <code>-A -B --events|</code><code>gzip</code> <code>></code><code>/opt/all</code><code>.sql.gz</code>
myisam與innodb備份的差別:
myisam :
mysqldump -uroot -p'123456' -A -B --master=2 -x|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 -x --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
innodb:
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
恢複資料庫實戰:
利用source指令恢複資料庫
進入mysql資料庫控制台,mysql -u root -p 登入後
mysql>use 資料庫名
然後使用指令source 指令,後面參數為腳本檔案,可以利用system ls 檢視檔案路徑
mysql>source /opt/all.sql.gz
批量恢複腳本執行個體:
#!/bin/bash
gzip -d /opt/*.gz
for dbname in `ls *.sql|sed 's#_bak.sql##g'`;
do
mysql -u root -p'123456' <${dbname}_bak.sql;
done
mysql--shou指令總結:
show status; 檢視目前會話的資料庫狀态資訊
show global status; 檢視整個資料庫運作狀态資訊
show full processlist; 檢視正在執行的sql語句
show variables; 檢視資料庫參數資訊
---------------------------------------------
mysqlbinlog ->解析mysql的binlog日志
用來記錄mysql内部增删改查等對mysql資料庫有更新的内容記錄。
mysqlbinlog參數:
-d 截取指定庫的binlog
按照位置截取:
mysqlbinlog mysqlbin.000046 --start-position=365 --stop-position=456 -r /opt/pos.sql
按照時間截取:
mysqlbinlog mysql-bin.000046 --start-datetime='2016-10-15 15:14:15' --stop-datetime='2016-10-15 15:16:17' -r time.sql
本文轉自 藍葉子Sheep 51CTO部落格,原文連結:http://blog.51cto.com/dellinger/1948087,如需轉載請自行聯系原作者