mysql的主从同步【学习笔记】

原理

主服务器上面的任何修改都会保存在二进制日志( Bin-log日志) 里面。 从服务器上面启动一个I/O线程, 连接到主服务器上面请求读取二进制(Bin-log)日志,然后把读取到的二进制日志写到本地的Realy-log(中继日志)里面。 从服务器上面同时开启一个SQL线程,读取Realy-log(中继日志),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

需要准备两台主机,一台为主库(master),一台为从库(slave)

两台都需安装mysql

yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum install -y mysql-community-server --nogpgcheck --disablerepo mysql80-community --enablerepo mysql57-community

注意,如果是第一次安装mysql,需要先启动mysql并修改登陆密码,以防mysql无法使用(防火墙记得关闭)

1.主库开启binlog日志和serverid

# 注意如果binlog日志位置是不存在的需要创建,而且属主属组需要是mysql用户
mkdir -p /var/lib/mysql/mysql-bin
# 在配置文件中添加如下内容
vim /etc/my.cnf
server-id=1
log-bin=/var/lib/mysql/mysql-bin

# 重启mysql
systemctl restart mysqld

2.主库进入数据库创建用户

-- 创建slave用户并设置密码,用于从库连接
grant all privileges on *.* to 'slave'@'%' identified by 'Qwer@123';
-- 重新加载授权表
flush privileges;

3.主库重新刷新日志并查看日志位置

-- 进入mysql
-- 刷新日志
reset master
-- 查看
show master status\G
mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 154
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

4.对从库–从库开启serverid

# 编辑配置文件
vim /etc/my.cnf
server-id=2

# 重启mysql
systemctl restart mysqld

5.从库配置主从

-- 进入mysql
-- 连接主库
CHANGE MASTER TO
  MASTER_HOST='192.168.64.11', -- 主库ip
  MASTER_USER='slave',  -- 主库所创用户
  MASTER_PASSWORD='Qwer@123',  -- 密码
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=154;

6.从库启动slave并查看

-- 执行
start slave
-- 查看
show slave status\G

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.64.11
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: centos7-ws-relay-bin.000001
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: YES  -- 两个YES表示成功
            Slave_SQL_Running: YES
            ...

7.测试

-- 主库创建zhuj数据库
mysql> create database zhuj;
Query OK, 1 row affected (0.02 sec)

-- 从库也对应创建了zhuj数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys				 |
| zhuj               |
+--------------------+
4 rows in set (0.01 sec)

备注:如果出现错误
stop slave
reset slave # 执行后重新执行步骤5就可以了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

透明瞳孔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值