文档章节

mysqlDump数据库备份 详解 主从复制

王小盼
 王小盼
发布于 2017/05/03 18:06
字数 1102
阅读 20
收藏 0

对于定时任务的创建crontab 详解:https://my.oschina.net/u/2601842/blog/891262

我们为什么要用主从复制?

1、简介

我们为什么要用主从复制?

主从复制目的:

可以做数据库的实时备份,保证数据的完整性;

可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能。

原理图:

从上图可以看出,同步是靠log文件同步读写完成的。

 

 

 

 

 

 

 

一:mysql数据库的备份

    配置主服务器(master)

 

1、编辑数据库配置文件my.cnf,一般在/etc/目录下。

  1. #vi /etc/my.cnf

在[mysqld]的下面加入下面代码:

#开启二进制日志
log-bin  
#主服务器id号
server-id=master 
#指定对db_nameA记录二进制日志
binlog-do-db=test
#指定不对db_namB记录二进制日志
#binlog-ignore-db=mysql 
#(不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。)

server-id=master中的master可以任定义,只要是唯一的就行。
binlog-do-db=test是表示只备份test。
binlog_ignore_db=mysql表示忽略备份mysql。
不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。
2、然后重启MySQL:

  1. #service mysqld restart

3、登录MySQL服务器。

  1. #mysql -uroot -p

在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把X.X.X.X替换为从服务器的IP。

  1. mysql>CREATE USER 'user'@ 'X.X.X.X' IDENTIFIED BY 'password';
  2. mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';

4、执行以下命令锁定数据库以防止写入数据。

  1. mysql>FLUSH TABLES WITH READ LOCK;

5、退出mysql命令行,导出数据库(不用进入mysql执行、直接在根目录就可以执行)

  1. #mysqldump -u root -proot --all-databases  --lock-tables=false  -- > /root/all.sql

        若你的服务器root目录下出现此文件、则说明备份成功

6、使用scp命令传输数据库文件all.sql到从服务器。192.168.150.192为你的从服务器地址

  1. #scp /root/all.sql root@192.168.150.192:/root


 

注:此时的scp如果你的服务器没有这个命令、那么需要先安装后再进行使用

yum -y install openssh-clients

且,主从服务器都需要安装此环境

7、再次连接数据库进入mysql命令行查看master状态。

  1. mysql>SHOW MASTER STATUS;

请记下显示的信息,配置从服务器会用到。

8、解锁数据表。

  1. mysql>UNLOCK TABLES;

--------------------------------------------------------------------------------------------------

扩展:

 

扩展1:远程scp传输备份sql文件(若需要实现自动或者定时的去备份数据库,那么需要如下配置)

scp /opt/test.sql root@192.168.150.92:/backUpForMysql/test.sql

当执行的时候会需要你输入从服务器的登录密码才能进行下一步、那么就需要通过一些设置去跳过这个步骤。

最简单的方法是用SSH连接

 

在Linux上使用ssh-keygen工具来生成公私钥对,在man手册中关于ssh-keygen工具的说明如下:

ssh-keygen : authentication key generation, management and conversion
 -t    type
     Specifies the type    of key to create.  The possible    values are 'rsa1' for protocol version 1 and 'dsa', 'ecdsa', 'ed25519', or 'rsa' for protocol version 2.

在上面提到了ssh-keygen支持rsa1、dsa、ecdsa、ed25519和rsa这几种非对称加密算法,其中最常用的就是RSA和DSA,比如使用RSA算法来生成公私钥对的过程如下:

nfer@nfer-VirtualBox:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nfer/.ssh/id_rsa): 
Created directory '/home/nfer/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nfer/.ssh/id_rsa.
Your public key has been saved in /home/nfer/.ssh/id_rsa.pub.
The key fingerprint is:
16:77:45:71:31:7c:67:4f:91:09:07:74:4d:30:83:48 nfer@nfer-VirtualBox
The key's randomart image is:
+--[ RSA 2048]----+
|         .E..*@XO|
|          . ..oBB|
|        . . .  o+|
|         o .    .|
|        S        |
|       .         |
|                 |
|                 |
|                 |
+-----------------+
nfer@nfer-VirtualBox:~$

注意上面有三处需要输入信息,分别是:

 

  1. 存储公私钥的文件夹位置,如果不输入,则默认为~/.ssh/,文件名则默认是id_rsa和id_rsa.pub
  2. 使用该公私钥时是否需要密码,如果不输入则表示不需要密码
  3. 再次确认是否需要密码

 

 然后将 /root/.ssh/ 目录中的 id_rsa.pub 文件复制到 服务器 B 的 /root/.ssh/ 目录中,并改名为 authorized_keys。 
 

scp .ssh/id_rsa.pub root@192.168.0.2:/root/.ssh/authorized_keys

之后的scp传输到这个服务器的所有传输都将是免密传输的。

 

扩展2:

开机启动:

 vi /etc/rc.local

#开机启动crond
 /etc/rc.d/init.d/crond start

完成!

 

 

 

 

操作:

[root@dev ~]#  service crond stop
[root@dev ~]#  service crond start
[root@dev ~]#  service crond restart

 

© 著作权归作者所有

王小盼

王小盼

粉丝 11
博文 56
码字总数 29429
作品 0
闵行
后端工程师
私信 提问
【目录】mysql 学习

数据库排行榜 http://db-engines.com/en/ranking [MySQL运维] mysql 5.1 升级编译安装5.6把原MyISAM表转换成InnoDB,并全局备份一次【原创】 http://990487026.blog.51cto.com/10133282/169...

990487026
2015/09/09
0
0
mysql主从和半主从

mysql主从和半主从 Mysql主从复制(Mysql主从复制就是为了保障数据的数据安全性和安全性) MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管...

stevenhuhu
2014/04/11
0
0
mysql多源复制详解

大家应该知道,mysql比起其他数据库,最大的特色是就是主从复制,不过5.7之前的版本最多就只支持一主多从的复制方式,对于一些统计类的需求,就需要跨库,这是比较麻烦的事情,以往只能交由数...

arthur376
2017/07/04
0
0
8种手动和自动备份MySQL数据库的方法

1、使用MySQLDump进行MySQL备份 mysqldump是MySQL内置的工具,允许用户将数据库指定不同的选项备份到文件、服务器,甚至是压缩gzip文件中。mysqldump实用程序灵活,快速,可执行高级备份,并...

寰宇01
03/11
0
0
【20180719】记录一次MariaDB主从复制由于tokudb出现主键1062错误问题

记一次MariaDB主从复制的搭建 环境: 系统: CentOS release 6.3 内核: 2.6.32-431.23.3.el6.centos.plus.x86_64 数据库版本: 问题描述: 使用mysqldump备份工具在master上面进行全备,然后根据...

liuhuang9496
2018/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
17分钟前
3
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
11
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部