简介:

数据量比较大时,使用 innobackupex 备份数据新增 MySQL Slave 节点。

安装 innobackupex 工具,我这里写过一次:http://www.cnblogs.com/wangxiaoqiangs/p/5961413.html

场景:

  A -> B
-> C
-> D -> E

一、增加节点 C

# 由于有从库 B ,所以我们去 B 上面执行备份

shell > innobackupex --user=xx --password=xx --slave-info --safe-slave-backup --no-timestamp alldatabase

# 保存 B 的 Slave 信息,因为新增的节点 C 与 B 同级

shell > scp -r alldatabase mysql-nodeC:/root

# 将备份数据拷贝到新节点 C 上,如果节点 C 在外网,建议先压缩一下

# 登录节点 C

shell > vim /etc/my.cnf  # 准备配置文件

[client]
port =
socket = /tmp/mysql.sock [mysqld]
socket = /tmp/mysql.sock
datadir = /data/mysql_data
log-error = error.log
skip-name-resolve
skip-external-locking
default-storage-engine = MyISAM
key_buffer_size = 3072M
sort_buffer_size = 256M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
table_open_cache =
table_definition_cache =
thread_cache_size =
back_log =
connect_timeout =
max_connections =
wait_timeout =
interactive_timeout =
max_allowed_packet = 1024M slow_query_log = ON
long_query_time =
slow-query-log-file = slow.log query_cache_type =
query_cache_size =
query_cache_limit = tmp_table_size = 128M
max_heap_table_size = 128M innodb_file_per_table =
innodb_buffer_pool_size = 1024M read-only =
relay-log = mysql-relay-bin
expire_logs_days =
server-id =

# 注意:server-id 必须全局唯一
# 如果新增的是节点 D,那么需要将后4行替换为如下7行

relay-log = mysql-relay-bin
relay_log_purge = ON
log-slave-updates =
log-bin = mysql-bin
binlog_format = mixed
expire_logs_days =
server-id =

# 因为节点 D 不仅是 Master A 的 Slave,同时也是节点 E 的 Master

shell > innobackupex --apply-log alldatabase  # 在备份目录上应用日志
:: completed OK! shell > innobackupex --copy-back alldatabase # 将备份文件拷贝到 my.cnf 中 datadir 指定目录
:: completed OK! shell > chown -R mysql.mysql /data/mysql_data shell > /etc/init.d/mysql.server start shell > cat /data/mysql_data/xtrabackup_slave_info # 记录 master_log_file 和 master_log_pos 的值
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.003742', MASTER_LOG_POS= shell > mysql -uxx -pxx -A mysql> stop slave;
mysql> reset slave all;
mysql> change master to master_host='x.x.x.x',master_user='xx',master_password='xx',master_log_file='mysql-bin.003742',master_log_pos=;
mysql> start slave;
mysql> show slave status\G Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> quit

# master_host='A'
# MySQL Slave 节点 C 搭建完成

二、新增节点 E

# 由于节点 D 后面没有从节点,所以备份要在节点 D 上执行

shell > innobackupex --user=xx --password=xx --no-timestamp alldatabase

# 我们要的是节点 D 的信息,所以不需要保存 Slave 信息( Slave 信息为跟节点 A 同步信息 )

shell > scp -r alldatabase mysql-nodeE:/root

# 将备份数据拷贝到新节点 E 上,如果节点 E 在外网,建议先压缩一下

shell > mysql -uxx -pxx -A  # 跟上面不一样的地方,需要新建立一个授权用户

mysql> grant replication slave on *.* to xx@'%' identified by 'xx';

# 登录节点 E

shell > vim /etc/my.cnf  # 准备配置文件

[client]
port =
socket = /tmp/mysql.sock [mysqld]
socket = /tmp/mysql.sock
datadir = /data/mysql_data
log-error = error.log
skip-name-resolve
skip-external-locking
default-storage-engine = MyISAM
key_buffer_size = 3072M
sort_buffer_size = 256M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
table_open_cache =
table_definition_cache =
thread_cache_size =
back_log =
connect_timeout =
max_connections =
wait_timeout =
interactive_timeout =
max_allowed_packet = 1024M slow_query_log = ON
long_query_time =
slow-query-log-file = slow.log query_cache_type =
query_cache_size =
query_cache_limit = tmp_table_size = 128M
max_heap_table_size = 128M innodb_file_per_table =
innodb_buffer_pool_size = 1024M read-only =
relay-log = mysql-relay-bin
expire_logs_days =
server-id =

# 同样注意 server-id 全局唯一

shell > chown -R mysql.mysql /data/mysql_data

shell > /etc/init.d/mysql.server start

shell > cat /data/mysql_data/xtrabackup_info

binlog_pos = filename 'mysql-bin.000001', position ''

shell > mysql -uxx -pxx -A

mysql> stop slave;
mysql> reset slave all;
mysql> change master to master_host='x.x.x.x',master_user='rep',master_password='xx',master_log_file='mysql-bin.000001',master_log_pos=;
mysql> start slave;
mysql> show slave status\G Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> quit

# master_host='D'
# master_user='rep' # 这里的用户密码,是节点 D 上的,并不是节点 A 上的
# MySQL Slave 节点 E 搭建完成

# 不采用 innobackupex 时,可以使用如下方法:
# stop slave;
# flush tables with read lock;
# show slave status\G
# 记录 master_log_file,master_log_pos
# 新开一个终端,scp -r /data/mysql_data x.x.x.x:/data/mysql_data,拷贝完成就可以 unlock tables;
# chown -R mysql.mysql /data/mysql_data
# /etc/init.d/mysql.server start
# mysql -uxx -pxx -A
# chanage master to ...
# start slave;

# mysql.sock 如果放在 datadir 下,记得 chmod 755 /data/mysql_data,不然 zabbix_agentd 连接不到数据库
# End

innobackupex 备份数据搭建 MySQL Slave的更多相关文章

  1. xtrabackup备份方式搭建一个mysql slave

    以前mysql搭建新备库都是在现在业务较小的备库上停止同步或停止数据库,然后拷贝数据库到新备库,配置好新备库后,再开启同步或数据库.然而,这次没有空闲备库用来搭新备库.需要从一个业务繁忙的数据库中搭建 ...

  2. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  3. Windows下搭建MySQL Master Slave

    一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切 ...

  4. Windows下搭建MySQL Master Slave[转]

    Windows下搭建MySQL Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用k ...

  5. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  6. mysqldump备份与还原mysql数据的实例

    有关mysql数据库的备份与还原,我们一般用下面两种方式来处理:1.使用into outfile 和 load data infile导入导出备份数据 本文原始链接:http://www.jbxue. ...

  7. 使用innobackupex备份mysql数据库

    1  因为使用perl脚本编写,安装前应先安装 yum install perl-Time-HiRes -y yum -y install perl-DBD-MySQL.x86_64 一起安装     ...

  8. mysql innobackupex备份工具

    先简单介绍一下这个工具:innobackupexinnobackupex比xtarbackup有更强的功能,它整合了xtrabackup和其他的一些功能,他不但可以全量备份/恢复,还可以基于时间的增量 ...

  9. TiDB 作为 MySQL Slave 实现实时数据同步

    由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性 ...

随机推荐

  1. stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

    STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...

  2. LOJ2321. 「清华集训 2017」无限之环【费用流】

    LINK 很好的一道网络里题 首先想插头DP的还是出门左转10分代码吧 然后考虑怎么网络流 首先要保证没有漏水 也就是说每个接口一定要有对应的接口 那么发现每个点只有可能和上下左右四个点产生联通关系 ...

  3. BZOJ2049 SDOI2008 Cave 洞穴勘测 【LCT】

    BZOJ2049 SDOI2008 Cave 洞穴勘测 Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分 ...

  4. Linux多电脑ssh免密码登录

    Linux多电脑ssh免密码登录 1.这里拿三台虚拟机举例子.版本为:CentOS7 第一步:;开机,连接. 第二步:确定你的其中一台为主机.(生成公共的密匙). 第三步:目的:创建.ssh文件 命令 ...

  5. 《DSP using MATLAB》示例Example 6.9

    代码: % All-Pole IIR filter to Lattice structure filter a = [1, 13/24, 5/8, 1/3]; K = dir2latc(a) % To ...

  6. [Luogu4233]射命丸文的笔记

    luogu description 对于\(x\in[1,n]\)求\(x\)点强联通竞赛图中的哈密顿回路的期望个数膜\(998244353\). \(n\le10^5\) sol 首先\(n\)点竞 ...

  7. lib包含# #pragma comment

    #pragma comment(lib,"d2d1.lib")#pragma comment(lib,"dwrite.lib")#pragma comment( ...

  8. filter敏感词替换

    1.properties文件的应用 在<filter>写入配置 <filter> <filter-name>myFilter</filter-name> ...

  9. 简单服务端缓存API设计

    Want 我们希望设计一套缓存API,适应不同的缓存产品,并且基于Spring框架完美集成应用开发. 本文旨在针对缓存产品定义一个轻量级的客户端访问框架,目标支持多种缓存产品,面向接口编程,目前支持简 ...

  10. ruby关于require路径

    ruby里面的require说明 require './aaaa' 这种方式,包含的是系统路径 相对路径得用下面的 require_relative "./xxxx" 或者使用这个 ...