详解Mysql主从同步配置实战

作者:zilu 时间:2024-01-14 16:36:13 

1、Introduction

之前写过一篇文章:Mysql主从同步的原理。

相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?

今天我们就来一次mysql主从同步实战!

2、环境说明

os:ubuntu16.04

mysql:5.7.17

下面的实战演练,都是基于上面的环境。当然,其他环境也大同小异。

3、进入实战

工具

2台机器:

master IP:192.168.33.22

slave  IP:192.168.33.33

master机器上的操作

1、更改配置文件

我们找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf

配置如下:


bind-address = 192.168.33.22 #your master ip
server-id = 1 #在master-slave架构中,每台机器节点都需要有唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog

2、重启mysql,以使配置文件生效。


sudo systemctl restart mysql

3、创建主从同步的mysql user。


$ mysql -u root -p
Password:

##创建slave1用户,并指定该用户只能在主机192.168.33.33上登录。
mysql> CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass';
Query OK, 0 rows affected (0.00 sec)

##为slave1赋予REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
Query OK, 0 rows affected (0.00 sec)

4、为MYSQL加读锁

为了主库与从库的数据保持一致,我们先为mysql加入读锁,使其变为只读。


mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

5、记录下来MASTER REPLICATION LOG 的位置

该信息稍后会用到。


mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |  613 |    |     |     |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6、将master DB中现有的数据信息导出


$ mysqldump -u root -p --all-databases --master-data > dbdump.sql

7、接触master DB的读锁


mysql> UNLOCK TABLES;

8、将步骤6中的dbdump.sql文件copy到slave


scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu

slave机器上的操作

1、更改配置文件

我们找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf

更改配置如下:


bind-address = 192.168.33.33 #your slave ip
server-id = 2 #master-slave结构中,唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog

2、重启mysql,以使配置文件生效


sudo systemctl restart mysql

3、导入从master DB。 导出的dbdump.sql文件,以使master-slave数据一致


$ mysql -u root -p < /home/ubuntu/dbdump.sql

4、使slave与master建立连接,从而同步


$ mysql -u root -p
Password:

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.33.22',
-> MASTER_USER='slave1',
-> MASTER_PASSWORD='slavepass',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=613;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

MASTER_LOG_FILE='mysql-bin.000001'与MASTER_LOG_POS=613的值,是从上面的 SHOW MASTER STATUS 得到的。

经过如此设置之后,就可以进行master-slave同步了~

来源:https://segmentfault.com/a/1190000008663587

标签:Mysql,主从同步
0
投稿

猜你喜欢

  • python网络爬虫之模拟登录 自动获取cookie值 验证码识别的具体实现

    2023-10-08 03:00:37
  • javascript中注册和移除事件的4种方式

    2024-04-22 12:49:02
  • JS操作input标签属性checkbox全选的实现代码

    2024-04-28 09:50:56
  • 在Python中使用Mako模版库的简单教程

    2021-11-08 12:33:45
  • spring使用RedisTemplate操作Redis数据库

    2024-01-16 03:32:28
  • PHP abstract 抽象类定义与用法示例

    2023-06-28 03:52:44
  • ms SQL server数据库备份、压缩与SQL数据库数据处理的方法

    2024-01-18 14:54:04
  • python跳过第一行快速读取文件内容的实例

    2022-05-12 12:58:56
  • Django web自定义通用权限控制实现方法

    2021-07-31 06:21:09
  • PyCharm使用最多也最常用默认快捷键分享

    2023-05-23 20:54:55
  • js中的内部属性与delete操作符介绍

    2024-04-10 16:15:12
  • golang简单读写文件示例

    2024-05-22 10:13:21
  • 无法使用pip命令安装python第三方库的原因及解决方法

    2023-11-24 00:32:33
  • 浅谈tensorflow模型保存为pb的各种姿势

    2023-02-01 21:19:05
  • MySQL——修改root密码的4种方法(以windows为例)

    2024-01-16 17:50:55
  • 使用Python获取字典键对应值的两种方法

    2022-08-04 05:25:16
  • ASP实例:即时显示当前页面浏览人数

    2008-04-19 22:02:00
  • Python +Selenium解决图片验证码登录或注册问题(推荐)

    2022-12-30 05:41:51
  • js模拟实现Array的sort方法

    2024-04-10 11:03:22
  • 基于pdf2docx模块Python实现批量将PDF转Word文档的完整代码教程

    2022-06-24 15:55:02
  • asp之家 网络编程 m.aspxhome.com