博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL相关命令与备份
阅读量:6212 次
发布时间:2019-06-21

本文共 6460 字,大约阅读时间需要 21 分钟。

不加任何参数直接备份

mysqldump -uroot  zabbix >/opt/zabbix.bak.sql

恢复,这样恢复时需要自已创建表

mysql -uroot < zabbix.bak.sql

加-B备份的时候增加建表语句

mysqldump -uroot -p -B zabbix > /opt/mysql.bak.B.sqldiff zabbix.bak.sql zabbix.B.bak.sqlmysql -uroot -p < /opt/zabbix.B.bak.sql

备份时压缩

[root@zabbix opt]# mysqldump -uroot -p --compact -B zabbix |gzip > /opt/zabbix.B.bak.compact.sql.gzEnter password: [root@zabbix opt]# ll -htotal 72M  w-r--r-- 1 root root  22M May 29 21:27 zabbix.bak.sql?w-r--r-- 1 root root  22M May 29 21:33 zabbix.B.bak.compact.sql-rw-r--r-- 1 root root 6.9M May 29 21:35 zabbix.B.bak.compact.sql.gz-rw-r--r-- 1 root root  22M May 29 21:27 zabbix.B.bak.sql[root@zabbix opt]# lsmysqldump.txt  zabbix.bak.sql  zabbix.B.bak.compact.sql  zabbix.B.bak.compact.sql.gz  zabbix.B.bak.sql

恢复压缩备份

[root@zabbix opt]# gzip -d zabbix.bak.sql.gz

备份多个库

[root@zabbix opt]# for i in `mysql -e "show databases;" |egrep -v "infor|perf|Database"` ; do mysqldump -uroot -p -B $i > $i.bak.sql;doneEnter password: Enter password: [root@zabbix opt]# [root@zabbix opt]# lsmysql.bak.sql  zabbix.bak.sql[root@zabbix opt]# ll -htotal 23M-rw-r--r-- 1 root root 504K May 29 22:23 mysql.bak.sql-rw-r--r-- 1 root root  22M May 29 22:23 zabbix.bak.sql

--events可以在给出警告的时候不提示警告

用sed命令拼接的方法备份

[root@zabbix opt]# mysql -e "show databases;" |egrep -v "infor|perf|Database"|sed -r 's#(.*)#mysqldump -uroot -p -B & > &.bak.sql#g'|bashEnter password: Enter password: [root@zabbix opt]# lsmysql.bak.sql  zabbix.bak.sql

用awk命令拼接的方法备份

[root@zabbix opt]# mysql -e "show databases;" |egrep -v "infor|perf|Database"|awk '{print "mysqldump -uroot -p -B "$0" > "$0".bak.sql"}'|bashEnter password: Enter password: [root@zabbix opt]# lsmysql.bak.sql  zabbix.bak.sql

备份所有库数据的同时还刷新binlog

[root@zabbix opt]# mysqldump -uroot  -p -A -B -F > mysql.all.sqlEnter password: [root@zabbix opt]# ll -htotal 45M-rw-r--r-- 1 root root  23M May 29 23:13 mysql.all.sql-rw-r--r-- 1 root root 504K May 29 22:29 mysql.bak.sql-rw-r--r-- 1 root root  22M May 29 22:29 zabbix.bak.sql

命令

mysql -e相关命令

show processlist;            查看数据库里正在执行的SQL语句,可能无法看全完整SQL语句        show full processlist;            查看正在执行的完整SQL语句,完整显示        set global key_buffer_size = 1024*1024*16            不重启数据库调整数据库参数,直接生效,重启后失效        show variables;            查看数据库的配置参数信息,例如:my.cnf里参数的生效情况            show variables like '%log_bin%';
全局生效的方法,改/etc/my.cnf,然后在mysql命令行set设置
MariaDB [(none)]> show variables like 'key_buffer%';+-----------------+-----------+| Variable_name   | Value     |+-----------------+-----------+| key_buffer_size | 134217728 |+-----------------+-----------+1 row in set (0.00 sec)MariaDB [(none)]> set global key_buffer_size=1024*1024*32;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show variables like 'key_buffer%';+-----------------+----------+| Variable_name   | Value    |+-----------------+----------+| key_buffer_size | 33554432 |+-----------------+----------+1 row in set (0.00 sec)
kill ID        杀掉SQL线程的命令,ID为线程号    show session status;        查看当前会话的数据库状态信息。    show global status;        查看整个数据库运行状态信息,很重要,要分析并要做好监控。    show engine innodb status;        显示innodb引擎的性能状态(早期版本show innodb status;)

```

mysqladmin

设置密码            mysqladmin password oldboy123        修改密码            mysqladmin -uroot -poldboy123 password oldboy        查看状态            相当于show status;  mysqladmin -uroot -poldboy123 status;        每秒查看一次状态            mysqladmin -uroot -poldboy123 -i 1 status;        等同show global status;            mysqladmin -uroot -poldboy123 extended-status;        切割日志            mysqladmin -uroot -poldboy123 flush-logs        查看执行的SQL语句信息            mysqladmin -uroot -poldboy123 processlist;            mysqladmin -uroot -poldboy123 processlist -i 1;    每秒查看一次        关闭mysql服务            mysqladmin -uroot -poldboy123 shutdown        相当于show variables            mysqladmin -uroot -poldboy123 variables;

mysqldump

-B,--databases:会在备份的数据中增加建库(create)及"use库"的语句,可以直接接多个库名,同时备份多个库        -A,--all-databases:备份所有数据库。        -d,--no-data:只备份库表结构(SQL语句形式),没有行数据        -t,--no-create-info:只备份表内行数据(SQL语句形式)。没有表结构        -T,--tab=name:将库表和数据分离成不同的文件,行数据是纯文本,表结构是SQL语句,5.6版本默认没有权限操作,需要修改my.cnf参数。        -F,刷新binlog日志,生成新binlog文件,        --master-data={1|2},在备份结果中增加binlog日志文件名及对应的binlog位置点,会打开--lock-all-tables功能,除非有--single-transaction在,使用该参数时会关闭--lock-tables功能        -x,--lock-all-tables,备份时对所有数据库的表执行全局读锁,期间同时禁止--single-transaction和--lock-tables参数功能        -l,--lock-tables:锁定所有的表为只读        --single-transaction,在备份InoDB引擎数据表时,隔离级别,备份数据不会备份后来写入的数据,用户能正常写入数据         -R,--routines:备份存储过程和函数数据        --triggers,备份触发器数据        --compact,只显示很少的有用输出,适合学习和测试环境调试

mysqlbinlog

binlog是用来记录mysql内部增删改查等对mysql数据库更新的内容的记录

如果在mysqlbinlog里面有drop语句,需要把drop语句删除才能恢复,不然会重新drop表
-d,--database=name            根据指定库拆分binlog(拆分单表binlog可通过SQL关键字过滤)        -r,--result-file=name            指定解析binlog输出SQL语句的文件        -R,--read-from-remote-server            从mysql服务器读取binlog日志,是下面参数的别名,read-from-remote-master=BINLOG-DUMP-NON-GTIDS#指定位置进行恢复        -j,--start-position=#            读取binlog的起始位置点,#号是具体的位置点        --stop-position=#            读取binlog的停止位置点,#号是具体的位置点#指定开始和结束时间开始恢复        --start-datetime=name            读取binlog的起始位置点,name是具体的时间,格式为:2004-12-25 11:25:56        --stop datetime=name            读取binlog的停止位置点,name是具体的时间        --base64-output=decode-rows            解析ROW级别binlog日志的方法,例如:mysqlbinlog-base64-output=decode-rows -v mysql-bin.000016

mysql

-u   指定数据库用户        -p  指定数据库密码        -S  指定数据库socket文件        -h  指定数据库主机,默认localhost        -P  指定数据库端口,默认3306        --default-character-sets=name    指定字符集登录数据库或备份

备份脚本

#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binUSER=rootPASS='pwd'TIME=`date +%y%m%d`FULL_BAKDIR=/backup/full_bakBINLOG_DIR=/backup/binlog_bakmkdir -p ${FULL_BAKDIR}/${TIME}mkdir -p $BINLOG_DIRfunction DB_NAME(){
mysql -u$USER -p$PASS -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema" }function FULL_BAK(){
for i in `DB_NAME` ;do mysqldump -u$USER -p$PASS -R -F --triggers --single-transaction --master-data=1 -B $i 2>/dev/null |gzip > ${FULL_BAKDIR}/${TIME}/${i}_${TIME}.sql.gz done }function BINLOG_BAK(){
cd / && \ tar zcf binlog_${TIME}.tar.gz application/mysql/data/mysql-bin* && \ mv binlog_${TIME}.tar.gz /$BINLOG_DIR/ find /backup/binlog_bak/ -name "binlog*.tar.gz" -mtime +3 | xargs rm -f }function main(){
FULL_BAK BINLOG_BAK }main

转载地址:http://nbcja.baihongyu.com/

你可能感兴趣的文章
在apollo中添加jmx监控
查看>>
WinSCP
查看>>
java 多图组合
查看>>
MySQL主从复制配置
查看>>
【工具使用系列】关于 MATLAB Simulink Stateflow, 你需要知道的事
查看>>
uClibc库的交叉编译
查看>>
让spring mvc支持put请求
查看>>
一个简单的随机数方法,支持小数
查看>>
centos下yum安装ffmpeg
查看>>
Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
查看>>
AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
查看>>
awk一些简单的应用
查看>>
给 Android 开发者的 RxJava 详解
查看>>
Html元素
查看>>
Kali安装OWTF、PIP、tornado
查看>>
IOS UIWebView调用H5页面后退方法出现“about:blank”
查看>>
12. Integer to Roman
查看>>
dubbo之hessian序列化数据丢失
查看>>
ARM嵌入式Linux系统开发详解(第2版)
查看>>
Ubuntu failed to run the android sdk manager
查看>>