美文网首页
MySQL主从复制

MySQL主从复制

作者: 光明_7c13 | 来源:发表于2019-08-15 21:59 被阅读0次

MySQL Replication
主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

复制是异步的 从站不需要永久连接以接收来自主站的更新。

MySQL中主从复制的有点包括:

  • 横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显着提高了越来越多的从设备的读取速度。

  • 数据安全性 - 因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。

  • 分析 - 可以在主服务器上创建实时数据,而信息分析可以在从服务器上进行,而不会影响主服务器的性能。

  • 远程数据分发 - 您可以使用复制为远程站点创建数据的本地副本,而无需永久访问主服务器。

配置步骤

1.在主服务器上,必须启用二进制日志记录并配置唯一的服务器ID,需要重启服务器
编辑主服务器的配置文件

[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
一般主服务器上id为1

注意:
如果省略server-id(或者将其显示设置为0),主服务器将
拒绝来自从服务器的任何连接。

创建日志目录并且赋予MySQL权限

mkdir /var/log/mysql
chown mysql.mysql -R /var/log/mysql

重启服务

systemctl restart mysqld

为了在使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性,
您应该在master my.cnf文件中使用以下配置项:

innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

需要确保主服务器上skip_networking选项处于OFF关闭状态,OFF是默认值。
如果是启用的,则主站和从站无法通信,并且复制失败

show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| skip_networking | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

2.我们需要创建一个专门用于复制数据的用户
每当主服务器内容更新时,从服务器需要使用主服务器的MySQL用户名和密码连接到主站

在主服务器上创建一个用户,并且赋予该用户复制的权限

create user 'repl'@'%';
greate    replication    slave    on    *.*     to    'repl'@'%'   identified  by  'QFedu123!';

3.在从服务器上使用刚才的用户进行测试连接

mysql  -urepl  -P'QFedu123!'  -h主服务器ip

主服务器中有数据

  • 如果在启动复制之前有现有数据需要与从属设备同步,请保持客户端正常运行,以便锁定保持不变。这可以防止进行任何进一步的更改,以便复制到从站的数据与主站同步。
    1.在主服务器中导出现有的数据
mysqldump  -u用户名  -p密码  --all-databases  --master-data=1 > dbdump.db

这里的用户是主服务器的用户

如果不使用 --master-data 参数,则需要手动锁定单独会话中的所有表。

2.从主服务器中使用 scp 或 rsync 等工具,把备份出来的数据传输到从服务器中。
在主服务中执行如下命令

scp  dbdump.db root@mysql-slave1:/root/

3.配置从服务器,并重启
在从服务器 上编辑其配置文件 my.cnf 并添加如下内容:

[mysqld]
server-id=2

4.导入数据到从服务器,并配置连接到主服务器的相关信息
登录到从服务器上,执行如下操作

/*导入数据*/
mysql> source   /root/fulldb.dump
或者
mysqldump -u   -p   

在从服务器配置连接到主服务器的相关信息

mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',  -- 主服务器的主机名(也可以是 IP) 
MASTER_USER='repl',                  -- 连接到主服务器的用户
MASTER_PASSWORD='123';        == 到主服务器的密码

使用mysqldump -u -p 这条命令恢复数据库时
需要添加
master_log_file='mysql-bin.000001'
master_log_pos=111
这两条配置 需要在备份的库中查找到

5.启动从服务器的复制线程

mysql> start slave;
Query OK, 0 rows affected (0.09 sec)

检查是否配置成功

show slave status\G;

相关文章

  • MySQL如何配置主从复制,如何修复主从复制出现的异常?

    MySQL如何配置主从复制,如何修复主从复制出现的异常? 一、什么是Mysql主从复制 MySQL主从复制是其最重...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • Mysql 主从复制

    Mysql 主从复制 MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • mysql主从复制

    构建MySQL主从复制 MySQL的主从复制和mysql的读写分离两者有着紧密联系,数据的读写分离实在主从复制的基...

  • Spring Data JPA 使用主从数据源

    Mysql 配置主从复制 参考:Mysql主从复制-半同步复制[https://www.jianshu.com/p...

  • MySQL集群篇

    1 集群之主从复制 1.1 主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群...

  • 深度探索MySQL主从复制原理

    概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什...

  • 【转】MySQL 8.0复制改进

    1 - MySQL主从复制模型 我们从最基本的主从复制模型开始说起,下图是最经典的MySQL主从复制架构图: My...

  • mysql主从代理

    mysql主从复制+读写分离 环境: mysql主:193.168.1.1 mysql从:193.168.1.2 ...

网友评论

      本文标题:MySQL主从复制

      本文链接:https://www.haomeiwen.com/subject/yjitsctx.html