1.MySQL主从复制概念

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

2.MySQL中复制的优点包括

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

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

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

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

3.Replication的原理

前提是作为主服务器角色的数据库服务器必须开启二进制日志

centos mysql 主从复制 mysql实现主从复制_mysql

主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面。

从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。

从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

每个从站(从服务器)都会记录二进制日志坐标:


文件名 文件中它已经从主站读取和处理的位置。


由于每个从服务器都分别记录了自己当前处理二进制日志中的位置,因此可以断开从服务器的连接,重新连接然后恢复继续处理。

4.Mysql主从配置步骤

主机配置 修改配置文件: vi /etc/my.cnf


#主服务器唯一ID server-id=1 #启用二进制日志 log-bin=mysql-bin # 设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字 #设置logbin格式 binlog_format=STATEMENT


从机配置 修改配置文件: vi /etc/my.cnf


#从服务器唯一ID server-id=2 #启用中继日志 relay-log=mysql-relay


主机、从机重启 MySQL 服务


systemctl restart mariadb.service


主机从机都关闭防火墙


systemctl stop firewalld.service


在主机上建立帐户并授权 slave


#在主机MySQL里执行授权命令 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123'; #查询master的状态 show master status; MariaDB [(none)]> show master status; +------------------+----------+--------------+--------------------------+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | +------------------+----------+--------------+--------------------------+ | mysql-bin.000002 |      245 | studentdb   | mysql,information_schema | +------------------+----------+--------------+--------------------------+ 1 row in set (0.00 sec)


记录下File和Position的值,执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

在从机上配置需要复制的主机


#复制主机的命令 CHANGE MASTER TO MASTER_HOST='主机的IP地址', MASTER_USER='slave', MASTER_PASSWORD='123123', MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值; #启动从服务器复制功能 start slave; #查看从服务器状态 show slave status\G;


示例:

centos mysql 主从复制 mysql实现主从复制_linux_02

centos mysql 主从复制 mysql实现主从复制_MySQL_03


#下面两个参数都是Yes,则说明主从配置成功! # Slave_IO_Running: Yes # Slave_SQL_Running: Yes


主机新建库、新建表、 insert 记录, 从机复制

centos mysql 主从复制 mysql实现主从复制_MySQL_04

如何停止从服务复制功能


stop slave;


如何重新配置主从


stop slave; reset master;