实例:
备份:
<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,如需转载请自行联系原作者