mysql 主从 mysqldump_mysqlDump数据库备份 详解 主从复制

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

1、简介

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

主从复制目的:

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

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

原理图:

af7dd0f5df3a048158e4f0faa34ed870.png

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

一:mysql数据库的备份

配置主服务器(master)

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

#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:

#service mysqld restart

3、登录MySQL服务器。

#mysql -uroot -p

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

mysql>CREATE USER 'user'@ 'X.X.X.X' IDENTIFIED BY 'password';

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

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

mysql>FLUSH TABLES WITH READ LOCK;

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

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

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

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

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

b9b879f383038b5435444d71dbcfaab0.png

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

yum -y install openssh-clients

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

1906138f951bcaee502668996aa44375.png

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

mysql>SHOW MASTER STATUS;

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

d2e70a05bdc24af279c4a21de7141b48.png

8、解锁数据表。

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:~$

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

存储公私钥的文件夹位置,如果不输入,则默认为~/.ssh/,文件名则默认是id_rsa和id_rsa.pub

使用该公私钥时是否需要密码,如果不输入则表示不需要密码

再次确认是否需要密码

然后将 /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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值