MySQL 快速手册
MySQL快速手册
mysql -h <mysql_server_addr> -P <PORT> -u <USER> -p <PASSWORD>
- DDL(Data Definition Languages):数据库定义语句:用来创建数据库中的表、索引、视图、存储过程、触发器等
- DML(Data Manipulation Language):数据操纵语句:用来查询、添加、更新、删除等
- DCL(Data Control Language):数据控制语句:用于授权/撤销数据库及其字段的权限
- TCL(Transaction Control Language):事务控制语句:用于控制事务
- DQL(Data Query Language):数据查询语言,select, from, where,order by, having,asc|desc
MySQL的几个默认库及作用:
information_schema
: 保存了MySQl服务所有数据库元数据信息,具体MySQL服务有多少个数据库,各个数据库有哪些表,各个表中的字段是什么数据类型,各个表中有哪些索引,各个数据库要什么权限才能访问。sys
: 其所有的数据源均来自performance_schema
,目标是把该表的复杂性降低。mysql
: 保存MySQL的权限、参数、对象和状态信息,如哪些user可以访问这个数据、DB参数、插件、主从。(常用的,在mysql.user表中修改root用户的密码)performance_schema
: 主要用于收集数据库服务器性能参数。
基础
-- 全局 --SHOW processlist; -- 显示哪些线程正在运行SHOW master status\G;SHOW variables like 'server_id'; -- 显示系统变量SHOW GLOBAL variables like '%log_warning%';SELECT @@global.autocommit; -- 显示全局变量SHOW ENGINES;SHOW ENGINES <ENGINE_NAME> <LOGS|StATUS>; -- 显示存储引擎的日志或者状态信息SELECT now(),user(),version();SELECT * from information_schema.VIEWS; -- 查看视图SELECT * from information_schema.TABLES; -- 查看数据库所有表EXPLAIN <sql语句>; --show variables like 'log_bin'; -- 查看是否启用binlog日志show binary logs; -- 查看当前服务器使用的biglog文件个数及大小 show binary logs;
-- 慢日志相关show variables like '%slow_query_log%';
-- 库级 --CREATE DATABASE IF NOT EXISTS <DATABASE_NAME> DEFAULT CHARSET utf8 COLLATE utf8_general_ci; -- 创建数据库并指定字符集SHOW CREATE DATABASE <DATABASE>;FLUSH PRIVILEGES; -- 刷新权限SELECT database(); -- 当前选择的数据库DROP DATABASE <DATABASE>; -- 删除数据库
-- 表级 --DESC <TABLE_NAME>; -- 表结构、使用describe、show columns from <table_name>能达到相同效果SELECT user,host,password FROM mysql.user; -- 显示表中的制定字段SHOW TABLES FROM <TABLE_NAME>; -- 显示所有表SHOW TABLE STATUS [FROM <DATABASE_NAME>] [LIKE 'PATTERN']; -- 显示表状态ALTER TABLE <TABLE_NAME> <...OPTIONS...> -- 修改表选项,alter table test ENGINE=MYISAM;RENAME TABLE <old_TABLE_NAME> TO <new_TABLE_NAME>;RENAME TABLE <old_TABLE_NAME> TO <DATABASE_NAME.TABLE_NAME>; -- 可以将表移动到另外一个数据库
CREATE TABLE <TABLE_NAME> LIKE <TABLE_NAME>; -- 复制表结构CREATE TABLE <TABLE_NAME> AS SELECT * FROM <TABLE_NAME>; -- 复制表结构及表数据CREATE TABLE IF NOT EXISTS `test_table`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `addr` VARCHAR(40) NOT NULL, `date` DATE, PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE <TABLE_NAME> <...OPTIONS...>;/* 操作名 ADD COLUMN 字段定义 -- 增加字段 AFTER 字段名 -- 表示增加在该字段名后面 FIRST -- 表示增加在第一个 ADD PRIMARY KEY(字段名) -- 创建主键 ADD UNIQUE [索引名] (字段名)-- 创建唯一索引 ADD INDEX [索引名] (字段名) -- 创建普通索引 DROP [COLUMN] 字段名 -- 删除字段 MODIFY [COLUMN] 字段名 字段属性 -- 支持对字段属性进行修改,不能修改字段名(所有原有属性也需写上) CHANGE [COLUMN] 原字段名 新字段名 字段属性 -- 支持对字段名修改 * DROP PRIMARY KEY -- 删除主键(删除主键前需删除其AUTO_INCREMENT属性) DROP INDEX 索引名 -- 删除索引 DROP FOREIGN KEY 外键 -- 删除外键*/
DROP TABLE [IF EXISTS] <TABLE_NAME...>; -- 删除表TRUNCATE TABLE <TABLE_NAME>; -- 清空表数据,不删除表结构,与DELETE不同的是,该操作无法恢复,DELETE可以通过回滚操作进行恢复DELETE FROM <TABLE_NAME>; -- 清空表数据,不删除表结构
-- 检查表是否有错误CHECK TABLE <TABLE_NAME1>,<TBL_NAME2>...;
-- 刷新表数据FLUSH TABLES WITH READ LOCK;UNLOCK TABLES;
-- 释放表空间,使用delete时未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。OPTIMIZE TABLE <TABLE_NAME1>,<TBL_NAME2> <...OPTIONS...>;-- 分析表ANALYZE TABLE <TABLE_NAME1>,<TBL_NAME2> <...OPTIONS...>;-- 修复表REPAIR TABLE <TABLE_NAME1>,<TBL_NAME2> <...OPTIONS...>;
拓展:
- 查看某表中的字段是否存在
SELECTIF(count(*) = 1, 'Exist','Not Exist') AS resultFROMinformation_schema.columnsWHEREtable_schema = '<DB_NAME>'AND table_name = '<TABLE_NAME>'AND column_name = '<COLUMN_NAME>';
DELETE
和TRUNCATE
的区别a. 不带where参数的
delete
语句可以删除mysql表中所有内容,使用truncate table
也可以清空mysql表中所有内容。b. 效率上
truncate
比delete
快,但truncate
删除后不记录mysql日志,不可以恢复数据。c.
delete
语句是数据库操作语言(dml),这个操作会放到rollback segement
中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。truncate
、drop
是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。d.
delete
的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate
相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
CRUD
-- 增INSERT INTO <TABLE_NAME> [(字段列表)] VALUES (值列表)[, (值列表), ...] -- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。 -- 可同时插入多条数据记录!
/* REPLACE 与 INSERT 使用语法完全一样,其区别就是前者发现如果表中存在该数据,则会先删除该数据,然后再进行插入,而后者如若发现数据重复,则会报错。*/
INSERT INTO <TABLE_NAME> SET 字段名=值[, 字段名=值, ...]-- 删DELETE FROM <TABLE_NAME> [删除条件子句] 没有条件子句,则会删除全部-- 改UPDATE <TABLE_NAME> SET 字段名=新值[,字段名=新值] [更新条件]-- 查SELECT 字段列表 FROM <TABLE_NAME> [其他子句] -- 可来自多个表的多个字段 -- 其他子句可以不使用 -- 字段列表可以用*代替,表示所有字段
SELECT
/* SELECT */ ------------------SELECT [ALL|DISTINCT] select_expr FROM -> WHERE --> GROUP BY [合计函数] -> HAVING -> ORDER BY -> LIMIT
select_expr -- 可以用 * 表示所有字段。 select * from tb; -- 可以使用表达式(计算公式、函数调用、字段也是个表达式) select stu, 29+25, now() from tb; -- 可以为每个列使用别名。适用于简化列标识,避免多个列标识符重复。 - 使用 as 关键字,也可省略 as. select stu+10 as add10 from tb;
FROM 子句 用于标识查询来源。 -- 可以为表起别名。使用as关键字。 SELECT * FROM tb1 AS tt, tb2 AS bb; -- from子句后,可以同时出现多个表。 -- 多个表会横向叠加到一起,而数据会形成一个笛卡尔积。 SELECT * FROM tb1, tb2; -- 向优化符提示如何选择索引 USE INDEX、IGNORE INDEX、FORCE INDEX SELECT * FROM table1 USE INDEX (key1,key2) WHERE key1=1 AND key2=2 AND key3=3; SELECT * FROM table1 IGNORE INDEX (key3) WHERE key1=1 AND key2=2 AND key3=3;
WHERE 子句 -- 从from获得的数据源中进行筛选。 -- 整型1表示真,0表示假。 -- 表达式由运算符和运算数组成。 -- 运算数:变量(字段)、值、函数返回值 -- 运算符: =, <=>, <>, !=, <=, <, >=, >, !, &&, ||, in (not) null, (not) like, (not) in, (not) between and, is (not), and, or, not, xor is/is not 加上ture/false/unknown,检验某个值的真假 <=>与<>功能相同,<=>可用于null比较 -- in SELECT * FROM <TBL_NAME> a WHERE (a.<COLUMN1>,A.<COLUMN2>) IN/= (SELECT ...)
UNION 子句 -- 从多个表中查询出相似结构的数据,并且返回一个结果集 -- 从单个表中多次SELECT查询,将结果合并成一个结果集返回。
-- Union检索遇到不一致的字段名称时候,会使用第一条SELECT的查询字段名称,或者你使用别名来改变查询字段名称。
-- 额外参数: -- ALL:可选,返回所有结果集,包含重复数据 -- DISTINCT:可选,删除结果集中的重复数据,但默认情况下UNION操作符会自动删除重复数据,故此项参数加不加没什么影响 -- 'str' AS TABLE_NAME:用于区分多个联合表的标识字段列 (SELECT *,'tbl1' AS TABLE_NAME FROM <TBL_NAME> a WHERE ...) UNION [ALL|DISTINCT] (SELECT *,'tbl2' AS TABLE_NAME ...) ORDER BY id DESC
GROUP BY 子句, 分组子句 GROUP BY 字段/别名 [排序方式] 分组后会进行排序。排序规则,ASC升序(`DEFAULT`),DESC降序 SELECT user_id 用户id, count(id) 数量 FROM tbl GROUP BY user_id;
以下[合计函数]需配合 GROUP BY 使用: count 返回不同的非NULL值数目 count(*)、count(字段) sum 求和 max 求最大值 min 求最小值 avg 求平均值 group_concat 返回带有来自一个组的连接的非NULL值的字符串结果。组内字符串连接。
HAVING 子句,条件子句 `与 where 功能、用法相同,执行时机不同。 where 在开始时执行检测数据,对原数据进行过滤。 having 对筛选出的结果再次进行过滤。 having 字段必须是查询出来的,where 字段必须是数据表存在的。 where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。 where 不可以使用合计函数。一般需用合计函数才会用 having` SQL标准要求HAVING必须引用GROUP BY子句中的列或用于合计函数中的列。
ORDER BY 子句,排序子句 order by 排序字段/别名 排序方式 [,排序字段/别名 排序方式]... 升序:ASC,降序:DESC 支持多个字段的排序。
LIMIT 子句,限制结果数量子句 仅对处理好的结果进行数量限制。将处理好的结果的看作是一个集合,按照记录出现的顺序,索引从0开始。 limit 起始位置, 获取条数 省略第一个参数,表示从索引0开始。limit 获取条数
DISTINCT, ALL 选项 distinct 去除重复记录 默认为 all, 全部记录
用户权限
CREATE USER auditor@localhost IDENTIFIED BY 'newpasswd';GRANT ALL ON yiibaidb.* TO auditor@localhost;GRANT CREATE,EXECUTE,INSERT,DELETE,SELECT ON *.* TO usertest1@localhost;GRANT CREATE,EXECUTE,INSERT,DELETE,SELECT ON *.* TO usertest1@'%' IDENTIFIED BY 'newpasswd';SHOW GRANTS FOR usertest1@'%';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;flush privileges;REVOKE 权限列表 ON 数据库.* FROM '用户名'@'主机名';
详情查看[MySQL Auth CLI.md](./MySQL Auth CLI.md)
字符集编码
-- 查看字符集编码SHOW VARIABLES LIKE 'character_set%';-- 创建数据库时指定字符集CREATE DATABASE IF NOT EXISTS <DATABASE_NAME> CHARACTER SET <CHAR_SET>;-- 修改数据库的字符集ALTER DATABASE <DATABASE_NAME> CHARACTER SET <CHAR_SET>;
-- 改字符集SET character_set_client = utf8; -- 客户端向服务器端发送数据时使用的编码SET character_set_results = utf8; -- 服务器端将结果返回给客户端时所使用的编码SET character_set_connection = utf8; -- 连接层所使用的编码SET NAMES utf8; -- 该命令相当于一次执行上面三条命令 --SET character_set_database = utf8; -- 数据库使用的编码SET character_set_server = utf8; -- 服务器字符集,配置文件指定货建库建表指定。SET character_set_system = utf8; -- 系统字符集character_set_filesystem -- 文件系统所使用的字符集
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';update user set password=password("12345") where user="root";
/* 忘记root密码,停数据库 使用*/mysqld_safe --skip-grant-tables
set password = password("newpasswd");
详情查看[MySQL Auth CLI.md](./MySQL Auth CLI.md)
视图
CREATE [OR REPLACE] -- 替换已有视图 [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] -- 视图选择算法,默认为为定义的,merge表示合并,temptable表示临时表 [DEFINER = user] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] -- cascade是默认值,表示更新视图的时候,要满足视图和表的相关条件,local表示更新视图的时候,要满足该视图定义的一个条件即可,推荐使用CHECK OPTION-- 示例MariaDB root@win:test> create view v_test_data(完整名字,邮箱,IP地址) as -> select concat_ws(" ",first_name,last_name),email,ip_address from test_data -> where id<50 -> with check option; -- with check option约束限制,保证更新视图是在该视图的权限范围之内。-- 修改视图create or replace view <view_name> as ...;alter view <view_name> as ...;
索引
-- 创建索引create [unique] index <索引名称> on <表名>(列名[(length)]); -- unique 表示唯一索引,如果字段是char、varchar类型,length可以小于字段实际长度,如果是blog、text等长文本类型,必须指定length。alter <表名> add [unique] index <索引名称> on (列名[(length)]);-- 删除索引drop index <索引名称> on <表名>;-- 查看索引show index from <表名>;-- 修改索引,删除索引后重建索引
变量
-- 赋值,带@表示全局变量,不带表示局部变量set @变量名='值';set @变量名:='值';select @变量名:='值';select '值' into @变量名 [from tbl];-- 取值select @变量名;
行数
USE information_schema;
SELECT TABLE_NAME,table_rows FROM TABLES WHERE TABLE_SCHEMA = 'mysql' ORDER BY table_rows DESC;
-- 查看单表行数SELECT TABLE_NAME,table_rows FROM information_schema.tables WHERE TABLE_NAME = 'history' ORDER BY table_rows;
SELECT TABLE_NAME,table_rows FROM TABLES WHERE TABLE_NAME = 'orders' ORDER BY table_rows ;
SELECT TABLE_NAME,table_rowsFROM TABLES WHERE TABLE_NAME = 'books' ORDER BY table_rows ;
SELECT TABLE_NAME,table_rows FROM TABLES WHERE TABLE_NAME = 'book_parts' ORDER BY table_rows ;
查看存储过程和函数
select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' ; #存储过程select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' ; #函数show procedure status; #存储过程show function status; #函数-- 查看存储过程或函数的创建代码show create procedure proc_name;show create function func_name;
触发器,数据库大小
SHOW TRIGGERS [FROM db_name] [LIKE expr]SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G#查看数据库大小1、进入information_schema 数据库(存放了其他的数据库的信息)use information_schema;2、查询所有数据的大小:select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;3、查看指定数据库的大小:比如查看数据库home的大小select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='home';4、查看指定数据库的某个表的大小比如查看数据库home中 members 表的大小select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='home' and table_name='members';5,看每个表大小SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as data FROM TABLES WHERE TABLE_SCHEMA='mysql';
是否开启保护
SHOW VARIABLES LIKE 'sql_safe_updates';select @@sql_safe_updates;检查数据一致性pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --create-replicate-table --databases=ifeng --tables= -u root -p eba41b786d57213b09b12ca38ed9fa63 -h 127.0.0.1
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format \--replicate=ifeng --create-replicate-table --databases=ifeng --tables=book_parts -u chechdb -p 123comER -h 10.89.11.152
grant all on *.* to chechdb@'10.89.%.%' identified by '123comER';
死锁
show processlist;1:查看当前的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;2:查看当前锁定的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;3:查看当前等锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
sql
后10条数据select id,createTime from message_filesn order by id desc limit 10;
select id,createTime from message_filesn where createTime < DATE_SUB(CURDATE(),INTERVAL 1 day) order by id asc limit 10;
SELECT DATE_SUB(CURDATE(),INTERVAL 10 day) 2018-08-19SELECT DATE_SUB(CURDATE(),INTERVAL 1 year) 2017-08-29SELECT DATE_SUB(CURDATE(),INTERVAL 3 month) 2018-05-29SELECT DATE_SUB(CURDATE(),INTERVAL -1 month) 2018-09-29释放表空间optimize table tables_name;
改表名alter table message_filesntest rename to message_filesn ;
MySQL延迟复制
MySQL 5.6 支持延迟复制,可以在Slave服务器指定一个延迟的值。默认值为0秒。使用MASTER_DELAY 选项为CHANGE MASTERTO 设置N秒延迟。
1. 下面来实际演示,正常运行的从节点执行,设置延迟100秒STOP SLAVE;CHANGE MASTER TO MASTER_DELAY = 100;START SLAVE;SHOW SLAVE STATUS\G;
显示SQL_Delay: 100 --延迟 100SSQL_Remaining_Delay: NULL2. 设置取消延迟复制STOP SLAVE ;CHANGE MASTER TO MASTER_DELAY=0;START SLAVE;SHOW SLAVE STATUS\G;
SQL_Delay: 0 --取消延迟SQL_Remaining_Delay: NULL
主从
grant replication slave,file on *.* to 'slavebak'@'1.1.1.1' identified by 'newpasswd';show master status\G;#在从上执行以下
change master to master_host='1.1.1.1', master_user='test', master_password='newpasswd', master_log_file='mysql-bin.000005', master_log_pos=340;
change master to master_host='1.1.1.1', master_user='slavebak', master_password='newpasswd',MASTER_AUTO_POSITION=1;
xtrabackup方式备份
官方参考https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html
percona-toolkit //差异
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpmyum install percona-xtrabackup-24 -y
innobackupex --user=root --password=cXXX --defaults-file=/etc/my.cnf /data/backup #备份innobackupex --apply-log /data/backup/ #日志回滚innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup #备份恢复在配置文件中加datadir= /data/backup/
mysql> stop slave; #停止同步mysql> reset slave; #清除从连接信息mysql> show slave status\G; #再查看从状态,可以看到IO和SQL线程都为NOmysql> drop database weibo; #删除weibo库,weibo为测试数据库此时,从库现在和新装的一样,继续前进!
正式步骤开始:1. 主库使用xtrabackup备份innobackupex --user=root --password=123 ./生成一个以时间为命名的备份目录:2018-06-19_16-11-01
2. 把备份目录拷贝到从库上
3. 从库上把MySQL服务停掉,删除datadir目录,sudo rm -rf/var/lib/mysql/innobackupex --apply-log /data/backup/ #日志回滚innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup #备份恢复sudo chown mysql.mysql-R /var/lib/mysqlsudo /etc/init.d/mysql start#查看已经正常启动
4. 在主库创建test_tb2表,模拟数据库新增数据mysql> create tabletest_tb2(id int,name varchar(30));
5. 从备份目录中xtrabackup_info文件获取到binlog和pos位置cat/var/lib/mysql/xtrabackup_info
binlog_pos = filename'mysql-bin.000001', position 429 #这个位置
6. 从库设置从这个日志点同步,并启动
mysql> change masterto master_host='192.168.18.212', -> master_user='sync', -> master_password='sync', -> master_log_file='mysql-bin.000001', -> master_log_pos=429;mysql> start slave;mysql> show slavestatus\G;***************************1. row *************************** Slave_IO_Running: Yes Slave_SQL_Running: Yes......
7. 从库查看weibo库里面的表可以看到IO和SQL线程均为YES,说明主从配置成功。
mysql> show tables;+---------------------------+| Tables_in_weibo |+---------------------------+| test_tb || test_tb2 |发现刚才模拟创建的test_tb2表已经同步过来。
#################简化####################################################innobackupex --user=root --password=cXXX --defaults-file=/etc/my.cnf /data/backup #备份innobackupex --apply-log /data/backup/ #日志回滚在配置文件中加datadir= path注意配置文件中的path 和/data/backup 不能相同。innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup #备份恢复
主从都开启了gtid,在设置从库的时候遇到了问题mysql> CHANGE MASTER TO MASTER_HOST=‘xxx’,MASTER_USER='replicant',MASTER_PASSWORD=‘xxx’, MASTER_LOG_FILE='bin.000050', MASTER_LOG_POS=191;ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.
解决的办法mysql> change master to master_auto_position=0;Query OK, 0 rows affected (0.34 sec)
mysql> CHANGE MASTER TO MASTER_HOST=‘xxx’,MASTER_USER='replicant',MASTER_PASSWORD=‘xxx’, MASTER_LOG_FILE='bin.000050', MASTER_LOG_POS=191;Query OK, 0 rows affected, 2 warnings (0.51 sec)
mysql> START SLAVE;Query OK, 0 rows affected (0.08 sec)
mysql> SHOW SLAVE STATUS \G
change master to master_host='10.21.8.57',master_user='mysqlsync',master_password='12345678',MASTER_AUTO_POSITION=1;
备份:
/data/bin/xtrabackup/bin/innobackupex --user=root --password=cXXX --defaults-file=/etc/my.cnf /data/backup/full/
恢复:1:应用日志/data/bin/xtrabackup/bin/innobackupex --apply-log /data/backup/2014-01-24_11-36-53/2:数据恢复/data/bin/xtrabackup/bin/innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup/2014-01-24_11-36-53/3:chown -R mysql:mysql /data/mysqldata/4:启动
innobackupex --defaults-file=/etc/my.cnf --user=backup --password='bc.123456' --socket=/var/lib/mysql/mysql.sock --slave-info --safe-slave-backup --no-timestamp /backup/full备份源库上恢复日志备份完成后,还不能用于恢复,一些未提交的事物需要恢复,需要恢复redo logo的数据,确保数据一致[root@dg backup]\# innobackupex --apply-log /backup/full传输数据到新的备库[root@dg backup]\# scp -r full/ dgt:/backup/
部分内容来源于网络。