mysqlbinlog参数介绍

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysqlbinlog参数介绍

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

Dumps a MySQL binary log in a format usable for viewing or for piping to
the mysql command line client.
Usage: mysqlbinlog [options] log-files
-?, –help          Display this help and exit.
–base64-output[=name]
Determine when the output statements should be
base64-encoded BINLOG statements: ‘never’ disables it and
works only for binlogs without row-based events;
‘decode-rows’ decodes row events into commented SQL
statements if the –verbose option is also given; ‘auto’
prints base64 only when necessary (i.e., for row-based
events and format description events); ‘always’ prints
base64 whenever possible. ‘always’ is deprecated, will be
removed in a future version, and should not be used in a
production system.  –base64-output with no ‘name’
argument is equivalent to –base64-output=always and is
also deprecated.  If no –base64-output[=name] option is
given at all, the default is ‘auto’.
–character-sets-dir=name
Directory for character set files.
-d, –database=name List entries for just this database (local log only).
–debug-check       Check memory and open file usage at exit .
–debug-info        Print some debug info at exit.
–default-auth=name Default authentication client-side plugin to use.
-D, –disable-log-bin
Disable binary log. This is useful, if you enabled
–to-last-log and are sending the output to the same
MySQL server. This way you could avoid an endless loop.
You would also like to use it when restoring after a
crash to avoid duplication of the statements you already
have. NOTE: you will need a SUPER privilege to use this
option.
-F, –force-if-open Force if binlog was not closed properly.
(Defaults to on; use –skip-force-if-open to disable.)
-f, –force-read    Force reading unknown binlog events.
-H, –hexdump       Augment output with hexadecimal and ASCII event dump.
-h, –host=name     Get the binlog from server.
-l, –local-load=name
Prepare local temporary files for LOAD DATA INFILE in the
specified directory.
-o, –offset=#      Skip the first N entries.
-p, –password[=name]
Password to connect to remote server.
–plugin-dir=name   Directory for client-side plugins.
-P, –port=#        Port number to use for connection or 0 for default to, in
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/services, built-in default (3306).
–protocol=name     The protocol to use for connection (tcp, socket, pipe,
memory).
-R, –read-from-remote-server
Read binary logs from a MySQL server.
-r, –result-file=name
Direct output to a given file.
–server-id=#       Extract only binlog entries created by the server having
the given id.
–set-charset=name  Add ‘SET NAMES character_set’ to the output.
-s, –short-form    Just show regular queries: no extra info and no row-based
events. This is for testing only, and should not be used
in production systems. If you want to suppress
base64-output, consider using –base64-output=never
instead.
-S, –socket=name   The socket file to use for connection.
–start-datetime=name
Start reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).
-j, –start-position=#
Start reading the binlog at position N. Applies to the
first binlog passed on the command line.
–stop-datetime=name
Stop reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).
–stop-position=#   Stop reading the binlog at position N. Applies to the
last binlog passed on the command line.
-t, –to-last-log   Requires -R. Will not stop at the end of the requested
binlog but rather continue printing until the end of the
last binlog of the MySQL server. If you send the output
to the same MySQL server, that may lead to an endless
loop.
-u, –user=name     Connect to the remote server as username.
-v, –verbose       Reconstruct SQL statements out of row events. -v -v adds
comments on column data types.
-V, –version       Print version and exit.
–open-files-limit=#
Used to reserve file descriptors for use by this program.
Variables (–variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
——————————— —————————————-
base64-output                     (No default value)
character-sets-dir                (No default value)
database                          (No default value)
debug-check                       FALSE
debug-info                        FALSE
default-auth                      (No default value)
disable-log-bin                   FALSE
force-if-open                     TRUE
force-read                        FALSE
hexdump                           FALSE
host                              (No default value)
local-load                        (No default value)
offset                            0
plugin-dir                        (No default value)
port                              3306
read-from-remote-server           FALSE
server-id                         0
set-charset                       (No default value)
short-form                        FALSE
socket                            /var/run/mysqld/mysqld.sock
start-datetime                    (No default value)
start-position                    4
stop-datetime                     (No default value)
stop-position                     18446744073709551615
to-last-log                       FALSE
user                              (No default value)
open-files-limit                  64

mysqldump参数介绍

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysqldump参数介绍

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
OR     mysqldump [OPTIONS] –all-databases [OPTIONS]
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
The following groups are read: mysqldump client
The following options may be given as the first argument:
–print-defaults        Print the program argument list and exit.
–no-defaults           Don’t read default options from any option file.
–defaults-file=#       Only read default options from the given file #.
–defaults-extra-file=# Read this file after the global files are read.
-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 Add a DROP DATABASE before each create.
–add-drop-table    Add a DROP TABLE before each create.
(Defaults to on; use –skip-add-drop-table to disable.)
–add-locks         Add locks around INSERT statements.
(Defaults to on; use –skip-add-locks to disable.)
–allow-keywords    Allow creation of column names that are keywords.
–apply-slave-statements
Adds ‘STOP SLAVE’ prior to ‘CHANGE MASTER’ and ‘START
SLAVE’ to bottom of dump.
–character-sets-dir=name
Directory for character set files.
-i, –comments      Write additional information.
(Defaults to on; use –skip-comments to disable.)
–compatible=name   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           Give less verbose output (useful for debugging). Disables
structure comments and header/footer constructs.  Enables
options –skip-add-drop-table –skip-add-locks
–skip-comments –skip-disable-keys –skip-set-charset.
-c, –complete-insert
Use complete insert statements.
-C, –compress      Use compression in server/client protocol.
-a, –create-options
Include all MySQL specific create options.
(Defaults to on; use –skip-create-options to disable.)
-B, –databases     Dump several databases. Note the difference in usage; in
this case no tables are given. All name arguments are
regarded as database names. ‘USE db_name;’ will be
included in the output.
-#, –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 rows with INSERT DELAYED.
–delete-master-logs
Delete logs on master after backup. This automatically
enables –master-data.
-K, –disable-keys  ‘/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
‘/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
in the output.
(Defaults to on; use –skip-disable-keys to disable.)
–dump-slave[=#]    This causes the binary log position and filename of the
master to be appended to the dumped data output. Setting
the value to 1, will printit as a CHANGE MASTER command
in the dumped data output; if equal to 2, that command
will be prefixed with a comment symbol. This option will
turn –lock-all-tables on, unless –single-transaction is
specified too (in which case a global read lock is only
taken a short time at the beginning of the dump – don’t
forget to read about –single-transaction below). In all
cases any action on logs will happen at the exact moment
of the dump.Option automatically turns –lock-tables off.
-E, –events        Dump events.
-e, –extended-insert
Use multiple-row INSERT syntax that include several
VALUES lists.
(Defaults to on; use –skip-extended-insert to disable.)
–fields-terminated-by=name
Fields in the output file are terminated by the given
string.
–fields-enclosed-by=name
Fields in the output file are enclosed by the given
character.
–fields-optionally-enclosed-by=name
Fields in the output file are optionally enclosed by the
given character.
–fields-escaped-by=name
Fields in the output file are escaped by the given
character.
-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  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, –force         Continue even if we get an SQL error.
-?, –help          Display this help message and exit.
–hex-blob          Dump binary strings (BINARY, VARBINARY, BLOB) in
hexadecimal format.
-h, –host=name     Connect to host.
–ignore-table=name 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.
–include-master-host-port
Adds ‘MASTER_HOST=<host>, MASTER_PORT=<port>’ to ‘CHANGE
MASTER TO..’ in dump produced with –dump-slave.
–insert-ignore     Insert rows with INSERT IGNORE.
–lines-terminated-by=name
Lines in the output file are terminated by the given
string.
-x, –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, –lock-tables   Lock all tables for read.
(Defaults to on; use –skip-lock-tables to disable.)
–log-error=name    Append warnings and errors to given file.
–master-data[=#]   This causes the binary log position and filename to be
appended to the output. If equal to 1, will print it as a
CHANGE MASTER command; if equal to 2, that command will
be prefixed with a comment symbol. This option will turn
–lock-all-tables on, unless –single-transaction is
specified too (in which case a global read lock is only
taken a short time at the beginning of the dump; don’t
forget to read about –single-transaction below). In all
cases, any action on logs will happen at the exact moment
of the dump. Option automatically turns –lock-tables
off.
–max-allowed-packet=#
The maximum packet length to send to or receive from
server.
–net-buffer-length=#
The buffer size for TCP/IP and socket communication.
–no-autocommit     Wrap tables with autocommit/commit statements.
-n, –no-create-db  Suppress the CREATE DATABASE … IF EXISTS statement that
normally is output for each dumped database if
–all-databases or –databases is given.
-t, –no-create-info
Don’t write table creation info.
-d, –no-data       No row information.
-N, –no-set-names  Same as –skip-set-charset.
–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  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.
-P, –port=#        Port number to use for connection.
–protocol=name     The protocol to use for connection (tcp, socket, pipe,
memory).
-q, –quick         Don’t buffer query, dump directly to stdout.
(Defaults to on; use –skip-quick to disable.)
-Q, –quote-names   Quote table and column names with backticks (`).
(Defaults to on; use –skip-quote-names to disable.)
–replace           Use REPLACE INTO instead of INSERT INTO.
-r, –result-file=name
Direct output to a given file. This option should be used
in systems (e.g., DOS, Windows) that use carriage-return
linefeed pairs (\r\n) to separate text lines. This option
ensures that only a single newline is used.
-R, –routines      Dump stored routines (functions and procedures).
–set-charset       Add ‘SET NAMES default_character_set’ to the output.
(Defaults to on; use –skip-set-charset to disable.)
–single-transaction
Creates a consistent snapshot by dumping all tables in a
single transaction. Works ONLY for tables stored in
storage engines which support multiversioning (currently
only InnoDB does); the dump is NOT guaranteed to be
consistent for other storage engines. While a
–single-transaction dump is in process, to ensure a
valid dump file (correct table contents and binary log
position), no other connection should use the following
statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
TRUNCATE TABLE, as consistent snapshot is not isolated
from them. Option automatically turns off –lock-tables.
–dump-date         Put a dump date to the end of the output.
(Defaults to on; use –skip-dump-date to disable.)
–skip-opt          Disable –opt. Disables –add-drop-table, –add-locks,
–create-options, –quick, –extended-insert,
–lock-tables, –set-charset, and –disable-keys.
-S, –socket=name   The socket file to use for connection.
–ssl               Enable SSL for connection (automatically enabled with
other flags).
–ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
–ssl).
–ssl-capath=name   CA directory (check OpenSSL docs, implies –ssl).
–ssl-cert=name     X509 cert in PEM format (implies –ssl).
–ssl-cipher=name   SSL cipher to use (implies –ssl).
–ssl-key=name      X509 key in PEM format (implies –ssl).
–ssl-verify-server-cert
Verify server’s “Common Name” in its cert against
hostname used when connecting. This option is disabled by
default.
-T, –tab=name      Create tab-separated textfile for each table to given
path. (Create .sql and .txt files.) NOTE: This only works
if mysqldump is run on the same machine as the mysqld
server.
–tables            Overrides option –databases (-B).
–triggers          Dump triggers for each dumped table.
(Defaults to on; use –skip-triggers to disable.)
–tz-utc            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.
(Defaults to on; use –skip-tz-utc to disable.)
-u, –user=name     User for login if not current user.
-v, –verbose       Print info about the various stages.
-V, –version       Output version information and exit.
-w, –where=name    Dump only selected records. Quotes are mandatory.
-X, –xml           Dump a database as well formed XML.
–plugin-dir=name   Directory for client-side plugins.
–default-auth=name Default authentication client-side plugin to use.
Variables (–variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
——————————— —————————————-
all-databases                     FALSE
all-tablespaces                   FALSE
no-tablespaces                    FALSE
add-drop-database                 FALSE
add-drop-table                    TRUE
add-locks                         TRUE
allow-keywords                    FALSE
apply-slave-statements            FALSE
character-sets-dir                (No default value)
comments                          TRUE
compatible                        (No default value)
compact                           FALSE
complete-insert                   FALSE
compress                          FALSE
create-options                    TRUE
databases                         FALSE
debug-check                       FALSE
debug-info                        FALSE
default-character-set             utf8
delayed-insert                    FALSE
delete-master-logs                FALSE
disable-keys                      TRUE
dump-slave                        0
events                            FALSE
extended-insert                   TRUE
fields-terminated-by              (No default value)
fields-enclosed-by                (No default value)
fields-optionally-enclosed-by     (No default value)
fields-escaped-by                 (No default value)
flush-logs                        FALSE
flush-privileges                  FALSE
force                             FALSE
hex-blob                          FALSE
host                              (No default value)
include-master-host-port          FALSE
insert-ignore                     FALSE
lines-terminated-by               (No default value)
lock-all-tables                   FALSE
lock-tables                       TRUE
log-error                         (No default value)
master-data                       0
max-allowed-packet                16777216
net-buffer-length                 1046528
no-autocommit                     FALSE
no-create-db                      FALSE
no-create-info                    FALSE
no-data                           FALSE
order-by-primary                  FALSE
port                              3306
quick                             TRUE
quote-names                       TRUE
replace                           FALSE
routines                          FALSE
set-charset                       TRUE
single-transaction                FALSE
dump-date                         TRUE
socket                            /var/run/mysqld/mysqld.sock
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
tab                               (No default value)
triggers                          TRUE
tz-utc                            TRUE
user                              (No default value)
verbose                           FALSE
where                             (No default value)
plugin-dir                        (No default value)
default-auth                      (No default value)

mysql 重设root密码

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysql 重设root密码

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

一、linux系统
1、修改my.cnf中的参数
关闭数据库
修改my.cnf参数
在[mysqld]的段中加上一句:skip-grant-tables
启动数据库,使用mysqld/mysqld_safe/mysqld.service都可以
使用mysql直接登录修改root密码
2、mysqld_safe –skip-grant-tables 启动数据库
关闭数据库
mysqld_safe –skip-grant-tables & 启动数据库
使用mysql直接登录修改root密码
二、windows系统
关闭mysql
$mysqldir/bin/mysqld –skip-grant-tables启动数据库
使用mysql直接登录修改root密码
说明:修改密码请查看MYSQL修改密码

Mysql Merge表

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:Mysql Merge表

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

MERGE引擎类型允许你把许多结构相同的表合并为一个表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必须有同样的表定义。
MERGE存储引擎在下面这种使用场合会最为有用,如果需要把日志纪录不停的录入MySQL数据库,并且每天、每周或者每个月都创建一个单一的表,而且要制作来自多个表的合计查询,MERGE表这时会非常有效。然而,这项功能有局限性。你只能合并MyISAM表而且必须严格遵守相同的表定义的限制。
创建方法如下:
mysql> create table t1(id int not null primary key,name varchar(20)) engine=myisam;
Query OK, 0 rows affected (0.03 sec)
mysql> create table t2(id int not null primary key,name varchar(20)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> create table mrg(id int not null primary key,name varchar(20)) engine=merge union(t1,t2) insert_method=first;
Query OK, 0 rows affected (0.00 sec)
测试:
1、在t1中插入数据
mysql> insert into t1 values(1,’tttttt’);
Query OK, 1 row affected (0.03 sec)
mysql> insert into t1 values(2,’tttttt’);
Query OK, 1 row affected (0.00 sec)
2、查询t1表
mysql> select * from t1;
+—-+——–+
| id | name |
+—-+——–+
| 1 | tttttt |
| 2 | tttttt |
+—-+——–+
2 rows in set (0.00 sec)
3、查询mrg表
mysql> select * from mrg;
+—-+——–+
| id | name |
+—-+——–+
| 1 | tttttt |
| 2 | tttttt |
+—-+——–+
2 rows in set (0.00 sec)
4、在t2中插入数据
mysql> insert into t2 values(1,’ssssss’);
Query OK, 1 row affected (0.00 sec)
5、查询t2表
mysql> select * from t2;
+—-+——–+
| id | name |
+—-+——–+
| 1 | ssssss |
+—-+——–+
1 row in set (0.00 sec)
6、查询mrg表
mysql> select * from mrg;
+—-+——–+
| id | name |
+—-+——–+
| 1 | tttttt |
| 2 | tttttt |
| 1 | ssssss |
+—-+——–+
3 rows in set (0.00 sec)
7、mrg表中插入数据并测试
mysql> insert into mrg values(1,’ssssss’);
ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’
mysql> insert into mrg values(2,’ssssss’);
ERROR 1062 (23000): Duplicate entry ‘2’ for key ‘PRIMARY’
mysql> insert into mrg values(3,’ssssss’);
Query OK, 1 row affected (0.00 sec)
mysql> insert into t2 values(4,’ssssss’);
Query OK, 1 row affected (0.00 sec)
mysql> insert into mrg values(4,’ssssss’);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+—-+——–+
| id | name |
+—-+——–+
| 1 | tttttt |
| 2 | tttttt |
| 3 | ssssss |
| 4 | ssssss |
说明:因为我们设置的 INSERT_METHOD为FIRST,因此插入数据进入t1表,而t1表中有主键,所以部分数据插入失败
1. 此表类似于SQL中的union机制。
2. 此表结构必须与基本表完全一致,包括列名、顺序。UNION表必须同属一个DATABASE。
3. 基本表类型必须是MyISAM。
4. 可以通过修改.mrg文件来修改MERGE表,每个基本表的名字占一行。注意:修改后要通过FLUSH TABLES刷新表缓存。
5. 对基本表的更改可以直接反映在此表上。
6. INSERT_METHOD的取值可以是: 0 不允许插入 FIRST 插入到UNION中的第一个表 LAST 插入到UNION中的最后一个表。(4.0之后可用)
7. 定义在它上面的约束没有任何作用,约束是由基本表控制的,例如两个基本表中存在着同样的一个Key值,那么在MERGE表中会有两个一样的Key值。

mysql通过substring_index和substring截取字符串

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysql通过substring_index和substring截取字符串

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

今天朋友问我mysql中有个列如下数值,怎么提出出其中ip地址
BGP-BeiJing-59.151.105.130-AD_read-YeZongKun
BGP-BeiJing-59.151.105.138_140_141-AD_LVS-YeZongKun
我提供sql语句如下:
select SUBSTRING(substring_index(‘BGP-BeiJing-59.151.105.130-AD_read-YeZongKun’,’-‘,3),(length(substring_index(‘BGP-BeiJing-59.151.105.130-AD_read-YeZongKun’,’-‘,2))+2));
SUBSTRING
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)
SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
mysql> SELECT SUBSTRING(‘Quadratically’,5);
-> ‘ratically’
mysql> SELECT SUBSTRING(‘foobarbar’ FROM 4);
-> ‘barbar’
mysql> SELECT SUBSTRING(‘Quadratically’,5,6);
-> ‘ratica’
mysql> SELECT SUBSTRING(‘Sakila’, -3);
-> ‘ila’
mysql> SELECT SUBSTRING(‘Sakila’, -5, 3);
-> ‘aki’
mysql> SELECT SUBSTRING(‘Sakila’ FROM -4 FOR 2);
-> ‘ki’
substring_index
substring_index(str,delim,count)
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2);
-> ‘www.mysql’
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2);
-> ‘mysql.com’

mysql关于log_bin相关命令

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysql关于log_bin相关命令

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

mysql> show BINARY logs;
+—————–+———–+
| Log_name | File_size |
+—————–+———–+
| mysqlbin.000001 | 107 |
+—————–+———–+
1 row in set (0.00 sec)
–查看当前bin_log情况
mysql> show master logs;
+—————–+———–+
| Log_name | File_size |
+—————–+———–+
| mysqlbin.000001 | 107 |
+—————–+———–+
1 row in set (0.00 sec)
–查看当前bin_log情况
mysql> show variables like ‘%log_bin%’;
+———————————+——-+
| Variable_name | Value |
+———————————+——-+
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| sql_log_bin | ON |
+———————————+——-+
3 rows in set (0.00 sec)
–查看log_bin相关配置
mysql> flush logs;
Query OK, 0 rows affected (0.06 sec)
–切换bin_log日志
mysql> PURGE BINARY LOGS TO ‘mysqlbin.000002’;
Query OK, 0 rows affected (0.03 sec)
–删除mysqlbin.000002之前的bin_log,并修改index中相关数据
mysql> PURGE BINARY LOGS BEFORE ‘2011-07-09 12:40:26’;
Query OK, 0 rows affected (0.04 sec)
–删除2011-07-09 12:40:26之前的bin_log,并修改index中相关数据
mysql> PURGE BINARY LOGS BEFORE ‘2011-07-09’;
Query OK, 0 rows affected (0.00 sec)
–删除2011-07-09之前的bin_log,并修改index中相关数据
mysql> set global expire_logs_days=5;
Query OK, 0 rows affected (0.00 sec)
–设置bin_log过期日期
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
–重设bin_log日志,以前的所有日志将被删除并且重设index中的数据

基于innobackupex的mysql备份脚本

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:基于innobackupex的mysql备份脚本

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

#! /bin/bash
#数据库相关信息
dbuser=root
dbpasswd=password
mycnf=/etc/mysql/my.cnf
#如果bin-log没有指定路径
dir_bin=/opt/mysql/mysqldata/mysqllog
#数据库备份的路径
install_dir=/opt/MySqlBackUp
data_dir=$install_dir/data
temp_dir=$install_dir/temp
log_dir=$install_dir/logs
bin_dir=$install_dir/bin
#接受邮箱
mail=chengfei@srt.com.cn
#备份文件名、日志名、备份日志
sj=`date +\%Y``date +\%m``date +\%d``date +\%H``date +\%M``date +\%S`
datafile=$sj"_data.tar.gz"
log=$sj".log"
binlogfile=$sj"_bin.tar.gz"
#使用mysqldump备份
#是否启动dump功能(0表示不启用,1表示启用)
dump_flag=1
#需要dump出来的数据库名
dumpdb=srtair
#dump文件名
dumpfile=$sj"_"$dumpdb".sql.gz"
#是否备份至远程
#是否启用ftp传输功能
ftp_flag=0
#ftp IP地址
ftp_ip=
#ftp 用户名
ftp_user=
#ftp 密码
ftp_passwd=
#上传ftp 路径
ftp_dir=
#读取my.cnf文件
process_readconfig()
{
echo "-----------开始读my.cnf文件--`date`-------------"
#没有具体路径情况或者有具体路径
bin_log=`cat $mycnf | grep -i '^log-bin' | awk -F = '{print $2}'|sed s/\ //g`
#数据文件路径
datadir=`cat $mycnf | grep -i '^datadir' | awk -F = '{print $2}'|sed s/\ //g`
#需要判断是否有/,然后决定是否是全路径
#basedir路径
basedir=`cat $mycnf | grep -i '^basedir' | awk -F = '{print $2}'|sed s/\ //g`
}
#日志处理
process_binlog()
{
echo "……………………………开始备份日志文件--`date`………………………………">>"$log_dir/$log"
echo "……………………………开始备份日志文件--`date`………………………………"
echo "需要备份二进制日志列表……">>"$log_dir/$log"
ls -tl "$bin_log."[0-9]* >>"$log_dir/$log"
echo "开始备份二进制日志文件……"`date`>>"$log_dir/$log"
tar czvfP "$data_dir/$binlogfile" "$bin_log".[0-9]*
echo "结束备份二进制日志文件……"`date`>>"$log_dir/$log"
#删除一天以前的日志文件
echo "删除过期二进制日志文件……"`date`>>"$log_dir/$log"
echo "删除过期二进制日志列表……">>"$log_dir/$log"
find $dir_bin -type f -mtime +1>>"$log_dir/$log"
find $dir_bin -type f -mtime +1 -exec rm -f {} \;
echo "删除过期二进制日志文件结束……"`date`>>"$log_dir/$log"
echo "…………………………备份日志文件结束--`date`……………………………………">>"$log_dir/$log"
echo "…………………………备份日志文件结束--`date`……………………………………"
}
#数据备份
process_backup()
{
process_readconfig
#备份数据库
echo "……………………………开始备份数据文件--`date`………………………………"
echo "……………………………开始备份数据文件--`date`………………………………">>"$log_dir/$log"
source /root/.bash_profile
$bin_dir/innobackupex --user="$dbuser" --password="$dbpasswd" --defaults-file="$mycnf" --stream=tar "$temp_dir" 2>"$temp_dir/$sj"_tmp.log | gzip>"$data_dir/$datafile"
echo "……………………………备份数据文件结束--`date`………………………………">>"$log_dir/$log"
echo "……………………………备份数据文件结束--`date`………………………………"
cat "$temp_dir/$sj"_tmp.log>>"$log_dir/$log"
#删除7天以前备份数据和信息
echo "清理7天前备份数据与相关信息……"`date`>>"$log_dir/$log"
find $data_dir -type f -mtime +7>>"$log_dir/$log"
find $data_dir -type f -mtime +7 -exec rm -f {} \;
#mysqldump操作
if [ "$dump_flag" == 1 ]; then
echo "……………… mysqldump操作开始--`date`……………"
echo "……………… mysqldump操作开始--`date`………">>"$log_dir/$log"
 exp_sql
echo "……………… mysqldump操作结束--`date`…………">>"$log_dir/$log"
echo "……………… mysqldump操作结束--`date`……………………………"
fi
#登录mysql,切换日志
$basedir/bin/mysql -u$dbuser -p$dbpasswd<<XFF
flush logs;
exit
XFF
#备份日志文件
process_binlog
#ftp(没有写是否上传失败,成功)
if [ "$ftp_flag" == 1 ]; then
echo "……………… ftp操作开始--`date`……………"
echo "……………… ftp操作开始--`date`…………">>"$log_dir/$log"
 exec_ftp
echo "……………… ftp操作结束--`date`…………">>"$log_dir/$log"
echo "……………… ftp操作结束--`date`……………………………"
fi
#发送邮件
process_send
}
process_send()
{
  #查找错误
  grep "Error" "$temp_dir/$sj"_tmp.log > "$temp_dir/$sj".err
  IP=`/sbin/ifconfig ${eth} | grep 'inet addr:'| awk '{print $2}' | awk -F : '{print $2}'`
  IP=`echo $IP|awk '{print $1}'`
  echo `grep "innobackupex: completed OK\!" "$temp_dir/$sj"_tmp.log | awk -F : '{print $4}'|sed s/\ //g`>"$temp_dir/$sj".good
  GOOD_COUNT=`cat "$temp_dir/$sj".good |wc -l`
  ERROR_COUNT=`cat  "$temp_dir/$sj".err |wc -l`
  if [ "$ERROR_COUNT" == 0 -a "$GOOD_COUNT" == 1 ]; then
     echo "`date`-----MySql备份成功-----">>"$log_dir"/result.log
     echo "-----------------------------------">>"$log_dir"/result.log
     echo "……………………………开始发送邮件--`date`………………………………"
     echo "……………………………开始发送邮件--`date`………………………………">>"$log_dir/$log"
     echo "MySql_Backup_Succeed" | mutt -s "$IP"_MySql_Backup_Succeed -a "$log_dir/$log" ${mail}
  else
     echo "`date`-----MySql备份失败,请检查$temp_dir"/"$sj"_tmp.log>>"$log_dir"/result.log
     echo "-----------------------------------">>"$log_dir"/result.log
     echo "……………………………开始发送邮件--`date`………………………………"
     echo "……………………………开始发送邮件--`date`……………………………">>"$log_dir/$log"
     cat "$temp_dir/$sj".err  | mutt -s "$IP"_MySql_Backup_Fail -a "$temp_dir/$sj"_tmp.log ${mail}
  fi
   #删除7天前的日志文件
   find $temp_dir -type f -mtime +7 -exec rm -f {} \;
   echo "……………………………发送邮件结束--`date`………………………………">>"$log_dir/$log"
   echo "……………………………发送邮件结束--`date`………………………………"
}
#导出sql语句
exp_sql()
{
  mysqldump -u "$dbuser" -p"$dbpasswd"   --single-transaction --allow-keywords --add-locks   --add-drop-table  -F -q "$dumpdb" |gzip 1>"$data_dir/$dumpfile"
}
#ftp操作
exec_ftp()
{
  echo "#!/bin/bash">"$temp_dir/$sj"_ftp.sh
  echo "ftp -n $ftp_ip <<XFF">>"$temp_dir/$sj"_ftp.sh
  echo "user $ftp_user $ftp_passwd">>"$temp_dir/$sj"_ftp.sh
  echo "bin">>"$temp_dir/$sj"_ftp.sh
  echo "cd $ftp_dir">>"$temp_dir/$sj"_ftp.sh
  echo "lcd $data_dir">>"$temp_dir/$sj"_ftp.sh
  echo "put $datafile">>"$temp_dir/$sj"_ftp.sh
  echo "put $dumpfile">>"$temp_dir/$sj"_ftp.sh
  echo "put $binlogfile">>"$temp_dir/$sj"_ftp.sh
  echo "lcd $log_dir">>"$temp_dir/$sj"_ftp.sh
  echo "put $log">>"$temp_dir/$sj"_ftp.sh
  echo "close">>"$temp_dir/$sj"_ftp.sh
  echo "bye" >>"$temp_dir/$sj"_ftp.sh
  echo "XFF">>"$temp_dir/$sj"_ftp.sh
  chmod 777 "$temp_dir/$sj"_ftp.sh
  sh  "$temp_dir/$sj"_ftp.sh
}
#执行备份
process_backup

mysql_backup.sh程序安装说明
1、安装mysqlbackup程序
上传mysqlbackup到服务器/tmp目录
cd /tmp
unzip mysqlbackup.zip
cp /tmp/mysqlbackup/* /opt/mysql/product/5.1/bin
mkdir -p /opt/MySqlBackUp/bin
mkdir -p /opt/MySqlBackUp/data
mkdir -p /opt/MySqlBackUp/logs
mkdir -p /opt/MySqlBackUp/temp
ln -s /opt/mysql/product/5.1/bin/innobackupex /opt/MySqlBackUp/bin/innobackupex
对innobackupex进行授权
cd /opt/mysql/product/5.1/bin/
chmod +x innobackupex*
chmod +x xtrabackup*
chmod +x tar4ibd
cp /tmp/mysqlbackup/mysql_backup.sh /opt/MySqlBackUp/bin/
chmod 775 /opt/MySqlBackUp/bin/mysql_backup.sh
2、修改mysql_backup.sh中的相关数据
dbuser
dbpasswd
mail
dumpdb
3、配置mysql环境变量到root中
export MYSQL_BASE=/opt/mysql
export BASEDIR=$MYSQL_BASE/product/5.1
export DATADIR=$MYSQL_BASE/mysqldata
export LD_LIBRARY_PATH=$BASEDIR/lib:/lib:/usr/lib:/usr/local/lib
export TMPDIR=/tmp
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$BASEDIR/bin:$MYSQL_BASE:$BASEDIR:$LD_LIBRARY_PATH
添加到/root/.bash_profile文件中
4、测试备份
cd /opt/MySqlBackUp/bin
./mysql_backup.sh
5、查看备份是否成功
cat /opt/MySqlBackUp/logs/result.log
如果提示备份成功,则表示程序安装成功,可能不熟到crontab中
6、部署crontab
0 1 * * * (cd /opt/MySqlBackUp/bin;sh ./mysql_backup.sh)
说明:参数配置,均是基于按照mysql安装路径配置

MYSQL修改密码

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:MYSQL修改密码

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

方法一
(适用于管理员或者有全局权限的用户重设其它用户的密码)
进入命令行模式
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=’name’;
mysql> FLUSH PRIVILEGES;
mysql> QUIT
方法二
(应用同上,只是方法不同)
mysql -u root mysql
mysql> SET PASSWORD FOR name=PASSWORD(‘new password’);
mysql> QUIT
方法三
mysqladmin -u root “old password” “new password”

MySql分区表管理

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:MySql分区表管理

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、RANGE和LIST分区的管理
1.1)删除分区
ALTER TABLE table_name DROP PARTITION partition_name;
1.2)添加分区
ALTER TABLE table_name ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
Note:
1)分区的范围或者值不能重复;
2)在范围分区中,不能添加比当前范围最大值小的分区
1.3)重新定义分区
ALTER TABLE tbl_name REORGANIZE PARTITION partition_list INTO (partition_definitions);
其中,tbl_name 是分区表的名称,partition_list 是通过逗号分开的、一个或多个将要被改变的现有分区的列表。partition_definitions 是一个是通过逗号分开的、新分区定义的列表,它遵循与用在“CREATE TABLE”中的partition_definitions 相同的规则。应当注意到,在把多少个分区合并到一个分区或把一个分区拆分成多少个分区方面,没有限制。例如,可以重新组织成员表的四个分区成两个分区,具体实现如下:
ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO (
PARTITION m0 VALUES LESS THAN (1980),
PARTITION m1 VALUES LESS THAN (2000)
);
2、HASH和KEY分区的管理
2.1)合并HASH或KEY分区
ALTER TABLE … COALESCE PARTITION
Note:对于LINEAR HASH和LINEAR KEY分区同样有效
2.2)添加分区
ALTER TABLE table_name ADD PARTITION PARTITIONS 18;–18比原来值大
3、分区维护
3.1) 重建分区
ALTER TABLE table_name REBUILD PARTITION (p0, p1);
3.2)优化分区
ALTER TABLE table_name OPTIMIZE PARTITION (p0, p1);
3.3)分析分区
ALTER TABLE table_name ANALYZE PARTITION (p0, p1);
3.4)检查分区
ALTER TABLE table_name CHECK PARTITION (p0, p1);

MySql创建分区表

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:MySql创建分区表

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

一、前沿知识
1、分区表类型
RANGE分区、LIST分区、HASH分区、KEY分区、子分区
2、查询是否支持分区表
mysql> SHOW VARIABLES LIKE ‘%partition%’;
+———————–+——-+
| Variable_name | Value |
+———————–+——-+
| have_partition_engine | YES |
+———————–+——-+
1 row in set (0.00 sec)
3、MySQL分区处理NULL值的方式
MySQL中的分区在禁止空值(NULL)上没有进行处理,如果出现NULL,MySQL 把NULL视为0
二、分区表的创建
1、RANGE分区

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT NOT NULL,
    store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

2、 LIST分区

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY LIST(store_id)
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

Note:LIST分区没有类似如“VALUES LESS THAN MAXVALUE”这样的包含其他值在内的定义。将要匹配的任何值都必须在值列表中找到。
3、 HASH分区

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY HASH(YEAR(hired))
PARTITIONS 4;

3.1、LINEAR HASH分区

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY LINEAR HASH(YEAR(hired))
PARTITIONS 4;

Note:线性哈希功能使用的一个线性的2的幂(powers-of-two)运算法则,而常规哈希使用的是求哈希函数值的模数
4、KEY分区

CREATE TABLE tk (
    col1 INT NOT NULL,
    col2 CHAR(5),
    col3 DATE
)
PARTITION BY LINEAR KEY (col1)
PARTITIONS 3;

Note:
1)按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用户定义的表达式,而KEY分区的 哈希函数是由MySQL 服务器提供。MySQL 簇(Cluster)使用函数MD5()来实现KEY分区;对于使用其他存储引擎的表,服务器使用其自己内部的哈希函数,这些函数是基于与PASSWORD()一样的运算法则。
2)“CREATE TABLE … PARTITION BY KEY”的语法规则类似于创建一个通过HASH分区的表的规则。它们唯一的区别在于使用的关键字是KEY而不是HASH,并且KEY分区只采用一个或多个列名的一个列表。
5、子分区

CREATE TABLE ts (id INT, purchased DATE)
    PARTITION BY RANGE(YEAR(purchased))
    SUBPARTITION BY HASH(TO_DAYS(purchased))
    (
        PARTITION p0 VALUES LESS THAN (1990)
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/disk0/data'
                INDEX DIRECTORY = '/disk0/idx',
            SUBPARTITION s1
                DATA DIRECTORY = '/disk1/data'
                INDEX DIRECTORY = '/disk1/idx'
        ),
        PARTITION p1 VALUES LESS THAN (2000)
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/disk2/data'
                INDEX DIRECTORY = '/disk2/idx',
            SUBPARTITION s1
                DATA DIRECTORY = '/disk3/data'
                INDEX DIRECTORY = '/disk3/idx'
        ),
        PARTITION p2 VALUES LESS THAN MAXVALUE
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/disk4/data'
                INDEX DIRECTORY = '/disk4/idx',
            SUBPARTITION s1
                DATA DIRECTORY = '/disk5/data'
                INDEX DIRECTORY = '/disk5/idx'
        )
    );

Note:子分区是分区表中每个分区的再次分割,DATA DIRECTORY/INDEX DIRECTORY确定数据和索引的存储位置