innobackupex 备份数据搭建 MySQL Slave

简介:

数据量比较大时,使用 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           = 3306
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 = 1024
table_definition_cache = 1024
thread_cache_size = 8
back_log = 512
connect_timeout = 20
max_connections = 1500
wait_timeout = 120
interactive_timeout = 120
max_allowed_packet = 1024M

slow_query_log = ON
long_query_time = 2
slow-query-log-file = slow.log

query_cache_type = 0
query_cache_size = 0
query_cache_limit = 0

tmp_table_size = 128M
max_heap_table_size = 128M

innodb_file_per_table = 0
innodb_buffer_pool_size = 1024M

read-only = 1
relay-log = mysql-relay-bin
expire_logs_days = 7
server-id = 1020

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

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

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

shell > innobackupex --apply-log alldatabase  # 在备份目录上应用日志
161111 13:56:04 completed OK!

shell > innobackupex --copy-back alldatabase  # 将备份文件拷贝到 my.cnf 中 datadir 指定目录
161111 14:10:21 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=1072788827

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=1072788827;
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 [email protected]‘%‘ identified by ‘xx‘;

# 登录节点 E

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

[client]
port           = 3306
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 = 1024
table_definition_cache = 1024
thread_cache_size = 8
back_log = 512
connect_timeout = 20
max_connections = 1500
wait_timeout = 120
interactive_timeout = 120
max_allowed_packet = 1024M

slow_query_log = ON
long_query_time = 2
slow-query-log-file = slow.log

query_cache_type = 0
query_cache_size = 0
query_cache_limit = 0

tmp_table_size = 128M
max_heap_table_size = 128M

innodb_file_per_table = 0
innodb_buffer_pool_size = 1024M

read-only = 1
relay-log = mysql-relay-bin
expire_logs_days = 7
server-id = 10201

# 同样注意 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 ‘112094418‘

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=112094418;
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

时间: 2024-10-05 13:07:04

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

xtrabackup备份方式搭建mysql slave

以前mysql搭建新备库都是在现在业务较小的备库上停止同步或停止数据库,然后拷贝数据库到新备库,配置好新备库后,再开启同步或数据库.然而,这次没有空闲备库用来搭新备库.  需要从一个业务繁忙的数据库中搭建一个新备库,对系统延时要求比较高,所以同步和数据库都不能停.所以我们用了percona的 xtrabackup备份工具.  因为这个备份要作为备库,所以用了–slave-info参数,备份完成后会生成一个对应主库的binlog日志的文件,用于配置同步.为了保证数据一致性,使用了–slave-in

Windows下搭建MySQL Master Slave

转:http://www.cnblogs.com/gaizai/p/3248207.html http://www.cnblogs.com/gaizai/archive/2013/03/15/2961868.html   MySQL表数据迁移自动化 http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html  Ubuntu10下MySQL搭建Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做M

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

由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性下使用 TiDB 对现有的业务进行备份,应对未来数据量或者并发量增长带来的单点故障风险,如需上线 TiDB,也只需要简单的将业务的主 MySQL 地址指向 TiDB 即可. 下面我们详细介绍了如何将 MySQL 的数据迁移到 TiDB,并将 TiDB 作为 MySQL 的 Slave 进行数据同步.

使用innobackupex备份mysql数据库

1  因为使用perl脚本编写,安装前应先安装 yum install perl-Time-HiRes -y yum -y install perl-DBD-MySQL.x86_64 一起安装    yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL 2  安装最新版,使用rpm -ivh 命令 tar包下载地址 http://www.percona.com/downloads/Xtr

Mysql定时备份数据脚本

项目3.0的集群以搭建完成,只剩下细节相关的配置,和后期安全和优化的处理,考虑到数据库数据需要备份处理, 但每天手动进行备份处理太过于被动,而且白天用户访问,会有数据变化以及在备份时会影响服务器正常运行的性能, 所以考虑写一个脚本,并制定一个定时任务进行执行脚本备份数据: #!/bin/bash###数据库定时备份,并将备份的库进行打包压缩user=rootpasswd=123456back_path=/vdb1/mysql/backupdata_name=zmq123date=`date +%

mysql数据库种类介绍及 mysqldump备份数据

一  Nosql 指的是非关系型数据库,作为传统关系型数据库的一个有效补充,针对特定场景.以高性能和使用便利为目一 的功能特异化的数据库产品 Nosql特点: Noosql数据库存储不需要固定的表结构 1 他不是否定关系数据库,而是作为关系数据库的一个重要补充 2 Nosql为了高性能高并发而产生的 3 Nosql典型产品memcache(纯内存) 一重启就丢数据 redis(持久化缓存)  持久化缓存 mongodb 二  非关系型数据库种类: 1 键值存储数据库 2 列存储数据库 3 面向文

两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connecting to master '[email protected]:3306'…… 首先查看B的错误日志文件,发现如下错误: ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  

Linux(Centos)全自动异地备份数据(WEB+Mysql)

文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的.但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了. 网站数据包括程序文件本身.网站运行过程中不断产生的附件数据(图片.文档.视频等)以及数据库文件,三大块总括为网站数据. 以 自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过DNS也正常,最后询问空间运营商发生什么事了, 获知的结果系:服务器硬盘损

mysql检查备份数据脚本并在zabbix上告警

知识点:1.zabbix自定义设置触发报警 2.zabbix_sender用法 3.zabbix采集器的用法 介绍zabbix_sender用法:zabbix获取key值有超时时间,如果自定义的key脚本一般需要执行很长时间,这根本没法去做监控,那怎么办呢?这时候就需要使用zabbix监控类型zabbix trapper,配合zabbix_sender给它传递数据.所以说zabbix_sender是更新items值最快的方式 zabbix采集器是zabbix监控上的一种模式,是其对服务器数据采集