Linux 服务器mysql数据库主从复制搭建

写在前面的话

  • 为什么需要主从复制?

    • 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

    • 做数据的热备

    • 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

  • 什么是mysql的主从复制?

    • MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。

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

  • mysql复制原理

    • master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;

    • slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件

    • 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

      扫描二维码关注公众号,回复: 11655016 查看本文章
    • MySQL 主从复制原理MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:

    在这里插入图片描述

一、主备工作

配置名称 Value
系统版本 ubuntu1604
mysql版本 mariadb-server-10.0

安装Mariadb数据库并设置root密码为Root@123 , 主从服务器的安装方法都是一样的

apt-get update -y && apt install mariadb-server-10.0 -y
mysql -uroot -e “set password for root@‘localhost’ = password(‘Root@123’);”
mysql -uroot -e “flush privileges;”

二、配置主服务器A

1、修改MySQL(Mariadb)数据库的配置文件,在配置文件的[mysqld]节点下新增server-id和log-bin参数

Debian的Mariadb配置文件是/etc/mysql/mariadb.conf.d/50-server.cnf

打开该配置文件,并找到[mysqld]节点,在该节点下增加两个参数

server-id=1
log-bin=mysql-bin

注意:如果节点下之前就有上面两个参数则不需要重新添加。server-id=1中的1是唯一标识,大家可以自行修改成其它数字,只要不跟后面的从服务器的id相同即可。log-bin表示的是日志文件,mysql-bin是文件名,也是可以大家随意修改的。

修改后如下图:
在这里插入图片描述
图 2.1

2、设置MySQL(Mariadb)数据库允许远程连接

把/etc/mysql/mariadb.conf.d/50-server.cnf配置文件中的bind-address 字段解释:
bind-address = 127.0.0.1只允许本机连接
bind-address = 0.0.0.0允许任意机器连接

3、登录MySQL(Mariadb)数据库,添加给从服务器用来登录和同步数据使用的账号

mysql -uroot -pRoot@123
grant replication slave on . to repl@'%' identified by 'Repl@123';

注意: 输入结尾的分号,其中.表示所有数据库,repl是用户名,Repl@123是密码,%表示允许所有IP连接,如果想只允许指定IP进行同步,则可以将%替换成具体的IP,如果是想允许某个IP段访问,则可以改成这种格式:192.168.177.%,表示允许192.168.177.1-192.168.177.255的IP进行访问。

4、添加完成后输入exit退出数据库,然后systemctl restart mysql重启数据库服务

5、登录MySQL(Mariadb)数据库

mysql -uroot -pRoot@123

show master status;

在这里插入图片描述
图 2.2

记录下File和Position的值,后面配置从服务器的时候需要用到(本文中File: mysql-bin.000208, Position: 725031)。到此为止,主服务器的配置就已经完成了。

三、配置从服务器B

1、修改MySQL(Mariadb)数据库的配置文件,在配置文件的[mysqld]节点下新增server-id参数

Debian的Mariadb配置文件是/etc/mysql/mariadb.conf.d/50-server.cnf

打开该配置文件,并找到[mysqld]节点,在该节点下增加两个参数

server-id=2

注意:如果节点下之前就有上面两个参数则不需要重新添加。server-id=2 不要和服务器A 中的配置重复。

2、配置主服务器的连接账号密码等信息

mysql -uroot -pRoot@123

change master to master_host=’ 主服务器A的IP’,master_port=3306,master_user=‘repl’,master_password=‘Repl@123’,master_log_file=‘mysql-bin.000208’,master_log_pos=725031;

log_file就是图 2.2 主服务器File的值,master_log_pos 图 2.2 就是主服务器Position的值。

接着执行start slave;启动同步功能

然后执行show slave status \G;查看同步状态

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31024251/article/details/108096366