MySQL系列(四):MySQL增量备份及数据恢复

MySQL数据库的备份

备份单个数据库练习多种参数使用

mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下:

语法:

mysqldump -u 用户名 -p 数据库名> 备份的文件名

例1:备份名字为test2的库

1)查看备份前的数据

mysql -uroot -pyjscloud -e 'use test;show tables;select * from student;'

m-77

2)执行备份命令

[root@mysql-1 ~]# mysqldump -uroot -pyjscloud test >/opt/mysql_bak.sql

3)检查备份的结果

egrep -v "#|\*|--|^$" /opt/mysql_bak.sql

m-78

例2:备份时加-B参数

[root@mysql-1 ~]# mysqldump -uroot -pyjscloud -B test >/opt/mysql_bak_B.sql

和前面备份的文件对比,看看-B参数的作用

m-79
提示:直观看,加-B参数的作用是增加创建数据库和连接数据库命令了,即如下两条语句:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ test /*!40100 DEFAULT CHARACTER SET utf8 */;
USE test;

利用上述加-B的备份进行恢复测试:

m-80

例3:优化备份文件大小减少输出注释(debug调试)

利用mysqldump的--compact参数优化下备份结果

m-81
略去输出

带--compact参数备份

m-82

--compact参数说明(测试是使用的比较多,也可以优化输出内容的大小,让容量更少,适合调试):
参数说明:该选项使得输出内容更简洁,不包括默认选项中各种注释,有如下几个参数的功能:
--skip-add-drop-table --no-set-name --skip-disable-keys --skip-add-locks

例4:指定压缩命令压缩备份的mysql数据

m-83

压缩效率将近3倍。通过以上例子可以得出结论

1)导出数据用-B参数

2)用gzip对备份的数据压缩

mysqldump的工作原理

利用mysqldump命令备份数据库的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生产备份的文件的过程。备份的数据过滤注释,都是sql语句,结果如下:

m-84

备份多个库及多个参数

1)操作结果

m-85

2)-B参数说明

提示:-B参数是关键,表示接多个库,并且增加use db,和create database db的信息(生产环境常用)

参数说明:改参数用于导出若干个数据库,在备份结果中加入USE db_name 和CRETAE DATABASE 'db_name' -B后的参数都将被作为数据库名。该参数比较常用。当-B后的数据库列全时同-A参数

如何做分库备份?

分库备份实际上就是执行一个备份语句备份一个库,如果数据库里有多个库,就执行多条相同的备份单个库的备份语句就可以备份多个库了,注意每个库都可以用对应备份的库作为库名,结尾加.sql。备份多个库的命令如下:
分库备份:

mysql -uroot -pyjscloud -e 'show databases;'|grep -Evi 'database|infor|perfor'|sed -r 's#^([a-z].*$)#mysqldump -uroot -pyjscloud --events -B \1|gzip >/opt/bak/\1.sql.gz#g'|bash

备份单个表

语法:

mysqldump -u 用户名 -p 数据库名 表名>备份的文件名
mysqldump -u root -p test student>/opt/table1.sql

执行结果:

m-86
m-87

备份多个表

语法:

mysqldump -u 用户名 -p 数据库名 表名1 表名2>备份的文件名

操作结果:

[root@mysql-1 opt]# mysqldump -uroot -pyjscloud test course >/opt/two_tables.sql

一个库里有大有小的表,有时可能需要恢复某一个小表,上述的多表备份文件很难拆开,就会像没有分库那样导致恢复某一个小表很麻烦。那又如何进行分表备份呢?如下和分库是的思想一样,每执行一条语句备份一个表,生产不同的数据文件即可,

mysqldump -uroot -pyjscloud test student > test_student.sql
mysqldump -uroot -pyjscloud test course > test_course.sql

当然这种做法是很土的

备份数据库表结构(不包含数据)

利用mysqldump -d参数只备份表的结构,例:备份test库的所有表的结构

m-88

如果只希望导出数据则用-t参数

mysqldump的关键参数说明

关键参数:mysqldump --help

-A:导出全部数据库

--all-databases Dump all the databases. This will be same as --databases with all databases selected.

-Y: 导出全部表空间

--all-tablespaces Dump all the tablespaces.

-y:不导出任何表空间信息

--no-tablespaces Do not dump any tablespace information.

--add-drop-database:每个数据库创建之前添加drop数据库语句

Add a 'DROP DATABASE' before each create.

--add-drop-table:每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)

Add a 'drop table' before each create. 

--add-locks:在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项)

Add locks around insert statements.   

--allow-keywords:允许创建是关键词的列名字。

Allow creation of column names that are keywords.

--character-sets-dir=name:字符集文件的目录

Directory where character sets are.

-i:附加注释信息。默认为打开,可以用--skip-comments取消

--comments Write additional information.

--compatible=name:导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。

Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for MySQL. Legal modes are: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options. One can use several modes separated by commas. Note: Requires MySQL server version 4.1.0 or higher. This option is ignored with earlier server versions.

--compact:导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys

Give less verbose output (useful for debugging). Disables structure comments and header/footer constructs.  Enables options --skip-add-drop-table --no-set-names --skip-disable-keys --skip-add-locks

-c:使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

--complete-insert Use complete insert statements.

-C:在客户端和服务器之间启用压缩传递所有信息

--compress Use compression in server/client protocol.

--create-options:在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)

Include all MySQL specific create options.

-B:导出数据库。参数后面所有名字参量都被看作数据库名。

--databases To dump several databases. Note the difference in usage; In this case no tables are given. All name arguments are regarded as databasenames. 'USE db_name;' will be included in the output.

-#:输出debug信息,用于调试

--debug[=#] This is a non-debug version. Catch this and exit

--debug-check:检查内存和打开文件使用说明并退出。

Check memory and open file usage at exit.

--debug-info:输出调试信息并退出

Print some debug info at exit.

--default-character-set=name:设置默认字符集

Set the default character set.

--delayed-insert:采用延时插入方式(INSERT DELAYED)导出数据

Insert rows with INSERT DELAYED;

--delete-master-logs:master备份后删除日志. 这个参数将自动激活--master-data。

Delete logs on master after backup. This automatically enables --master-data.

-K:对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合MyISAM表,默认为打开状态。

--disable-keys  '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.

-E:导出事件。

--events Dump events.

-e:使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。

--extended-insert Allows utilization of the new, much faster INSERT syntax.

--fields-terminated-by=name:导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项

Fields in the textfile are terminated by ...

--fields-enclosed-by=name:输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项

Fields in the importfile are enclosed by ...

--fields-optionally-enclosed-by=name:输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项

Fields in the i.file are opt. enclosed by ...

--fields-escaped-by=name:输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项

Fields in the i.file are escaped by ...

-F:开始导出之前刷新日志。

--flush-logs  Flush logs file in server before starting dump. Note that if you dump many databases at once (using the option --databases= or --all-databases), the logs will be flushed for each database dumped. The exception is when using --lock-all-tables or --master-data: in this case the logs will be flushed only once, corresponding to the moment all tables are locked. So if you want your dump and the log flush to happen at the same exact moment you should use --lock-all-tables or --master-data with --flush-logs

--flush-privileges:在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。

Emit a FLUSH PRIVILEGES statement after dumping the mysql database.  This option should be used any time the dump contains the mysql database and any other database that depends on the data in the mysql database for proper restore.

-f:在导出过程中忽略出现的SQL错误。

--force Continue even if we get an sql-error.

-?:显示帮助信息并退出。

--help Display this help message and exit.

--hex-blob:使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。

Dump binary strings (BINARY, VARBINARY, BLOB) in hexadecimal format.

-h:需要导出的主机信息

--host=name  Connect to host.

--ignore-table=name:不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……

Do not dump the specified table. To specify more than one table to ignore, use the directive multiple times, once for each table.  Each table must be specified with both database and table names, e.g. --ignore-table=database.table

--insert-ignore:在插入行时使用INSERT IGNORE语句.

Insert rows with INSERT IGNORE.

--lines-terminated-by=name:输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。

Lines in the i.file are terminated by ...

-x:提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。

--lock-all-tables Locks all tables across all databases. This is achieved by taking a global read lock for the duration of the whole dump. Automatically turns --single-transaction and --lock-tables off.

-l:开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。

--lock-tables Lock all tables for read.

--log-error=name:附加警告和错误信息到给定文件

Append warnings and errors to given file.

--no-autocommit:使用autocommit/commit 语句包裹表

Wrap tables with autocommit/commit statements.

-n:只导出数据,而不添加CREATE DATABASE 语句

--no-create-db  'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' will not be put in the output. The above line will be added otherwise, if --databases or --all-databases option was given.}.

-t:只导出数据,而不添加CREATE TABLE 语句

--no-create-info Don't write table creation info.

-d:不导出任何数据,只导出数据库表结构

--no-data No row information.

--opt:等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.

Same as --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with --skip-opt.

--order-by-primary:如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。

Sorts each table's rows by primary key, or first unique key, if such a key exists.  Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer.

-p:连接数据库密码

--password[=name] Password to use when connecting to server. If password is not given it's solicited on the tty.

-W:使用命名管道连接mysql(windows系统可用)

--pipe Use named pipes to connect to server.

-P:连接数据库端口号

--port=# Port number to use for connection.

--protocol=name:使用的连接协议,包括:tcp, socket, pipe, memory.

The protocol of connection (tcp,socket,pipe,memory).

-q:不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项

--quick Don't buffer query, dump directly to stdout.

-Q:使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。

--quote-names Quote table and column names with backticks (`).

--replace:使用REPLACE INTO 取代INSERT INTO.

Use REPLACE INTO instead of INSERT INTO.

-r:直接输出到指定文件中。该选项应该用在使用回车换行对(\r\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。

--result-file=name Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\n' from being converted to '\r\n' (carriage return + line feed).

-R:导出存储过程以及自定义函数。

--routines Dump stored routines (functions and procedures).

--set-charset:添加'SET NAMES default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。

Add 'SET NAMES default_character_set' to the output. Enabled by default; suppress with --skip-set-charset.

-O:设置变量的值

--set-variable=name Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.

--dump-date:添加DUMP时间到输出末尾

Put a dump date to the end of the output.

--skip-opt:禁用–opt选项.

Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys.

-S:指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock

--socket=name Socket file to use for connection.

-T:为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。

--tab=name Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.

--tables:覆盖--databases (-B)参数,指定需要导出的表名。

Overrides option --databases (-B).

--triggers:导出触发器。该选项默认启用,用--skip-triggers禁用它。

Dump triggers for each dumped table

--tz-utc: 在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。

SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones.

-u:指定连接的用户名。

--user=name User for login if not current user.

-v:输出多种平台信息。

--verbose Print info about the various stages.

-V:输出mysqldump版本信息并退出

 --version Output version information and exit.

-w:只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。

--where=name Dump only selected records; QUOTES mandatory!

-X:导出XML格式.

--xml   Dump a database as well formed XML.

--master-data:

--master-data选项有3个可用值,0、1、2这三个值分别表示不同的含义

此值为0:表示在使用mysqldump进行备份时,不记录对应二进制日志文件位置,将此值显示的设置为0与不使用此选项效果相同

此值为1:表示在使用mysqldump进行备份时,记录二进制日志文件位置,此值为默认值,也就是说,使用--master-data与使用--master-data=1效果相同,如果将此选项的值设置为1,则会在备份文件生成对应的"CHANGE MASTER TO",此语句中标明了备份开始时二进制日志的前缀名及其所处的位置

此值为2:如果此值为2时,则会在备份文件中生成对应的"CHANGE MASTER TO"语句中添加注释(就是不生效呗),所以如果只是单纯的为备份记录二进制日志文件位置,那么将此选项设置为2即可。
这个参数会--lock-all-tables锁表,除非你指定了--single-transaction 这种情况下,锁表只会在dump开始的时候持续一小段时间,照理说在dump的时候,任何动作都会影响到binlog文件dump结束之后,选项会自动关闭锁表功能。简单的说,就是主从复制在做全量备份的时候,这个选项可以自动帮我们锁表和识别binlog临界文件,就不需要我们锁表,再看临界文件编号,再执行CHANGE MASTER填写binglong位置信息到从库master.info文件中了,提高了从库部署效率吧!

常用参数

1)-B 指定多个库,增加建库语句和use语句

2)--compact 去掉注释,适合调色输出,生产不用

3)-A 备份所有库

4)-F 刷新binlog日志

5)--master-data 增加binlog日志文件名及对应的位置点

6)-x --lock-all-tables

7)-l --lock-tables

8)-d 只备份表结构

9)-t 只备份数据

10)--single-transaction 适合innodb事务数据库备份

innodb表在备份时,通常启用选项--single-transaction来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:
REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据

myisam备份命令

mysqldump -uroot -pyjscloud -A -B --master-data=2 -x --events|gzip >/opt/all.sql.gz

innodb备份命令(推荐使用)

mysqldump -uroot -pyjscloud -A -B --master-data=2 -x --events --single-transaction|gzip >/opt/all.sql.gz

MySQL数据库的恢复

利用source命令恢复数据

进入mysql数据库控制台,mysql -uroot -p 登陆后

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source test_db.sql   #这个文件是系统路径,默认是登陆mysql前的系统路径
source /opt/test.sql

m-89
对于那些用gzip命令压缩的数据库文件要先解压再恢复到数据库,解压命令如下

gzip -d [压缩的文件名]

利用mysql命令恢复(标准)

[root@mysql-1 opt]# mysql -uroot -pyjscloud test < /opt/test.sql

sql文件里面有use db这样的字样时,在导入时就有指定数据库名,否则会报错
如果在导出时指定了-B参数,恢复时无需指定库恢复,因为-B参数带了use test还会有create database test;而恢复时指定库就类似于use test;所以备份数据库时指定-B效果更好。

mysql带-e参数实现非交互式对话

1)恢复数据库

m-90
2)查看mysql状态

m-91
类似的常用命令

show status  #查看当前会话的数据库状态信息
show global stauts;  #查看整个数据库运行状态信息,很重要,要分析并要做好监控。
showprocesslist;   #擦好看正在执行的SQL语句,看不全
show full processlist;   #查看正在执行的完整SQL语句,完整显示
set global key_buffer_size = 32777218   #不重启数据库调整数据库参数,直接生效,重启后失效。
show variables;  #查看数据库的参数信息,例如:my.cnf里参数的生效情况。

例:不重启数据库修改数据库的key_buffer参数

m-92
这种状态下不重启就生效

要想重启生效要先在全局里面改,然后再修改配置文件

vi /etc/my.cnf

m-93

mysqlbinlog的使用

mysqlbinlog是用来解析mysql的binlog日志

mysql的binlog日志是什么?

答:数据目录下的如下文件就是mysql的binlog日志

mysql-bin.000001

mysql-bin.000002

mysql-bin.000003

mysql-bin.000004

mysql的binlog日志作用是什么?

答:用来记录mysql内部增删改查等对mysql数据库有更新的内容记录。

提取mysqlbinlog的几种方式

1)使用show binlog events方式可以获取当前以及指定binlog的日志,不适宜提取大量日志。
2)使用mysqlbinlog命令行提取(适宜批量提取日志)。

演示show binlog events方式

m-94

1)只查看第一个binlog文件的内容(show binlog events)
m-95
m-96
2)查看指定binlog文件的内容(show binlog events in 'mysql-bin.000001')

m-97

3)查看当前正在写入的binlog文件(show master status\G)
m-98
4)获取指定位置binlog的内容(show binlog events from)

m-99

演示mysqlbinlog方式提取binlog

1)提取指定的binlog日志

mysqlbinlog /application/mysql/data/mysql-bin.000001
mysqlbinlog /application/mysql/data/mysql-bin.000001|grep insert

m-100

2)提取指定position位置的binlog日志

mysqlbinlog --start-position="6626" --stop-position="6731"  /application/mysql/data/mysql-bin.000001

3)提取指定position位置的binlog日志并输出到压缩文件

# mysqlbinlog --start-position="6626" --stop-position="6731" /application/mysql/data/mysql-bin.000001 |gzip >extra_01.sql.gz 

4)提取指定position位置的binlog日志导入数据库

# mysqlbinlog --start-position="6626" --stop-position="6731" /application/mysql/data/mysql-bin.000001 | mysql -uroot -p 

5)提取指定开始时间的binlog并输出到日志文件

# mysqlbinlog --start-datetime="2018-05-15 20:15:23" /application/mysql/data/mysql-bin.000001 --result-file=extra02.sql 

6)提取指定位置的多个binlog日志文件

# mysqlbinlog --start-position="6626" --stop-position="6731" /o/application/mysql/data/mysql-bin.000001/application/mysql/data/mysql-bin.000002|more 

7)提取指定数据库binlog并转换字符集到UTF8

# mysqlbinlog --database=test --set-charset=utf8 /application/mysql/data/mysql-bin.000001 /application/mysql/data/mysql-bin.000002 >test.sql 

8)远程提取日志,指定结束时间

# mysqlbinlog -urobin -p -h192.168.0.40 -P3306 --stop-datetime="2018-05-15 20:30:23" --read-from-remote-server mysql-bin.000001|more 

9)远程提取使用row格式的binlog日志并输出到本地文件

# mysqlbinlog -urobin -p -P3606 -h192.168.0.41 --read-from-remote-server -vv inst3606bin.000005 >row.sql

获取mysqlbinlog的帮助信息(仅列出常用选项)

-?:--help

显示帮助消息并退出。

-d:--database=name

截取指定库的binlog。

-f: --force-read

使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。

-h: --host=name

获取给定主机上的MySQL服务器的二进制日志。

-l:--local-load=name

为指定目录中的LOAD DATA INFILE预处理本地临时文件。

-o:--offset=#

跳过前N个条目。

-p:--password[=name]

当连接服务器时使用的密码。如果使用短选项形式(-p),选项和密码之间不能有空格。
如果在命令行中–password或-p选项后面没有密码值,则提示输入一个密码。

-P:--port=#

用于连接远程服务器的TCP/IP端口号。

--protocol=name

使用的连接协议。

-R:--read-from-remote-server|--read-from-remote-master=name

从MySQL服务器读二进制日志。如果未给出该选项,任何连接参数选项将被忽略,即连接到本地。
这些选项是–host、–password、–port、–protocol、–socket和–user。

-r:--result-file=name

将输出指向给定的文件。

-s: --short-form

只显示日志中包含的语句,不显示其它信息,该方式可以缩小生成sql文件的尺寸。

-S: --socket=name

用于连接的套接字文件。

--start-datetime=name

从二进制日志中读取等于或晚于datetime参量的事件,datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:2004-12-25 11:25:56 ,建议使用引号标识。

--stop-datetime=name

从二进制日志中读取小于或等于datetime的所有日志事件。关于datetime值的描述参见--start-datetime选项。

-j: --start-position=#

从二进制日志中第1个位置等于N参量时的事件开始读。

--stop-position=#

从二进制日志中第1个位置等于和大于N参量时的事件起停止读。

--server-id=#

仅仅提取指定server_id的binlog日志

--set-charset=name

添加SET NAMES character_set到输出

-t: --to-last-log

在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求–read-from-remote-server。

-D: --disable-log-bin

禁用二进制日志。如果使用–to-last-logs选项将输出发送给同一台MySQL服务器,可以避免无限循环。该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有SUPER权限。

-u:--user=name

连接远程服务器时使用的MySQL用户名。

-v: --verbose

用于输出基于row模式的binlog日志,-vv为列数据类型添加注释

-V: --version

显示版本信息并退出

常用mysqladmin命令

与mysql不同的是,mysqladmin是MySQL官方提供的shell命令行工具(mysql是连接工具),其参数都需要在shell命令行上执行。mysqladmin提供了两类参数:连接参数和命令参数,连接参数用来指定连接信息,命令参数则是服务命令。

mysqladmin 工具的使用格式:

mysqladmin [option] command [command option] command ......

参数选项:

-c number 自动运行次数统计,必须和 -i 一起使用

-i number 间隔多长时间重复执行

0)每个两秒查看一次服务器的状态,总共重复5次。

[root@mysql-1 ~]# mysqladmin -uroot -p -i 2 -c 5 status

1)查看服务器的状况:status

[root@mysql-1 ~]# mysqladmin -uroot -p status

2)修改root 密码:

[root@mysql-1 ~]# mysqladmin -u root -p原密码 password 'newpassword'

3)检查mysqlserver是否可用:

[root@mysql-1 ~]# mysqladmin -uroot -p ping

4)查询服务器的版本

[rroot@mysql-1 ~]# mysqladmin -uroot -p version

5)查看服务器状态的当前值:

[root@mysql-1 ~]# mysqladmin -uroot -p extended-status

6)查询服务器系统变量值:

[root@mysql-1 ~]# mysqladmin -uroot -p variables

7)显示服务器所有运行的进程:

[root@mysql-1 ~]# mysqladmin -uroot -p processlist
[root@mysql-1 ~]# mysqladmin -uroot -p-i 1 processlist        //每秒刷新一次

8)创建数据库

[root@mysql-1 ~]# mysqladmin -uroot -p create daba-test

9)显示服务器上的所有数据库

[root@mysql-1 ~]# mysqlshow -uroot -p

10)显示数据库daba-test下有些什么表:

[root@mysql-1 ~]# mysqlshow -uroot -p daba-test

11)统计daba-test 下数据库表列的汇总

[root@mysql-1 ~]# mysqlshow -uroot -p daba-test -v

12)统计daba-test 下数据库表的列数和行数

[root@mysql-1 ~]# mysqlshow -uroot -p daba-test -v -v

13)删除数据库 daba-test

[root@mysql-1 ~]# mysqladmin -uroot -p drop daba-test

14)重载权限信息

[root@mysql-1 ~]# mysqladmin -uroot -p reload

15)刷新所有表缓存,并关闭和打开log

[root@mysql-1 ~]# mysqladmin -uroot -p refresh

16)使用安全模式关闭数据库

[root@mysql-1 ~]# mysqladmin -uroot -p shutdown

17)刷新命令mysqladmin flush commands

[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-hosts
[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-logs
[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-privileges
[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-status
[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-tables
[root@mysql-1 ~]# mysqladmin -u root -ptmppassword flush-threads

18)mysqladmin 执行kill 进程:

[root@mysql-1 ~]# mysqladmin -uroot -p processlist
[root@mysql-1 ~]# mysqladmin -uroot -p kill idnum

19)停止和启动MySQL replication on a slave server

[root@mysql-1 ~]# mysqladmin -u root -p stop-slave
[root@mysql-1 ~]# mysqladmin -u root -p start-slave

20)同时执行多个命令

[root@mysql-1 ~]# mysqladmin -u root -p process status version
|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/70
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
MySQL系列(四):MySQL增量备份及数据恢复
MySQL数据库的备份 备份单个数据库练习多种参数使用 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法: mysqldump -u 用户名……
<<上一篇
下一篇>>
文章目录
关闭
目 录