데이터 베이스 MySQL 튜토리얼 线上mysql数据库不停机的环境下,如何添加新的从机

线上mysql数据库不停机的环境下,如何添加新的从机

Jun 07, 2016 pm 05:36 PM
linux mysql 마스터-슬레이브 복제

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)在工作中,主从环境搭的多了,但是,基本上都是在DBSERVER停机(游戏公司)的情况下搭建的,今天突


      在工作中,主从环境搭的多了,但是,基本上都是在DB SERVER停机(游戏公司)的情况下搭建的,今天突然被一技术官问,如何在线添加主从,回答的大概思路,但是没有实践过,下面,我就测试一下。各位也可以先想想自己的思路:mysql 5.1版本,二进制日志文件(时间长了,有些二进制日志定期清除了),pos号

      注:在mysql 5.6版本中,已经有基于GTID的主从复制(即:不需要知道日志文件和position号),只需还原最新的备份就可实现,,这里只讨论mysql 5.1

一.目前的基本环境:

 主DB:192.168.1.101

 从DB1:192.168.1.102

 从DB2:192.168.1.103(准备在线添加做为从机的mysql数据库)

 数据库版本:mysql 5.1.61(select  version())

 服务器版本:red hat linux 6

       注:目前主从正常(show slave status\G),同步的数据库为 login

              3台DB server的备份软件(xtrbackup)都已经安装完成

              同步的表为innodb引擎的表,不然用xtrabackup还是会锁表

  假设环境为:现在login库下的表a,备份的时候插入数据,最终行为5418272

       注:思路是备份,可是用mysqldump备份会锁表,如果数据量很大的话,线上环境肯定不允许使用mysqldump备份

              所以,我们采用的xtrabackup来进行在线热备,至于,它的原理,请各位自行google

二.部署实例:

1.主DB,线上数据正常写入的同时我实施备份

mysql> insert into a select * from a; [root@client101 backup]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 --database=login /tmp/backup/ >/tmp/backup/innoback.log 2>&1 # 备份完成后,可以查看备份文件目录下, xtrabackup_binlog_info 此文件会记录主上的日志和position号 [root@client101 2014-02-22_07-43-36]# cat xtrabackup_binlog_info

2.将备份文件压缩,并传送到从DB2(192.168.1.103)上,用于在上面进行还原

[root@client101 backup]# tar zcvf login.tar 2014-02-22_07-43-36 [root@client101 backup]# scp login.tar 192.168.1.103:/tmp/

3.从DB2上,解压刚才的备份,并用于恢复

[root@client103 tmp]# tar -xf login.tar # 应用日志,保证数据一致 [root@client103 tmp]# innobackupex --apply-log /tmp/2014-02-22_07-43-36/ # 停mysql [root@client103 mysql]# /etc/init.d/mysqld stop # mysql数据目录下的所有文件移到/tmp/mysqlbackup/下,不然,恢复有问题 # [这里建议只复制数据文件,不建议复制(日志,索引,innodb共享表空间,innodb日志文件,慢日志等)] [root@client103 mysql]# mv /var/lib/mysql/* /tmp/mysqlback # 恢复数据 [root@client103 mysql]# innobackupex --copy-back /tmp/2014-02-22_07-43-36/ # 将原数据库的内容复制mysql数据目录(这里就是我认为这个软件不好的地方,大家也可以给点建议) [root@client103 mysqlback]# mv /tmp/mysqlbac k/* /var/lib/mysql/ # 将数据目录的权限修改为mysql权限 [root@client103 mysql]# chown mysql. /var/lib/mysql/ # 启动数据库 [root@client103 mysql]# /etc/init.d/mysqld start # 验证数据的一致性:5418272(主上的行) mysql> select count(*) from a; +----------+ | count(*) | +----------+ | 5418272 | +----------+

4.将从DB2的主机指向主DB1

# 刚才回复后,会有个文件:xtrabackup_binlog_pos_innodb --> 此文件记录了备份时日志文件和pos号 [root@client103 mysql]# cat xtrabackup_binlog_pos_innodb /var/lib/mysql/mysql-101-bin.000008 2423 # 建立主从关系 mysql> change master to master_host='192.168.1.101', -> master_user='slave', -> master_password='slave', -> master_log_file='mysql-101-bin.000008', -> master_log_pos=2423; # 开启同步 mysql> start slave; # 查看同步状态 mysql> show slave status\G;

5.此时如果都为yes,则主从则建立完毕!大家可自行测试

注:

    还有一种方式在线添加主从,即原本的从机只做冗余,可以在从机暂时停止主从,

    然后,在从机上执行备份,看当前从机上,日志执行到哪个文件,哪个位置(master的日志文件和pos号)


                   如果各位对此文章有异议或有更好的方式,欢迎反馈,大家共同进步!

本文出自 “没有伞的孩子必须努力奔跑” 博客,请务必保留此出处

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공 Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공 Sep 05, 2024 am 06:33 AM

Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공

DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 Feb 19, 2025 pm 04:54 PM

DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구

DeepSeek을 설치하는 방법 DeepSeek을 설치하는 방법 Feb 19, 2025 pm 05:48 PM

DeepSeek을 설치하는 방법

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 Dec 09, 2024 am 11:42 AM

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법

BitPie Bitpie 지갑 앱 다운로드 주소 BitPie Bitpie 지갑 앱 다운로드 주소 Sep 10, 2024 pm 12:10 PM

BitPie Bitpie 지갑 앱 다운로드 주소

Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Feb 21, 2025 pm 08:42 PM

Bitget 공식 웹 사이트 설치 (2025 초보자 안내서)

Zabbix 3.4 소스 코드 컴파일 설치 Zabbix 3.4 소스 코드 컴파일 설치 Sep 04, 2024 am 07:32 AM

Zabbix 3.4 소스 코드 컴파일 설치

자세한 설명: 쉘 스크립트 변수 판단 매개변수 명령 자세한 설명: 쉘 스크립트 변수 판단 매개변수 명령 Sep 02, 2024 pm 03:25 PM

자세한 설명: 쉘 스크립트 변수 판단 매개변수 명령

See all articles