Linux下mysql数据库备份

时间:2021-12-23 03:16:54

1.操作环境编辑本段

1.数据库版本5.7.19;

2.Linux版本Centos7.3

 

2.MySQL启动、连接、关闭相应操作编辑本段

前提:Linux操作系统中已经安装了MySQL本机环境:my.cnf文件使用的目录是 /tmp/my.cnf;数据库存放的目录是/database

 mysql数据库启动

# mysqld --defaults-file='/tmp/my.cnf' --datadir='/database/' --user=mysql &Linux下mysql数据库备份启动指定的数据库服务

 

 

 

其中--defaults-file='/tmp/my.cnf' 指定启动数据库的配置文件 --datadir指定数据库目录 --user 指定用户  最后加了个& 是让其  在后台执行。

 

MySQL连接

mysql连接有两种方式一种是socket模式一种是tcp/ip模式socket模式:MySQL没有指定参数时默认使用socket模式登陆 命令:mysql -uroot -p --socket=/database/mysql.sock
tcp/ip模式:MySQL指定参数-h会使用tcp/ip模式登陆

命令: mysql -uroot -p  -h127.0.0.1  --port=3307

关闭MySQL进程

 mysqladmin -uroot -p  --socket=/database/mysql.sock  shutdown
Linux下mysql数据库备份关闭MySQL连接详细步骤



3.备份方式编辑本段

dump文件备份

 题外话:Ctrl+R在Linux中是快速搜索到之前敲过的命令

 在配置文件备份之前先查看mysql服务是否正在运行,如果没有正在运行的服务应该启动服务。

Linux下mysql数据库备份查看MySQL服务是否启动

 

 

 

备份dump文件有几种备份的方式

 1.常规备份不含有创建数据库的语句

 mysqldump -uroot -p --routines --socket="/database/mysql.sock" virtualexperiment >vir1.sql

Linux下mysql数据库备份常规备份不含有创建数据库的sqlLinux下mysql数据库备份常规备份数据内容

 

 

 

 

 

 

 

 



 2.带有--databases参数的备份(是创建了个数据库)

 mysqldump -uroot -p --routines --socket="/database/mysql.sock" --databases virtualexperiment >vir2.sql

Linux下mysql数据库备份带有--database参数的备份Linux下mysql数据库备份带有database参数的备份内容

 

 

 

 

 

 

 

 

 

 


3.带有--add-drop-database --databases的备份(试用于测试环境,可以快速将数据库回复到测试之前的数据库)

mysqldump -uroot -p --routines --socket="/database/mysql.sock" --add-drop-database --databases virtualexperiment >vir3.sql

Linux下mysql数据库备份带有-add-drop-database参数的备份Linux下mysql数据库备份带有-add-drop-database备份的内容
















4.其他参数   MySQLdump其他参数参照官方文档
5.模拟dump文件备份

   先删掉mysql> drop database virtualexperiment; 数据库

Linux下mysql数据库备份删掉数据库之后剩余的库

 

  



 

 

 

 

  然后导入自带创建库的vir3.sql

  [root@localhost database]# mysql -uroot -p --socket=/database/mysql.sock databases   < vir3.sql

Linux下mysql数据库备份恢复之后的数据库

 

 

 

 

 

 

 

 

binlog备份(增量备份 和dump搭配使用)


配置binlog参数在my.cnf中 :log_bin=/database/binlog  指定binlog的路径 server-id=1 这个id可以任意给Linux下mysql数据库备份binlog日志


 

 

 



binlog的binlog_format=statement和row 默认是row。binlog日志中记录的是改变的数据像insert和update操作。而statement和row格式出来的binlog区别:statement是人可以看懂的语句。row不是人看的。哈哈。


查看某个binlog:mysqlbinlog binlog.000002

以下拿binlog.000002举例

 

Linux下mysql数据库备份查看binlog


 

 

 

 

 

 


 binlog日志可以选取某个时间段或者起始位置和终止位置来进行数据恢复  详细参数

Linux下mysql数据库备份截取某个位置的数据

 

 

 

 

在将处理过的binlog导回相应的数据库mysql -uroot -p --socket=/database/mysql.sock virtualexperiment < binlog002.sql


binlog重新生成的时机:1. max_binlog_cache_size 达到上限

  2.重启mysql 

Linux下mysql数据库备份binlog 缓冲长度超出会重新建立







my.cnf参数编辑本段

# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mskip-host-cacheskip-name-resolvedatadir=/databasesocket=/database/mysql.socksecure-file-priv=/database/user=mysqlport=3307log_bin=/database/binlogserver-id=1#binlog_format=statement# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
log-error=/database/mysqld.logpid-file=/database/mysqld.pid
##add by ybinnodb_buffer_pool_size=256MB