前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习笔记(10) MySQL Replication 复制

MySQL学习笔记(10) MySQL Replication 复制

作者头像
张云飞Vir
发布2021-06-29 10:20:16
2690
发布2021-06-29 10:20:16
举报
文章被收录于专栏:写代码和思考

1. 背景

本节将如何设置 MySQL 的主从同步。

2.设置 MySQL 的主从同步

简单讲分三个环节:

  • 1、主数据库 开启 二进制日志
  • 2、从数据库设置指向主数据库的配置参数 (change master to 指令)
  • 3、启动slave (使用 start slave 指令)

具体操作日下:

步骤 1: 开启 二进制日志,和指定server-id -- ( 配置主数据库 )

编辑 /etc/mysql/my.cnf 文件,增加如下设置:

代码语言:javascript
复制
[mysqld]
log-bin=mysql-bin
server-id=1   
  • 注意: 要在 [mysqld] 章节下。 修改完毕后重启,可检查下是否开启成功(见本文扩展部分)。

步骤 2: 新建一个用于同步的mysql用户,并赋予 REPLICATION SLAVE 权限 -- ( 配置主数据库 )

代码语言:javascript
复制
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> FLUSH PRIVILEGES;

步骤 3: 开启 二进制日志,和指定server-id -- ( 配置 从数据库 )

编辑 /etc/mysql/my.cnf 文件,增加如下设置:

代码语言:javascript
复制
[mysqld]
server-id=2

步骤4:修改从数据库指向的 ”主数据库“的地址 (在从数据库中配置)

使用 change master 指令进行参数设置,示例:

代码语言:javascript
复制
mysql> change master to master_host='192.168.1.8', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=747;

设置好后,检查一下:

代码语言:javascript
复制
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 192.168.1.8
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 747
               Relay_Log_File: 59b3f32743e5-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: No

步骤5: 查看 主数据库的 二进制日志的偏移量 (在主数据库)

使用 指令,查看 Position 的值,示例如下:

代码语言:javascript
复制
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      747 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

步骤6: 启动 从数据库的“同步功能”

使用 start slave 指令启动即可。

代码语言:javascript
复制
mysql> start slave

至此,配置完毕。

3. 其他相关配置

4. 扩展

修改完主数据库配置后,可以检查下配置是否生效 (对应上文步骤1)

代码语言:javascript
复制
mysql> show variables like 'log%'
    -> ;
+----------------------------------------+--------------------------------+
| Variable_name                          | Value                          |
+----------------------------------------+--------------------------------+
| log_bin                                | ON                             |
| log_bin_basename                       | /var/lib/mysql/mysql-bin       |
| log_bin_index                          | /var/lib/mysql/mysql-bin.index |

mysql> show variables like 'server%';
+----------------+--------------------------------------+
| Variable_name  | Value                                |
+----------------+--------------------------------------+
| server_id      | 1                                    |
| server_id_bits | 32                                   |

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      747 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

以 docker 方式启动 mysql

代码语言:javascript
复制
docker run -di --name mysql_copy -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

docker 里没有 vi编辑器 怎么办? 安装一个

代码语言:javascript
复制
apt-get update
apt-get install vim

查看进程列表:

代码语言:javascript
复制
mysql> show processlist;

# 比如在从数据库看到:
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  5 | root        | localhost | zoo  | Query   |    0 | starting                                               | show processlist |
|  6 | system user |           | NULL | Connect |  740 | Waiting for master to send event                       | NULL             |
|  7 | system user |           | NULL | Connect |  593 | Slave has read all relay log; waiting for more updates | NULL             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)

备份数据库时,锁定数据表和解锁的方法 在服务器上,设定一个锁,确保没有操作数据库,以便获得一致性。

代码语言:javascript
复制
FLUSH TABLES WITH READ LOCK;

主库备份完成后,恢复写操作

代码语言:javascript
复制
UNLOCK TABLES;

5.参考:

https://www.cnblogs.com/cjsblog/archive/2018/09/26/9706370.html

https://dev.mysql.com/doc/refman/8.0/en/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2.设置 MySQL 的主从同步
    • 步骤 1: 开启 二进制日志,和指定server-id -- ( 配置主数据库 )
      • 步骤 2: 新建一个用于同步的mysql用户,并赋予 REPLICATION SLAVE 权限 -- ( 配置主数据库 )
        • 步骤 3: 开启 二进制日志,和指定server-id -- ( 配置 从数据库 )
          • 步骤4:修改从数据库指向的 ”主数据库“的地址 (在从数据库中配置)
            • 步骤5: 查看 主数据库的 二进制日志的偏移量 (在主数据库)
              • 步骤6: 启动 从数据库的“同步功能”
              • 3. 其他相关配置
              • 4. 扩展
              • 5.参考:
              相关产品与服务
              容器镜像服务
              容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档