记住用户名密码
一、全备
-- 删除8天前备份
-- find /data/mysqldata/back_dir/ -maxdepth 1 -mtime +8 -type d -exec rm -rf {} \;
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock /data/mysqldata/back_dir/
全备恢复整库则直接使用全备文件夹即可;
全备恢复单库、单表
将备份文件复制到20220809文件夹
cp backup-my.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 xtrabackup_binlog_info xtrabackup_binlog_pos_innodb xtrabackup_checkpoints xtrabackup_info xtrabackup_logfile xtrabackup_master_key_id /data/mysqldata2/20220809/
cp -r mysql performance_schema 数据库 /data/mysqldata2/20220809/
删除ib_logfile0 ib_logfile01
/data/mysqldata/log/relay_log/ib_logfile0
rm -rf ib_logfile0 ib_logfile1
应用redo日志
innobackupex --defaults-file=/etc/my.cnf --apply-log /data/mysqldata2/20220809/
复制文件
innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysqldata2/20220809/
chown -R mysql:mysql /data/mysqlnew
chown mysql:mysql ib_logfile0 ib_logfile1
删除ib_logfile0 ib_logfile01
/data/mysqldata/log/relay_log/ib_logfile0
rm -rf ib_logfile0 ib_logfile1
systemctl start mysqld.service
二、增备:
先进行全备
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock /data/mysqldata/back_dir/
增备
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock --incremental /data/mysqldata/back_inc_dir/ --incremental-basedir=$FULLBACKUP
其中$FULLBACKUP= /data/mysqldata/back_dir/时间戳
$INCREMENTALBACKUP= /data/mysqldata/back_inc_dir/ 时间戳
恢复全备
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only $FULLBACKUP
增备应用于全备
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only $FULLBACKUP --incremental-dir=$INCREMENTALBACKUP
将所有部分放在一起后,再次准备完整备份(基本 + 增量)以回滚待处理的事务:
innobackupex --defaults-file=/etc/my.cnf --apply-log $FULLBACKUP
剩余步骤和全备恢复相同
-------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
mysqldump -u root -p --single-transaction --set-gtid-purged=OFF --databases test --tables test> /data/back_dir/`date +%Y%m%d%H%M`.sql
find /data/back_dir/ -mtime +5 -name "*.sql" -exec rm -rf {} \;
crontab -e
10 5 * * * sh /data/back_dir/test.sh
```````
mysqldump 参数
--host=host_name, -h host_name
MySQL 数据库主机地址,默认为 localhost。
示例:mysqldump -uroot -p --host=localhost --all-databases
--port=port_num, -P port_num
连接数据库端口号
--user=user_name, -u user_name
指定连接数据库的用户名。
--password[=password], -p[password]
连接数据库的密码
--all-databases, -A
导出全部数据库的全部表。示例:mysqldump -uroot -p --all-databases
--databases, -B
导出几个数据库。参数后面所有名字参量都被看作数据库名。
示例:mysqldump -uroot -p --databases test mysql
--single-transaction
该选项在导出数据之前,设置事务隔离模式为 REPEATABLE READ,并提交一个 START TRANSACTION SQL 语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。
它只适用于 InnoDB。
本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick 选项。
示例:mysqldump -uroot -p --host=localhost --all-databases --single-transaction
--tables
覆盖 --databases 或 -B 参数,指定需要导出的表名。
示例:mysqldump -uroot -p --host=localhost --databases test --tables test
--all-tablespaces, -Y
导出全部表空间。示例:mysqldump -uroot -p --all-databases --all-tablespaces
--no-tablespaces, -y
不导出任何表空间信息。示例:mysqldump -uroot -p --all-databases --no-tablespaces
--add-drop-database
每个数据库创建之前添加 drop 数据库语句。
示例:mysqldump -uroot -p --all-databases --add-drop-database
--add-drop-table
每个数据表创建之前添加 drop 数据表语句。
默认为打开状态,使用 --skip-add-drop-table 取消选项。
示例:mysqldump -uroot -p --all-databases --skip-add-drop-table (取消drop语句)
--add-locks
在每个表导出之前增加 LOCK TABLES 并且之后 UNLOCK TABLES。
默认为打开状态,使用 --skip-add-locks 取消选项。
示例:mysqldump -uroot -p --all-databases (默认添加 LOCK 语句);
mysqldump -uroot -p --all-databases --skip-add-locks (取消 LOCK 语句)
--allow-keywords
允许创建是关键词的列名字。它由列名前冠以表名实现。
示例:mysqldump -uroot -p --all-databases --allow-keywords
--apply-slave-statements
在从库导出时,在 'CHANGE MASTER' 前添加 'STOP SLAVE',并且在导出的最后添加'START SLAVE'。
示例:mysqldump -uroot -p --all-databases --apply-slave-statements
--character-sets-dir=dir_name
字符集文件的目录。
示例:mysqldump -uroot -p --all-databases --character-sets-dir=/usr/local/mysql/share/mysql/charsets
--comments, -i
附加注释信息,默认为打开,可以用 --skip-comments 取消。
示例:mysqldump -uroot -p --all-databases (默认记录注释);
mysqldump -uroot -p --all-databases --skip-comments (取消注释)
--compatible=name
导出的数据将和其它数据库或旧版本的 MySQL 相兼容。
值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等。
要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
示例:mysqldump -uroot -p --all-databases --compatible=ansi
--compact
导出更少的输出信息(用于调试)。去掉注释和头尾等结构。该选项使 --skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys 生效。
示例:mysqldump -uroot -p --all-databases --compact
--complete-insert, -c
使用完整的 insert 语句(包含列名称)。
这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。
示例:mysqldump -uroot -p --all-databases --complete-insert
--compress, -C
在客户端和服务器之间启用压缩传递所有信息。
示例:mysqldump -uroot -p --all-databases --compress
--create-options
在 CREATE TABLE 语句中包括所有 MySQL 特性选项(默认为打开状态)。
示例:mysqldump -uroot -p --all-databases
--debug[=debug_options], -# [debug_options]
输出 debug 信息,用于调试。默认值为:d:t:o,/tmp/mysqldump.trace。
示例:mysqldump -uroot -p --all-databases --debug;
mysqldump -uroot -p --all-databases --debug=” d:t:o,/tmp/debug.trace”
--debug-check
程序退出时,打印一些调试信息。
示例:mysqldump -uroot -p --all-databases --debug-check
--debug-info
程序退出时,打印调试信息和内存、CPU 使用数据。
示例:mysqldump -uroot -p --all-databases --debug-info
--default-character-set
设置默认字符集,默认值为 utf8。
示例:mysqldump -uroot -p --all-databases --default-character-set=latin1
--delete-master-logs
master 备份后删除日志。这个参数将自动激活 --master-data。
示例:mysqldump -uroot -p --all-databases --delete-master-logs
--disable-keys, -K
对于每个表,在 INSERT 语句前后使用 /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和 /*!40000 ALTER TABLE tbl_name ENABLE KEYS */;。
这样可以更快地导入 dump 出来的文件,因为它是在插入所有行后创建索引。该选项只适合 MyISAM 表,默认为打开状态。
示例:mysqldump -uroot -p --all-databases
--dump-slave[=value]
该选项将导致主的 binlog 位置和文件名追加到导出数据的文件中。
设置为 1 时,将会以 CHANGE MASTER 命令输出到数据文件;设置为 2 时,在命令前增加说明信息。
该选项将会打开--lock-all-tables,除非 --single-transaction 被指定。
该选项会自动关闭 --lock-tables 选项。默认值为0。
示例:mysqldump -uroot -p --all-databases --dump-slave=1
--events, -E
导出事件。示例:mysqldump -uroot -p --all-databases --events
--extended-insert, -e
使用具有多个 VALUES 列的 INSERT 语法。这样使导出文件更小,并加快导入时的速度。
默认为打开状态,使用 --skip-extended-insert 取消选项。
示例:mysqldump -uroot -p --all-databases;
mysqldump -uroot -p --all-databases--skip-extended-insert (取消选项)
--fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...
这些选项和 --tab 选项一起使用,和 LOAD DATA INFILE 的 FIELDS 语法类似。
--fields-terminated-by 列以指定符合分隔。
--fields-enclosed-by 输出文件中的各个字段用指定字符包裹。
--fields-optionally-enclosed-by 输出文件中的各个字段用给定字符选择性包裹。
--fields-escaped-by 输出文件中的各个字段忽略给定字符。
不能用于 --databases 和 --all-databases 选项。
示例:mysqldump -uroot -p test test --tab=”/home/mysql” --fields-terminated-by=”#” --fields-enclosed-by=”#” --fields-optionally-enclosed-by=”#” --fields-escaped-by=”#”
--flush-logs, -F
开始导出之前刷新日志。
请注意:假如一次导出多个数据库(使用选项 --databases 或者 --all-databases),将会逐个数据库刷新日志。
当使用 --lock-all-tables 或者 --master-data 时,只刷新一次日志,相应的所有表同时被加上读锁。
因此,如果你想导出操作和刷新日志操作发生在同一时刻,应该将 --flush-logs 和 --lock-all-tables,--master-data 一起使用,或者 --flush-logs 和 --single-transaction 一起使用。
示例:mysqldump -uroot -p --all-databases --flush-logs
--flush-privileges
在导出 mysql 数据库之后,发出一条 FLUSH PRIVILEGES 语句。
为了正确恢复,该选项应该用于导出 mysql 数据库和依赖 mysql 数据库数据的任何时候。
示例:mysqldump -uroot -p --all-databases --flush-privileges
--force, -f
在导出过程中忽略出现的 SQL 错误。
示例:mysqldump -uroot -p --all-databases --force
--help, -?
显示帮助信息并退出。示例:mysqldump --help
--hex-blob
使用十六进制格式导出二进制字段。如果有二进制数据就必须使用该选项。
影响到的字段类型有BINARY、VARBINARY、BLOB。
示例:mysqldump -uroot -p --all-databases --hex-blob
--ignore-table
不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。
例如:--ignore-table=database.table1 --ignore-table=database.table2。
示例:mysqldump -uroot -p --host=localhost --all-databases --ignore-table=mysql.user
--include-master-host-port
在 --dump-slave 产生的 'CHANGE MASTER TO..' 语句中增加 'MASTER_HOST=<host>,MASTER_PORT=<port>'。
示例:mysqldump -uroot -p --host=localhost --all-databases --include-master-host-port
--insert-ignore
在插入行时使用 INSERT IGNORE 语句。
示例:mysqldump -uroot -p --host=localhost --all-databases --insert-ignore
--lines-terminated-by
输出文件的每行用给定字符串划分。
与 --tab 选项一起使用,不能用于 --databases 和 --all-databases 选项。
示例:mysqldump -uroot -p --host=localhost test test --tab=”/tmp/mysql” --lines-terminated-by=”##”
--lock-all-tables, -x
提交请求锁定所有数据库中的所有表,以保证数据的一致性。
这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
示例:mysqldump -uroot -p --host=localhost --all-databases --lock-all-tables
--lock-tables, -l
开始导出前,锁定所有表。用 READ LOCAL 锁定表以允许 MyISAM 表并行插入。
对于支持事务的表,例如 InnoDB,--single-transaction 是一个更好的选择,因为它根本不需要锁定表。
请注意,当导出多个数据库时,--lock-tables 分别为每个数据库锁定表。
因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。
示例:mysqldump -uroot -p --host=localhost --all-databases --lock-tables
--log-error
附加警告和错误信息到给定文件。
示例:mysqldump -uroot -p --host=localhost --all-databases --log-error=/tmp/mysqldump_error_log.err
--master-data
该选项将 binlog 的位置和文件名追加到输出文件中。
如果为 1,将会输出 CHANGE MASTER 命令;
如果为 2,输出的 CHANGE MASTER 命令前添加注释信息。
该选项将打开 --lock-all-tables 选项,除非 --single-transaction 也被指定
(在这种情况下,全局读锁在开始导出时获得很短的时间;
其他内容参考 --single-transaction 选项)。
该选项自动关闭 --lock-tables选项。
示例:mysqldump -uroot -p --host=localhost --all-databases --master-data=1
max_allowed_packet
客户端/服务器通信的最大 buffer size。默认值为 24MB,最大值为 1GB。
示例:mysqldump -uroot -p --host=localhost --all-databases max_allowed_packet=10240
net_buffer_length
TCP/IP 和 socket 连接的缓存大小。
示例:mysqldump -uroot -p --host=localhost --all-databases net_buffer_length=1024
--no-autocommit
使用 autocommit/commit 语句包裹表。
示例:mysqldump -uroot -p --host=localhost --all-databases --no-autocommit
--no-create-db, -n
只导出数据,而不添加 CREATE DATABASE 语句。
示例:mysqldump -uroot -p --host=localhost --all-databases --no-create-db
--no-create-info, -t
只导出数据,而不添加 CREATE TABLE 语句。
示例:mysqldump -uroot -p --host=localhost --all-databases --no-create-info
--no-data, -d
不导出任何数据,只导出数据库表结构。
示例:mysqldump -uroot -p --host=localhost --all-databases --no-data
--no-set-names, -N
关闭 --set-charset 设置,等同于 --skip-set-charset。
示例:mysqldump -uroot -p --host=localhost --all-databases --no-set-names
--opt
等同于 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset。
该选项默认开启,可以用 --skip-opt 禁用。
示例:mysqldump -uroot -p --host=localhost --all-databases --opt
--skip-opt
禁用 --opt 选项。
示例:mysqldump -uroot -p --host=localhost --all-databases --skip-opt
--order-by-primary
按主键导出每个表的记录,或者按照第一个唯一键,对每个表的记录进行排序。
在导出 MyISAM 表到 InnoDB 表时有用,但会使得导出工作花费很长时间。
示例:mysqldump -uroot -p --host=localhost --all-databases --order-by-primary
--pipe, -W
在 windows 系统,使用命名管道连接 mysql。该选项只适用于服务器支持命名管道连接的情况。
示例:mysqldump -uroot -p --host=localhost --all-databases --pipe
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用的连接协议,包括:tcp, socket, pipe, memory。
示例:mysqldump -uroot -p --host=localhost --all-databases --protocol=tcp
--quick, -q
不缓冲查询,直接导出到标准输出。默认为打开状态,使用 --skip-quick 取消该选项。
示例:mysqldump -uroot -p --host=localhost --all-databases;
mysqldump -uroot -p --host=localhost --all-databases --skip-quick
--quote-names, -Q
使用(`)引起表和列名。默认为打开状态,使用 --skip-quote-names 取消该选项。
示例:mysqldump -uroot -p --host=localhost --all-databases;
mysqldump -uroot -p --host=localhost --all-databases --skip-quote-names
--replace
使用 REPLACE INTO 取代 INSERT INTO。
示例:mysqldump -uroot -p --host=localhost --all-databases --replace
--result-file=file_name, -r file_name
直接输出到指定文件中。该选项应该用在使用回车换行的系统上(例如:DOS,Windows)。
该选项确保只有一行被使用。
示例:mysqldump -uroot -p --host=localhost --all-databases --result-file=/tmp/mysqldump_result_file.txt
--routines, -R
导出存储过程以及自定义函数。
示例:mysqldump -uroot -p --host=localhost --all-databases --routines
--set-charset
添加 'SET NAMES default_character_set' 到输出文件。
默认为打开状态,使用 --skip-set-charset 关闭选项。
示例:mysqldump -uroot -p --host=localhost --all-databases;
mysqldump -uroot -p --host=localhost --all-databases --skip-set-charset
--dump-date
将导出时间添加到输出文件中。默认为打开状态,使用 --skip-dump-date 关闭选项。
示例:mysqldump -uroot -p --host=localhost --all-databases;
mysqldump -uroot -p --host=localhost --all-databases --skip-dump-date
--socket, -S
指定连接 mysql 的 socket 文件位置,默认路径 /tmp/mysql.sock。
示例:mysqldump -uroot -p --host=localhost --all-databases --socket=/tmp/mysqld.sock
--tab=dir_name, -T dir_name
为每个表在给定路径创建 tab 分割的文本文件。
注意:仅仅用于 mysqldump 和 mysqld 服务器运行在相同机器上。
示例:mysqldump -uroot -p --host=localhost test test --tab="/home/mysql"
--where='where_condition', -w 'where_condition'
只转储给定的 WHERE 条件选择的记录。
请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
示例:mysqldump -uroot -p --host=localhost --all-databases --where=” user=’root’”
--triggers
导出触发器。该选项默认启用,用 --skip-triggers 禁用它。
示例:mysqldump -uroot -p --host=localhost --all-databases --triggers
--tz-utc
在导出顶部设置时区 TIME_ZONE='+00:00',以保证在不同时区导出的 TIMESTAMP 数据或者
数据被移到其他时区时的正确性。
示例:mysqldump -uroot -p --host=localhost --all-databases --tz-utc
--verbose, -v
输出多种平台信息。
--version, -V
输出 mysqldump 版本信息并退出。
--xml, -X
导出 XML 格式。
示例:mysqldump -uroot -p --host=localhost --all-databases --xml
--set-gtid-purged=value
该选项通过是否添加 SET @@global.gtid_purged 语句来控制是否向导出文件中写入全局事务ID(GTID)。
这个选项还可能导致在输出中写入一条语句,该语句在重新加载转储文件时禁用二进制日志记录。
该选项的值可能为:OFF、ON、AUTO。默认值为 AUTO。
各项取值含义如下所示:
OFF:不向输出文件中添加 SET 命令(跳过导 gtid);
ON:向输出文件中添加 SET 命令。如果服务端不支持 GTIDs 会报错;
AUTO:如果服务端支持 GTIDs,会向输出文件中添加 SET 命令。
目前有 0 条留言 其中:访客:0 条, 博主:0 条