MySQL主从,不停机添加新从库

当前MySQL 数据库是一主库一从库,在业务量访问不断增大的情况下,再增加一台从库。

不停机也就是不重启MySQL服务情况,可以通过mysqldump备份主库,恢复到从库。 为了避免出现其他情况,选择在网站访问量低峰期时间段操作。

mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长,如果可以停机维护,最好是停机之后再操作

当前环境

主库IP:192.168.0.88

从库IP:192.168.0.89

从库IP:192.168.0.100 【新增】

1、从库配置环境

在 一主一从的基础上新增从库,不清楚的看上一篇文章

手把手创建 Mysql 主从配置

查找数据库配置文件一般为 my.cnf 位置在 /etc/my.cnf

# vim /etc/my.cnf

/etc/my.cnf 内容

server-id = 3             #这个设置3(上一个从库为2,当前从库自增1)
log-bin = mysql-bin         #开启binlog日志
slave-skip-errors = all      #跳过主从复制出现的错误

2、备份主库

mysqldump -uroot -p123456 --routines --single_transaction --master-data=2 --databases  xiadmin> xiadmin.sql

参数说明:

–routines:导出存储过程和函数

–single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,

然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。

–master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,

等于2是将change master to写到结果中并注释。

3、从库创建数据库,并导入数据

先将 mysqldump 导出的数据拷贝到从库,如 /tmp/xiadmin.sql

然后新建一个同名库,因为导出的数据是不包含建库语句的,注意建库的字符集需要与原数据库一致

mysql> create database xiadmin;
mysql> source /tmp/xiadmin.sql

4、在备份文件 /tmp/xiadmin.sql 查看binlog和pos值

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

可以看到 MASTER_LOG_FILE=’mysql-bin.000003′,  MASTER_LOG_POS=8213;

5. 从库设置从这个日志点同步

change master to master_host='192.168.0.88',
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000003',
master_log_pos=8213;

启动并查看状态

mysql> start slave;
mysql> show slave status\G

成功的重要参考是上图两个 YES,说明主从配置成功。

参考文章:https://developer.aliyun.com/article/38826

知道mysql随笔

数据库的用户表性别需要建立索引吗

2021-3-15 10:06:25

知道工作日志

初识消息队列之RabbitMQ

2021-3-25 13:26:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧