mysql备份格式_MySQL备份

1. 普通备份和还原

mysqldump 备份:

备份:

mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份整个库)

mysqldump -u 用户名 -p 数据库名 表名 > /备份路径/备份文件名(备份单个表)

备份多个库: --databases 库1,库2

备份所有库:--all-databases

备份多个表:库名 表1 表2

还原:mysql 数据库 < 备份文件

注意:还原时,若导入的是某个表,还要指定导入到哪个库中

mysqlhotcopy 备份:

备份:mysqlhotcopy --flushlog -u='用户' -p='密码' --regexp=正则 备份目录

还原:cp -a 备份目录 数据目录(/var/lib/mysql 或者自定义目录)

mysqldump 和 mysqlhotcopy 实例:

mysql备份和还原

把数据库 test 备份到 /dbbak 目录下

#mysqldump-uroot -p test > /dbbak/test.sql

模拟数据库test 误删(删除数据库test)

#mysql>drop database test;

通过 test.sql 文件还原

#mysql-uroot -p test

备份多个数据库(--databases)

#mysqldump-uroot -p --databases aa test >abc.sql

还原

#mysql-uroot -p

备份有规则的数据库

#mysqlhotcopy--flushlog -u='root' -p='123456' --regexp=^a /dbbak/还原cp -a a1 a2 a3 aa /usr/local/mysql/data/

mysql-binlog 日志备份

二进制日志(log-bin 日志):所有对数据库状态更改的操作(create、drop、update等)

修改my.cnf 配置文件 开启binlog 日志记录功能

# vim /etc/my.cnf

log-bin=mysql-bin #启动二进制日志

按时间还原:

--start-datetime

--stop-datetime

格式:

mysqlbinlog --start-datetime 'YYYY-MM-DD HH:MM:SS' --stop-datetime 'YYYY-MM-DD HH:MM:SS' 二进制日志 |mysql -uroot -p

按文件大小还原:

--start-position

--stop-position

mysql-binlog 日志备份示例:

开启二进制日志

f83b01b129d0bdde20ec6c643c8e2cd8.png

查看二进制日志

e762d88d679ff4d0be45c797e9efb7c8.png

按时间还原:

[root@localhost /usr/local/mysql/data]# mysqlbinlog --start-datetime='2019-12-20 9:57:21' --stop-datetime='2019-12-20 9:58:18' mysql-bin.000006 | mysql -uroot -p

按大小还原:

2e790f77964a346e0fb252eed9680b95.png

2. 主从备份

前提条件:安装mysql,开启二进制日志

c3436ccdf15c14f0d60576a68ba7f341.png

b89e7594b4d5bade983668aa1d29297b.png

[root@centos2 ~]# vim /etc/my.cnf

...

[mysqld]

...

log-bin=mysql-bin

server-id=129...

在主服务器上授权,从服务器保存授权的信息

942bef091b25011beff3b5a1b91120aa.png

06fb64cdbf46ec9d338f8c7f3d16f5f5.png

4fcb642cd8eb83d999d538bd3a2d8feb.png

mysql> grant replication slave on *.* to root@'192.168.80.131' identified by '123456';

mysql>change master to-> master_user='root',-> master_password='123456',-> master_host='192.168.80.129',-> master_log_file='mysql-bin.000014',-> master_log_pos=391;

之后在从服务器上会产生授权信息文件

d7e698141a8845d8cf40cfff772c99fb.png

5160fd381ed2bb86f90e79a1b2800296.png

开启从服务器 start slave,并查看

start slave; 开启从服务器

show slave status\G; 查看从服务器的内容

91c835efe869e9f2ad1a8d914ceb99e7.png

测试

86ba2b7039e243191944ed83627c825e.png

458ee3984df700b111f5ead562f3964d.png

3. 主主备份

3.1 以129 为主,131 为从配置一遍主从

在主配置文件中配置(开启二进制日志和其他内容)

5aef7b002301c203c40a8beda6e82234.png

3.2 在131 上做相同的配置

a1d7bcbb043981bdb00d0557638dcf77.png

replicate-do-db=test

#在从服务器上设置需要同步的数据库,要同步多个库时可以写多行,每行一个。

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

#指定哪个数据库不用同步

启动MySQL服务

129为主,131为从

主服务授权

d314e93763f3c5970920b6a50fd05560.png

从服务器保存授权信息

3df8d380563ba60d09212c4ac74beeb1.png

131为主,129为从

主服务器授权

a27563dc5dcf86f55e84e65459f06111.png

从服务器保存授权信息

a15d79e6a43587110ea1dd782849131c.png

129 和 131 都执行 start slave(互为主从)

d982644185dff11288861c29b64edb09.png

测试

7ccecf3e42906088a4a5a3c90c1a28ab.png

4. 一主多从

与配置一主一从类似,配置从服务器时,注意从服务器的server-id 不要相同,

授权:

mysql> grant replication slave on *.* to root@'%' identified by '123456';

从服务器保存授权信息:

mysql>change master to-> master_user='root',-> master_password='123456',-> master_host='192.168.80.130',-> master_log_file='mysql-bin.00006',-> master_log_pos=265;

测试

5. 多主一从

5.1 主服务器配置

主服务器开启二进制日志,启动服务,注意每台服务器的server-id 不同

[root@localhost ~]# vim /etc/my.cnf

...

log-bin=mysql-bin

server-id=134...

授权

mysql> grant replication slave on *.* to root@'192.168.80.136' identified by '123456';

5.2 从服务器配置

修改配置文件

[root@localhost ~]# vim /etc/my.cnf

#插入以下内容

[mysql_multi]

mysqld= /usr/local/mysql/bin/mysql_safe

mysqladmin= /usr/local/mysql/bin/mysqladmin

user=root

password= 123456[mysqld134]

port= 3306datadir=/var/lib/mysqla/socket= /tmp/mysql.sock1

pid-file = /var/lib/mysqla/134.pid

user=mysql

server-id = 136[mysqld135]

port= 3307datadir=/var/lib/mysqlb/socket= /tmp/mysql.sock2

pid-file = /var/lib/mysqla/135.pid

user=mysql

server-id = 136

初始化数据库,创建目录 mysqla,mysqlb

[root@localhost /usr/local/mysql]# ./scripts/mysql_install_db --datadir=/var/lib/mysqla --user=mysql

[root@localhost/usr/local/mysql]# ./scripts/mysql_install_db --datadir=/var/lib/mysqlb --user=mysql

设置 mysqla,mysqlb 目录及以下文件的属主为mysql(防止出现权限问题)

[root@localhost /var/lib]# chown -R mysql.mysql mysqla

[root@localhost/var/lib]# chown -R mysql.mysql mysqlb

[root@localhost/usr/local]# chown -R mysql mysql/

启动从服务器线程

[root@localhost ~]# mysqld_multi --defaults-file=/etc/my.cnf start 134[root@localhost~]# mysqld_multi --defaults-file=/etc/my.cnf start 135

e20fb8b78ff25b4e539edb5672857fd2.png

登录并保存授权信息

[root@localhost ~]# mysql -P 3306 -S /tmp/mysql.sock1

[root@localhost~]# mysql -P 3307 -S /tmp/mysql.sock2

mysql>change master to-> master_user='root',-> master_password='123456',-> master_host='192.168.80.135',-> master_log_file='mysql-bin.000009',-> master_log_pos=566;

Query OK,0 rows affected (0.03sec)

mysql>start slave;

Query OK,0 rows affected (0.00sec)

mysql> show slave status\G;

mysql>change master to-> master_user='root',-> master_password='123456',-> master_host='192.168.80.134',-> master_log_file='mysql-bin.000009',-> master_log_pos=566;

Query OK,0 rows affected (0.04sec)

mysql>start slave;

Query OK,0 rows affected (0.00sec)

mysql> show slave status\G;

测试

dbdc5ca434125aa43b0cabd71104c490.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值