mysql不停機添加節點_MySQL不停机添加从库

MySQL不停机添加从库

发布时间:2020-06-20 11:16:06

来源:51CTO

阅读:420

作者:何小帅

背景

主节点上线运行了一段时间后,数据量日益增大,故需要添加slave节点来更好地支撑业务的发展。但是,此时也有一定量的用户了,所以不能把主节点停机,而是在不停机的情况下添加slave节点,具体实现方法如下:

环境

防火墙和selinux都关闭

master

slave

IP

192.168.7.71

192.168.7.72

主机名

master01

slave01

OS

CentOS7

CentOS7

5.7.28

5.7.28

操作步骤

1.在master上对数据库做完全备份,并且拷贝到slave节点

1.1 查看当前master上的数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| db1 |

| db2 |

| mysql |

| performance_schema |

| sys |

+--------------------+

1.2 使用mysqldump工具进行全库备份

[root@master01 ~]#mysqldump -p -A -F --single-transaction --master-data=1 > /backup/fullbackup_`date +%F_%T`.sql

Enter password:

[root@master01 ~]#ll /backup/

total 832

-rw-r--r-- 1 root root 849153 Nov 29 20:22 fullbackup_2019-11-29_20:22:04.sql

[root@master01 ~]#scp -p /backup/fullbackup_2019-11-29_20\:22\:04.sql root@192.168.7.72:/data/

fullbackup_2019-11-29_20:22:04.sql 100% 829KB 14.9MB/s 00:00

1.3 创建授权复制账号

grant replication slave on *.* to repluser@'192.168.7.%' identified by '123.com';

2.在slave节点将master节点拷贝过来的完全备份进行导入

2.1 MySQL安装过程略

2.2 将以下内容添加到my.cnf文件中,然后重新启动数据库。

[mysqld]

server-id = 2

read_only = ON #设为只读,但是对超级用户无效。

2.3 导入并查看

[root@slave01 ~]#mysql -p < /data/fullbackup_2019-11-29_20\:22\:04.sql

Enter password:

[root@slave01 ~]#mysql -p -e "show databases"

Enter password:

+--------------------+

| Database |

+--------------------+

| information_schema |

| db1 |

| db2 |

| mysql |

| performance_schema |

| sys |

+--------------------+

可以看到已经将master节点上的所有库导入成功了。

3.在slave节点执行以下命令,指定连接主服务器的信息,以进行数据同步。

3.1 找到完全备份的position信息

[root@slave01 ~]#grep '^CHANGE MASTER' /data/fullbackup_2019-11-29_20\:22\:04.sql

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

3.2 配置连接主服务的信息(从完全备份的位置之后开始复制)

[root@slave01 ~]#mysql -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.7.71',

-> MASTER_USER='repluser',

-> MASTER_PASSWORD='123.com',

-> MASTER_PORT=3306,

-> MASTER_LOG_FILE='mysql-bin.000003',

-> MASTER_LOG_POS=154;

Query OK, 0 rows affected, 2 warnings (0.01 sec)

3.3 启动slave节点,并查看同步状态。

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.7.71

Master_User: repluser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 154

Relay_Log_File: slave01-relay-bin.000002

Relay_Log_Pos: 320

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...省略信息...

Slave_IO_Running和Slave_SQL_Running线程都为Yes,表示主从同步成功,至此,在线添加从库已经实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值