一、mysql基本操作:
登录:
mysql -hlocalhost -uroot -p #然后输入密码
常规操作:
show databases;
use demo;
show tables;
// TODO DML语句 CRUD
insert into table_name(...) values (...);
update table_name set ... where ...
delete from table_name where ...
quit;
二、重启mysql:
systemctl restart(stop/start) mysqld.service
(service mysqld start/stop/restart )
三、备份:
shell:mysqldump -uroot -p database_name > bak_file_name;
shell:mysqldump -uroot -p -l -F database_name > bak_file_name;
-l 表示给所有表加读锁(也就是当存在其他用户对数据进行修改,但未提交时,等待其事务提交。)
-F 表示备份后,创建新的日志文件(binlog日志文件序列增1,这样有助于进行恢复时,进行重做日志恢复,以进行完全的数据库恢复。即:从备份文件恢复+备份之后所有的操作记录重做 = 故障时的数据库状态。) 该功能需要启用二进制增量日志,参考本文第五章
四、还原:
shell:mysql -uroot -p database_name < bak_file_name;
# 这是基于文件的还原,注意使用的命令是mysql。
shell:mysqlbinlog [mysql-bin].000007 | mysql -u root -p database_name # 然后输入密码。
# [mysql-bin]是自定义的日志文件名称,
# 000007如果是-F产生的新日志,则可以作为文件还原后的后续操作日志恢复。参考第三章-F的说明。
shell:mysqlbinlog --stop-datetime="2019-07-05 01:00:00" /[path]/mysql-bin.000007 | mysql -uroot -p
# 然后输入密码,该操作是基于时间点的恢复。
# 也就是从mysql-bin.000007日志的开头,执行重做至 2019-07-05 01:00:00 为止。
# 如果是 start-datetime 则是指定时间开始 至文件末尾。
# 同时指定start和stop ,则进行区间重做。
shell:mysqlbinlog [--start-datetime="2019-07-05 01:00:00" --stop-datetime="2019-07-05 02:00:00"]mysql-bin.000007 > /[path]/mysql_restore.sql
# 创建文本文件, 用于查找错误语句的位置
shell:mysqlbinlog --stop-position="123789" /[path]/mysql-bin.000007 | mysql -uroot -p
# 基于位置的恢复,与时间同理,只是参数使用,使得恢复更加具体。
注意1:备份用mysqldump工具命令, 还原用mysql命令。
注意2:bak_file_name 可以是 .sql .dmp拓展名类型的文件。
参考:深入浅出MySQL(第二版) P436-440
五、增量日志(备份)配置文件配置:
my.cnf文件[mysqld]添加:
server-id=1
log-bin=/var/lib/mysql/mysql-bin
#配置后需要对数据库进行重启,参考第二章。
Oracle备份与恢复:https://blog.csdn.net/Bof_jangle/article/details/51366563
Oracle日志文件说明(重做日志的作用,mysql与其是类似的,可以参考):https://blog.csdn.net/Bof_jangle/article/details/51220563