mysql日常笔记

安装
  • 1
  • 2

Linux平台安装 
创建用户 
groupadd mysql 
useradd -s /sbin/nologin -M -g mysql mysql 
useradd -g mysql mysql -d /home/mysql -s /sbin/nologin 
chown mysql:mysql -R /mysql

数据库初始化 
cd /mysql/mysql/bin 
./mysqld –user=mysql –basedir=/mysql/mysql –datadir=/mysql/mysql/data –initialize 
生成临时密码 
2016-05-13T00:19:19.691854Z 1 [Note] A temporary password is generated for root@localhost: X=Hgvio2emY#

修改配置文件中的参数
  • 1
  • 2

cd /mysql/mysql/support-files/ 
vi mysql.server 
basedir=/mysql/mysql 
datadir=/mysql/mysql/data

生成全局参数配置文件: 
[root@primary support-files]# cp /mysql/mysql/support-files/my-default.cnf /etc/my.cnf

启动MYSQL: 
[root@primary mysql]# ./support-files/mysql.server start 
Starting MySQL..[ OK ]

创建自动启动: 
cp /mysql/mysql/support-files/mysql.server /etc/init.d/mysqld 
chkconfig –add mysqld 
chkconfig –list mysqld 
chkconfig –level 2345 mysqld on 
chkconfig mysqld on

检查端口,验证数据库是否启动: 
netstat -lntup |grep 330 
ss -lntup |grep 330

进入后修改密码: 
mysql> alter user ‘root’@’localhost’ identified by ‘root’; 
Query OK, 0 rows affected (0.00 sec)


快速登录
  • 1
  • 2

vi /etc/profile 
alias mysql=’mysql -uroot -proot’ 
Windows平台安装 
初始化: 
mysqld –user=mysql –basedir=E:\mysql –datadir=E:\mysql\data –initialize 
创建服务: 
mysqld –install mysql –defaults-file=”E:\mysql\my-default.ini”

net start mysql

初始密码:.\data\zxq.err 
root@localhost: UvRhc-ove1c:

E:\mysql\bin>mysql.exe -u root -p 
Enter password: ** 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 4 
Server version: 5.7.13

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

出现如下错误: 
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 
mysql> alter user ‘root’@’localhost’ identified by ‘root’; 
或 
mysql> SET PASSWORD=PASSWORD(‘root’); 
下面是关于如何设置MySQL用户账号的到期日期一个简单例子: 
mysql> ALTER USER ‘testuser’@’localhost’ PASSWORD EXPIRE;


    多实例创建
  • 1
  • 2

一、 初始化后结构: 
[root@primary data]# tree -L 3 ../data/ 
../data/ 
|– 3306 
| |– data 
| | |– auto.cnf 
| | |– ib_buffer_pool 
| | |– ib_logfile0 
| | |– ib_logfile1 
| | |– ibdata1 
| | |– mysql 
| | |– performance_schema 
| | -- sys 
|
– my.cnf 
-- 3307 
|-- data 
| |-- auto.cnf 
| |-- ib_buffer_pool 
| |-- ib_logfile0 
| |-- ib_logfile1 
| |-- ibdata1 
| |-- mysql 
| |-- performance_schema 
|
– sys 
`– my.cnf

[root@primary data]# ls 
3306 3307 
[root@primary data]# chown -R mysql:mysql *

./mysqld –user=mysql –basedir=/mysql/mysql –datadir=/mysql/mysql/data/3306/data –initialize 
2016-05-13T01:12:49.485921Z 1 [Note] A temporary password is generated for root@localhost: tqtP0dR#wa>k

./mysqld –user=mysql –basedir=/mysql/mysql –datadir=/mysql/mysql/data/3307/data –initialize 
2016-05-13T01:13:20.422615Z 1 [Note] A temporary password is generated for root@localhost: R1ZcfY!63Tk5

启动实例。使用如下命令: 
/mysql/mysql/bin/mysqld_safe –defaults-file=/mysql/mysql/data/3306/my.cnf & 
/mysql/mysql/bin/mysqld_safe –defaults-file=/mysql/mysql/data/3307/my.cnf & 
ps aux |grep mysqld

启动实例时错误: 
2016-05-13T01:32:12.808575Z mysqld_safe The file /usr/local/mysql/bin/mysqld 
does not exist or is not executable. Please cd to the mysql installation 
解决方法: 
su – root 
mkdir /usr/local/mysql/bin 
ln -s /mysql/mysql/bin/mysqld /usr/local/mysql/bin/mysqld

验证是否启动: 
[root@primary data]# netstat -lntup |grep 330 
[root@primary data]# ss -lntup |grep 330 
tcp 0 0 :::3307 :::* LISTEN 7247/mysqld 
tcp 0 0 :::3306 :::* LISTEN 6896/mysqld

[root@primary data]# ps aux |grep mysqld 
root 6579 0.0 0.0 9364 1320 pts/1 S 09:33 0:00 /bin/sh /mysql/mysql/bin/mysqld_safe –defaults-file=/mysql/mysql/data/3306/my.cnf 
mysql 6896 0.3 4.0 1121784 120400 pts/1 Sl 09:33 0:00 /usr/local/mysql/bin/mysqld –defaults-file=/mysql/mysql/data/3306/my.cnf –basedir=/mysql/mysql –datadir=/mysql/mysql/data/3306/data –plugin-dir=/mysql/mysql/lib/plugin –user=mysql –log-error=/mysql/mysql/data/3306/data/ilanni.err –pid-file=/mysql/mysql/data/3306/data/ilanni.pid –socket=/mysql/mysql/data/3306/data/mysql.sock –port=3306 
root 6928 0.1 0.0 9360 1320 pts/1 S 09:34 0:00 /bin/sh /mysql/mysql/bin/mysqld_safe –defaults-file=/mysql/mysql/data/3307/my.cnf 
mysql 7247 2.5 4.0 1121792 119564 pts/1 Sl 09:34 0:00 /usr/local/mysql/bin/mysqld –defaults-file=/mysql/mysql/data/3307/my.cnf –basedir=/mysql/mysql –datadir=/mysql/mysql/data/3307/data –plugin-dir=/mysql/mysql/lib/plugin –user=mysql –log-error=/mysql/mysql/data/3307/data/ilanni.err –pid-file=/mysql/mysql/data/3307/data/ilanni.pid –socket=/mysql/mysql/data/3307/data/mysql.sock –port=3307 
root 7278 0.0 0.0 103244 832 pts/0 S+ 09:35 0:00 grep mysqld


登录不同的实例
  • 1
  • 2

mysql -uroot -p -S /mysql/mysql/data/3306/data/mysql.sock 
mysql -uroot -p -S /mysql/mysql/data/3307/data/mysql.sock

远程登录: 
CREATE USER ‘zxq’@’%’ IDENTIFIED BY ‘zxq’; 
GRANT SELECT,INSERT,UPDATE,DELETE ON . TO ‘zxq’@’%’; 
GRANT ALL ON . TO ‘zxq’@’%’;

mysql> flush privileges; 
Query OK, 0 rows affected (0.04 sec)

mysql -h 192.168.111.111 -u root -p -S /mysql/mysql/data/3306/data/mysql.sock


启动停止脚本创建
  • 1
  • 2

vi mysql 
#!/bin/sh 
port=3306 
mysql_user=”root” 
mysql_pwd=”” 
CmdPath=”/mysql/mysql/bin” 
mysql_sock=”/mysql/mysql/data/{port}/data/mysql.sock”  
  #startup function  
function_start_mysql()  
{if [ ! -e “{port}/data/mysql.sock”    #startup function  function_start_mysql()  {if [ ! -e “mysql_sock” ];then 
printf “Starting MariaMySQL…\n” 
/bin/sh CmdPath/mysqldsafe−−defaults−file=/mysql/mysql/data/CmdPath/mysqldsafe−−defaults−file=/mysql/mysql/data/{port}/my.cnf 2>&1 > /dev/null & 
else 
printf “MariaMySQL is running…\n” 
exit 
fi} 
#stop function 
function_stop_mysql() 
{if [ ! -e “mysqlsock”];thenprintf“MariaMySQLisstopped…\n”exitelseprintf“StopingMariaMySQL…\n”mysqlsock”];thenprintf“MariaMySQLisstopped…\n”exitelseprintf“StopingMariaMySQL…\n”{CmdPath}/mysqladmin -u mysqluser−pmysqluser−p{mysql_pwd} -S /mysql/mysql/data/${port}/data/mysql.sock shutdown 
fi} 
#restart function 
function_restart_mysql()

printf “Restarting MariaMySQL…\n” 
function_stop_mysql 
sleep 2 
function_start_mysql 

case 1instart)functionstartmysql;;stop)functionstopmysql;;restart)functionrestartmysql;;∗)printf“Usage:/mysql/mysql/data/1instart)functionstartmysql;;stop)functionstopmysql;;restart)functionrestartmysql;;∗)printf“Usage:/mysql/mysql/data/{port}/mysql {start|stop|restart}\n” 
esac


不同实例的配置文件
  • 1
  • 2

3306 my.cnf配置文件

[client] 
port = 3306 
socket = /mysql/mysql/data/3306/data/mysql.sock 
[mysqld] 
port = 3306 
socket = /mysql/mysql/data/3306/data/mysql.sock 
basedir = /mysql/mysql 
datadir = /mysql/mysql/data/3306/data 
skip-external-locking 
key_buffer_size = 16M 
max_allowed_packet = 1M 
table_open_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M 
skip-name-resolve 
log-bin=mysql-bin 
binlog_format=mixed 
max_binlog_size = 500M 
server-id = 1 
[mysqld_safe] 
log-error=/mysql/mysql/data/3306/data/ilanni.err 
pid-file=/mysql/mysql/data/3306/data/ilanni.pid 
[mysqldump] 
quick 
max_allowed_packet = 16M 
[mysql] 
no-auto-rehash 
[myisamchk] 
key_buffer_size = 20M 
sort_buffer_size = 20M 
read_buffer = 2M 
write_buffer = 2M 
[mysqlhotcopy] 
interactive-timeout

3307 my.cnf配置文件 
[client] 
port = 3307 
socket = /mysql/mysql/data/3307/data/mysql.sock 
[mysqld] 
port = 3307 
socket = /mysql/mysql/data/3307/data/mysql.sock 
basedir = /mysql/mysql 
datadir = /mysql/mysql/data/3307/data 
skip-external-locking 
key_buffer_size = 16M 
max_allowed_packet = 1M 
table_open_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M 
skip-name-resolve 
log-bin=mysql-bin 
binlog_format=mixed 
max_binlog_size = 500M 
server-id = 1 
[mysqld_safe] 
log-error=/mysql/mysql/data/3307/data/ilanni.err 
pid-file=/mysql/mysql/data/3307/data/ilanni.pid 
[mysqldump] 
quick 
max_allowed_packet = 16M 
[mysql] 
no-auto-rehash 
[myisamchk] 
key_buffer_size = 20M 
sort_buffer_size = 20M 
read_buffer = 2M 
write_buffer = 2M 
[mysqlhotcopy] 
interactive-timeout


存储引擎
  • 1
  • 2

MyISAM –5.5.5之前默认引擎 
1) 不支持事物 
2) 表级锁 
3) 读写相互阻塞 
4) 只会缓存索引 
5) 读取较快,占用资源较少 
6) 不支持外键约束,但支持全文索引 
使用场景: 
1) 不需要事物支持的场景(读事物多的网站) 
2) 读多的应用,读写都频繁的不适合 
3) 并发访问相对低的业务(读写都多的),纯读纯写的可以 
4) 数据修改业务较少 
5) 读为主的业务 
6) 对数据一致性不高的业务 
7) 中小网站的部分业务 
MyISAM调优: 
1) 设置合理的索引(缓存机制) 
2) 调整读写优先级 
3) 启用延迟插入,改善大批量写入性能 
4) 降低并发

InnoDB –后面版本默认引擎 
1) 支持事物 
2) 行级锁定 
3) 高效的缓存机制,可缓存索引和数据 
4) 支持分区和表空间 
5) 支持外键约束5.5后支持全文索引 
使用场景: 
1) 事物支持 
2) 行级锁要求高并发 
3) 更新较多的场景 
4) 数据读一致性要求高的业务 
5) 具有较大内存设备的 
InnoDB调优: 
1) 主键尽量小 
2) 避免全表扫描,因为会锁表 
3) 尽可能缓存所有的索引和数据 
4) 尽量自己控制autocommit 
5) 合理设置innodb_flush_log_at_trx_commit参数,不要过度追求安全(0每秒自动写日志到磁盘) 
6) 避免主键更新,因为会带来大量的数据迁移

MyISAM:系统版都是MyISAM引擎 
-rw-r—– 1 mysql mysql 10816 Jul 26 06:54 user.frm –表结构定义 
-rw-r—– 1 mysql mysql 512 Jul 28 00:27 user.MYD –表数据 
-rw-r—– 1 mysql mysql 4096 Jul 28 02:06 user.MYI –表索引

查看表的引擎:
  • 1
  • 2

mysql> show create table zxq\G 
***************** 1. row ***************** 
Table: zxq 
Create Table: CREATE TABLE zxq ( 
id int(11) DEFAULT NULL, 
KEY zxq_indx (id
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
1 row in set (0.00 sec)

InnoDB: 
-rw-r—– 1 mysql mysql 8556 Jul 28 15:20 zxq.frm 
-rw-r—– 1 mysql mysql 114688 Jul 28 15:20 zxq.ibd

开启、关闭自动提交
  • 1
  • 2

set autocommit =0; 
set autocommit=1;

mysql> show variables like ‘%autocommit%’; 
+—————+——-+ 
| Variable_name | Value | 
+—————+——-+ 
| autocommit | ON | 
+—————+——-+ 
1 row in set (0.00 sec)

InnoDB独立表空间 
独立表空间: 
优点: 
1. 每个表都有自已独立的表空间。 
2. 每个表的数据和索引都会存在自已的表空间中。 
3. 可以实现单表在不同的数据库中移动。 
4. 空间可以回收(除drop table操作处,表空不能自已回收) 
a) Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。 
b)对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。 
c)对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点: 
单表增加过大,如超过100个G。 
结论: 
共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整一 下:innodb_open_files 。 
InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。

修改独占空表空间的数据存储位置 
innodb_data_home_dir = “/mysql/mysql/data/” 
innodb_log_group_home_dir = “/mysql/mysql/data/” 
innodb_data_file_path=ibdata1:10M:autoextend 
innodb_file_per_table=1 
参数说明: 
这个设置配置一个可扩展大小的尺寸为10MB的单独文件,名为ibdata1。没有给出文件的位置,所以默认的是在MySQL的数据目录内。【对数据来进行初始化的设置】 
innodb_data_home_dir 代表为数据库文件所存放的目录 
innodb_log_group_home_dir 为日志存放目录 
innodb_file_per_table 是否使用共享以及独占表空间来

  1. innodb_file_per_table设置.开启方法: 
    在my.cnf中[mysqld]下设置 
    innodb_file_per_table=1
  2. 查看是否开启 
    mysql> show variables like ‘innodb_file_per_table’; 
    +———————–+——-+ 
    | Variable_name | Value | 
    +———————–+——-+ 
    | innodb_file_per_table | ON | 
    +———————–+——-+ 
    1 row in set (0.01 sec)
  3. 关闭独享表空间 
    innodb_file_per_table=0关闭独立的表空间 
    mysql> show variables like ‘%per_table%’;

修改表的引擎 
查看表的引擎 
mysql> show create table zxq\G 
***************** 1. row ***************** 
Table: zxq 
Create Table: CREATE TABLE zxq ( 
id int(11) DEFAULT NULL, 
KEY zxq_indx (id
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
1 row in set (0.00 sec) 
修改表的引擎: 
alter table zxq engine=innodb; 
alter table zxq engine=MYiSAM; 
3. binlog启用 
binlog启用 
vi /etc/my.cnf 
添加参数: 
server-id = 1 
log_bin=mysql-bin 
log-error=/mysql/mysql/mysqld.log 
binlog_format=mixed 
启动服务: 
[root@primary mysql]# ./support-files/mysql.server start 
Starting MySQL.[ OK ]

检查log-bin日志: 
[root@primary data]# ls -al 
total 122960 
drwxr-xr-x 5 mysql mysql 4096 Jul 26 07:41 . 
drwxr-xr-x 10 7161 wheel 4096 Jul 26 07:37 .. 
-rw-r—– 1 mysql mysql 56 Jul 26 06:54 auto.cnf 
-rw-r—– 1 mysql mysql 315 Jul 26 07:37 ib_buffer_pool 
-rw-r—– 1 mysql mysql 12582912 Jul 26 07:41 ibdata1 
-rw-r—– 1 mysql mysql 50331648 Jul 26 07:41 ib_logfile0 
-rw-r—– 1 mysql mysql 50331648 Jul 26 06:54 ib_logfile1 
-rw-r—– 1 mysql mysql 12582912 Jul 26 07:41 ibtmp1 
drwxr-x— 2 mysql mysql 4096 Jul 26 06:54 mysql 
-rw-r—– 1 mysql mysql 154 Jul 26 07:41 mysql-bin.000001 
-rw-r—– 1 mysql mysql 19 Jul 26 07:41 mysql-bin.index 
-rw-rw—- 1 root root 5 Jul 26 07:41 mysqld_safe.pid 
drwxr-x— 2 mysql mysql 4096 Jul 26 06:54 performance_schema 
-rw-r—– 1 mysql root 21286 Jul 26 07:37 primary.err 
-rw-r—– 1 mysql mysql 5 Jul 26 07:41 primary.pid 
drwxr-x— 2 mysql mysql 12288 Jul 26 06:54 sys 
刷新bin-log: 
[root@primary data]# mysqladmin -uroot -proot flush-logs;

mysql-bin日志内容查看: 
[root@primary bin]# ./mysqladmin -uroot -proot flush-logs 
[root@primary data]# mysqlbinlog mysql-bin.000001

生成脚本: 
[root@primary data]# mysqlbinlog mysql-bin.000001 –d zxq >zxq.sl 
查看里面的sql内容: 
[root@primary data]# egrep -v “#|*|–|^$” zxq.sql

关闭sql_log_bin:
  • 1
  • 2

数据恢复 
mysql> use zxq; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A

Database changed 
mysql> drop table zxq; 
Query OK, 0 rows affected (0.08 sec)

mysql> 
mysql> source zxq.sql 
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Database changed 
Query OK, 0 rows affected (0.00 sec)

mysqldump命令必须带上–flush-logs选项以生成新的二进制日志文件: 
mysqldump –single-transaction –flush-logs –master-data=2 > backup.sql

恢复数据时如下: 
shell> mysql -uroot -pPwd < backup_sunday_1_PM.sql 
shell> mysqlbinlog mysql-bin.000003 | mysql -uroot -pPwd

binlog参数 
启用binlog 
log-bin =/xxx/mysql-bin

从库启用binlog
log-slave-updates

定期删除binlog
expire_logs_days = 7
   类似:find /xxx/ -type f –name “mysql-bin.000*” –mtime +7|xargs rm -f
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Binlog分析 
–start-date 
–stop-date 
–start-position 
–stop-position

mysqlbinlog –stop-date=”2005-04-20 9:59:59” /var/log/mysql/bin.123456 | mysql -u root –pmypwd

mysqlbinlog –start-date=”2005-04-20 10:01:00” /var/log/mysql/bin.123456 \ 
| mysql -u root -pmypwd \

mysqlbinlog –start-date=”2005-04-20 9:55:00” –stop-date=”2005-04-20 10:05:00” \ 
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql

mysqlbinlog –stop-position=”368312” /var/log/mysql/bin.123456 \ 
| mysql -u root -pmypwd

mysqlbinlog –start-position=”368315” /var/log/mysql/bin.123456 \ 
| mysql -u root -pmypwd \

mysqldump数据备份
  • 1
  • 2

数据库备份 
数据库备份,指定数据库: 
mysqldump -uroot -p123 zxq > zxq.dump

–opt 
如果加上–opt参数则生成的dump文件中稍有不同: 
建表语句包含drop table if exists tableName 
. insert之前包含一个锁表语句lock tables tableName write,insert之后包含unlock tables

跨主机备份: 
使用下面的命令可以将host1上的sourceDb复制到host2的targetDb,前提是host2主机上已经创建targetDb数据库: 
mysqldump –host=host1 –opt sourceDb| mysql –host=host2 -C targetDb 
-C指示主机间的数据传输使用数据压缩

只备份表结构: 
mysqldump –no-data –databases mydatabase1 > test.dump 
如果要备份某个MySQL主机上的所有数据库可以使用–all-databases选项

实现定时备份(crontab): 
30 1 * * * root mysqldump -u root -pPASSWORD –all-databases | gzip > /mnt/disk2/database_date '+%m-%d-%Y'.sql.gz

定制的备份脚本:
  • 1
  • 2

#vi /backup/backup.sh 
#!bin/bash 
cd /backup 
echo “You are in backup dir” 
mv backup* /oldbackup 
echo “Old dbs are moved to oldbackup folder” 
File = backup-Now.sqlmysqldump−uuser−ppassworddatabase−name>Now.sqlmysqldump−uuser−ppassworddatabase−name>File 
echo “Your database backup successfully completed”

脚本制定执行计划: 
#crontab -e 
30 1 * * * /backup.sh

mysqldump常用参数 
–all-databases , -A 导出全部数据库 
mysqldump -uroot -p –all-databases 
-databases, -B导出几个数据库。参数后面所有名字参量都被看作数据库名。mysqldump -uroot -p -databases test mysql 
–master-data 
这个选项可以把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGE MASTER命令;如果等于2,会加上注释前缀。并且这个选项会自动打开–lock-all-tables,除非同时设置了–single-transaction(这种情况下,全局读锁只会在开始dump的时候加上一小段时间,在任何情况下,所有日志中的操作都会发生在导出的准确时刻。这个选项会自动关闭–lock-tables。 
–single-transaction 
通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照。只有当表使用支持MVCC的存储引擎(目前只有InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了–single-transaction选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,这会导致一致性快照失效。这个选项开启后会自动关闭–lock-tables 
-all-tablespaces , -Y导出全部表空间。 
mysqldump -uroot -p –all-databases –all-tablespaces–no-tablespaces 
-y不导出任何表空间信息。 
mysqldump -uroot -p –all-databases –no-tablespaces 
–skip-comments取消注释 
mysqldump -uroot -p –all-databases (默认记录注释) 
mysqldump -uroot -p –all-databases –skip-comments 
–compress, -C在客户端和服务器之间启用压缩传递所有信息 
mysqldump -uroot -p –all-databases –compress 
–default-character-set设置默认字符集,默认值为utf8 
mysqldump -uroot -p –all-databases –default-character-set=latin1 
–events, -E导出事件。 
mysqldump -uroot -p –all-databases –events 
–flush-logs开始导出之前刷新日志。 
mysqldump -uroot -p –all-databases –flush-logs 
–flush-privileges在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。 
mysqldump -uroot -p –all-databases –flush-privileges 
–force在导出过程中忽略出现的SQL错误。 
mysqldump -uroot -p –all-databases –force 
–host, -h需要导出的主机信息 
mysqldump -uroot -p –host=localhost –all-databases

备份恢复案例 
整个数据库备份恢复: 
mysqldump -u root -p test_db > test_db.sql 
如要对数据进行还原,可执行如下命令: 
mysql -u username -p test_db < test_db.sql 
还原数据库操作还可以使用以下方法: 
mysql> sourcetest_db.sql

增量恢复案例:

刷新日志,并记录备份点: 
[root@primary backup]# mysqldump -uroot –proot -F –flush-logs -B test>|gzip >mysqlback_$(date_%F).sql.gz

找出mysqlback_$(date_%F).sql.gz的CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000001’, MASTER_LOG_POS=154;

模拟增加数据: 
mysql> insert into zxq values(4),(5),(6); 
Query OK, 3 rows affected (0.11 sec) 
Records: 3 Duplicates: 0 Warnings: 0

模拟误删除数据库: 
mysql> drop database test; 
Query OK, 1 row affected (0.10 sec)

mysql> show variables like ‘%log_bin%’; 
+———————————+———————————–+ 
| Variable_name | Value | 
+———————————+———————————–+ 
| log_bin | ON | 
| log_bin_basename | /mysql/mysql/data/mysql-bin | 
| log_bin_index | /mysql/mysql/data/mysql-bin.index | 
| log_bin_trust_function_creators | OFF | 
| log_bin_use_v1_row_events | OFF | 
| sql_log_bin | ON | 
+———————————+———————————–+

mysql> show master status\G 
***************** 1. row ***************** 
File: mysql-bin.000001 
Position: 423 
Binlog_Do_DB: test 
Binlog_Ignore_DB: information_schema,performance_schema,mysql,sys,zxq 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

分析bin-log,找出后面增量的日志: 
mysqlbinlog –start-position=”154” /mysql/mysql/data/mysql-bin.000001>test.sql

编辑test.sql注释掉drop database test

进行恢复:

mysql –uroot –proot

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值