前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 的主从复制配置

MySQL 的主从复制配置

原创
作者头像
ICU
发布2022-04-23 11:03:47
6100
发布2022-04-23 11:03:47
举报
文章被收录于专栏:我和你我和你

摘要

大型项目对备份尤为关注,一般有双机备份,热备冷备,异地灾备等等… 今天来说一下两台服务器上的 MySQL 主从复制备份,需求比较简单:从要同步主的数据,但也不用太频繁,保持 15 分钟的数据差即可,意思就是每 15 分钟去同步一次修改过的数据。

正文

我们这里环境是两台 Linux 服务器,一台在公网,一台在内网,公网是主,内网是从,数据库都是 MySQL 5.7(使用 LNMP 安装)。

主库操作

首先我们先新建一个数据同步用户,让从库使用这个用户可以来同步数据

代码语言:javascript
复制
CREATE USER 'slave'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

百分号代表该用户可以在任意 IP 登录。

然后我们需要把主库备份下来,如果你的库此时并没有访问,那么可以不用锁表,但最好先锁表再备份

代码语言:javascript
复制
mysql> flush tables with read lock;

使用 mysqldump 备份需要同步的库,我这里是同步 mikublog 这个库

代码语言:javascript
复制
mysqldump -uroot -p --databases mikublog | gzip > mysql_bak.$(date + %F)sql.gz

备份好之后记录一下当前位置,记住 File 和 Position 的值

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

最后解锁表

代码语言:javascript
复制
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

从库操作

把刚刚备份的压缩包拷贝过来,并解压:gzip -d 压缩包名字,然后把 sql 刷到数据库里去。

修改 my.cnf,一般只需要改两个值,把 server-id 改为唯一值

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

改好之后重启数据库

代码语言:javascript
复制
service mysql restart

设置主从配置

代码语言:javascript
复制
mysql> change master to master_host='192.168.100.110', master_user='slave', master_password='mypassword', master_port=3306, master_log_file='mysql-bin.000014', master_log_pos= 154, master_delay=900, master_connect_retry=30;

各参数含义:

代码语言:javascript
复制
master_host :主库的地址

master_port:主库的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_delay:延迟复制配置,设置从数据库延时 N 秒后,再与主数据库进行数据同步复制

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是 60 秒

开启主从复制

代码语言:javascript
复制
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

查看同步状态

代码语言:javascript
复制
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                             ...
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                             ...
1 row in set (0.00 sec)

SlaveIORunning 和 SlaveSQLRunning 都是 Yes 说明主从复制已经开启。

完结

以上就是MySQL 的主从复制配置的内容,欢迎小伙伴们交流讨论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 正文
    • 主库操作
      • 从库操作
      • 完结
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档