专栏首页JavaEEMySQL主从复制

MySQL主从复制

本文将手把手教你怎么配置MySQL的主从。

一、环境准备

  • 主机:192.168.0.101
  • 从机:192.168.0.105

首先这主机和从机上安装MySQL,大家可以安装mariadb,更简单一点儿,安装命令如下:

# 安装
yum install -y mariadb-server
# 启动
systemctl start mariadb
# 设置密码
mysql_secure_installation

注意主机和从机ip要能互相ping通,mariadb的版本要一致。

二、修改配置

1. 修改主机配置:

执行命令find / -name my.cnf,找到配置文件的目录,打开配置文件,主要是在[mysqld]修改如下两个配置。

  • server-id:新增这个配置,这是主机的唯一id标识,一般主机的是1,从机的是2;
  • log-bin:必须启用二进制日志文件,log-bin=自己mysql路径/mysqlbin

其他的都是可选配置,我的主机完整配置如下:

[mysqld]
#必须
server-id=1
#必须,日志文件目录
log-bin=/var/lib/mysql/mysqlbin
#可选,err日志文件目录
log-err=/var/lib/mysql/mysqlerr
#设置为0,表示这是主机,可以进行读和写
read-only=0
#可选,设置不需要复制的数据库
binlog-ignore-db=mysql
#可选,设置需要复制的数据库
#binlog-do-db=study-mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d

修改完成后重启。

2. 修改从机配置:

从机主要也是修改上面说的那两个配置,我从机配置文件如下:

[mysqld]
#必须
server-id=2
log-bin=/var/lib/mysql/mysqlbin
log-err=/var/lib/mysql/mysqlerr
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d

修改完后重启。

3. 给从机授权:

在主机上执行如下sql命令,给从机授权:

grant replication slave on *.* to 'root'@'192.168.0.105' identified by 'zsl';
flush privileges;

这里就相当于给从机创建一个账户和密码,让从机可以通过这个账户密码,登录了到主机,进行数据的复制。

然后在主机上执行如下sql:

show master status;

这是查看主机的状态,结果如下:

执行结果

这里我们需要记住file和position这两列的值。

4. 从机连接主机:

接着在从机上执行如下sql:

change master to master_host='192.168.0.101',
master_user='root',
master_password='zsl',
master_log_file='mysqlbin.000001',
master_log_pos=471;

start slave;

root和zsl就是刚才在主机上为从机创建的账户和密码,mysqlbin.000001和471就是刚才主机那边show master status查出来的file和position。

然后执行:

show slave status\G

查看从机的状态,如果看到下面两个都是yes,那就配置成功了。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

接下来主机上所做的操作,从机上都会做相同的操作了。如果要停掉从机,执行stop slave就行,停掉了之后,在从机上再次执行上面的操作就行了,不过file和position可能会变,到主机上再次查看一下即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql 主从复制

    Mysql的复制是一个异步复制的过程,从一个主(master)的复制到另一个备(salve)的。在主备之间实现复制过程主要有三个线程来完成,其中两个线程(sql...

    程序员同行者
  • MySQL主从复制

    MySQL复制功能提供分担读负载。 基于二进制日志的复制是异步的,那么复制有什么好处? 1.实现在不同服务器上的数据分布,利用二进制日志增量进行,不需要太多...

    用户2032165
  • MySQL主从复制

    修改mysql配置文件,不同的系统my.cnf路径不同(CentOS中位于/etc/my.cnf)

    十毛
  • Mysql主从复制

    主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,...

    我的小熊不见了丶
  • MySql主从复制

    在MySql的生产环境中,由于单台MySql不能满足高可用性需求,一般通过主从复制(Master-Slave)方式同步数据,再通过读写分离(MySql-Prox...

    春哥大魔王
  • mysql主从复制

    由于我这里使用docker搭建,所以需要把配置文件和数据文件映射到宿主机,让容器运行时挂载数据

    earthchen
  • MySQL主从复制

    编写复杂的SQL语句一开始让我觉得很困难,当你熟悉了类似Java等的面向对象编程语言,要适应面向集合的SQL语言,还是需要一段时间的。不过作为一名数据工程师,不...

    soundhearer
  • mysql 主从复制

    1、主库 [mysqld] server_id=1 log_bin=/xx/x-bin 2、主库建立主从账号 grant replication sl...

    用户5760343
  • mysql主从复制

    Java架构师必看

扫码关注云+社区

领取腾讯云代金券