博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
innobackupex 备份数据搭建 MySQL Slave
阅读量:6907 次
发布时间:2019-06-27

本文共 4741 字,大约阅读时间需要 15 分钟。

简介:

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

安装 innobackupex 工具,我这里写过一次:

场景:

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           = 3306socket         = /tmp/mysql.sock[mysqld]socket         = /tmp/mysql.sockdatadir        = /data/mysql_datalog-error      = error.logskip-name-resolveskip-external-lockingdefault-storage-engine = MyISAMkey_buffer_size = 3072Msort_buffer_size = 256Mread_buffer_size = 4Mread_rnd_buffer_size = 8Mmyisam_sort_buffer_size = 128Mtable_open_cache = 1024table_definition_cache = 1024thread_cache_size = 8back_log = 512connect_timeout = 20max_connections = 1500wait_timeout = 120interactive_timeout = 120max_allowed_packet = 1024Mslow_query_log = ONlong_query_time = 2slow-query-log-file = slow.logquery_cache_type = 0query_cache_size = 0query_cache_limit = 0tmp_table_size = 128Mmax_heap_table_size = 128Minnodb_file_per_table = 0innodb_buffer_pool_size = 1024Mread-only = 1relay-log = mysql-relay-binexpire_logs_days = 7server-id = 1020

# 注意:server-id 必须全局唯一

# 如果新增的是节点 D,那么需要将后4行替换为如下7行

relay-log = mysql-relay-binrelay_log_purge = ONlog-slave-updates = 1log-bin = mysql-binbinlog_format = mixedexpire_logs_days = 7server-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_datashell > /etc/init.d/mysql.server startshell > 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=1072788827shell > mysql -uxx -pxx -Amysql> 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: Yesmysql> 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';# 登录节点 Eshell > vim /etc/my.cnf  # 准备配置文件[client]port           = 3306socket         = /tmp/mysql.sock[mysqld]socket         = /tmp/mysql.sockdatadir        = /data/mysql_datalog-error      = error.logskip-name-resolveskip-external-lockingdefault-storage-engine = MyISAMkey_buffer_size = 3072Msort_buffer_size = 256Mread_buffer_size = 4Mread_rnd_buffer_size = 8Mmyisam_sort_buffer_size = 128Mtable_open_cache = 1024table_definition_cache = 1024thread_cache_size = 8back_log = 512connect_timeout = 20max_connections = 1500wait_timeout = 120interactive_timeout = 120max_allowed_packet = 1024Mslow_query_log = ONlong_query_time = 2slow-query-log-file = slow.logquery_cache_type = 0query_cache_size = 0query_cache_limit = 0tmp_table_size = 128Mmax_heap_table_size = 128Minnodb_file_per_table = 0innodb_buffer_pool_size = 1024Mread-only = 1relay-log = mysql-relay-binexpire_logs_days = 7server-id = 10201

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

shell > chown -R mysql.mysql /data/mysql_datashell > /etc/init.d/mysql.server startshell > cat /data/mysql_data/xtrabackup_infobinlog_pos = filename 'mysql-bin.000001', position '112094418'shell > mysql -uxx -pxx -Amysql> 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: Yesmysql> 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

转载于:https://www.cnblogs.com/wangxiaoqiangs/p/6055155.html

你可能感兴趣的文章
jQuery的简单入门练习
查看>>
28个MongoDB 的问题
查看>>
CDN学习笔记一(CDN是什么?)
查看>>
178.4. cvs checkout
查看>>
备库报警邮件的分析案例(二)
查看>>
oracle windows下使用批处理进行exp导出
查看>>
关于奇怪的并行进程分析(一)
查看>>
新书定稿终落成,期待手中留书香
查看>>
【Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池
查看>>
WPF 3D 知识点大全以及实例
查看>>
[20161012]数据文件offline马上执行recover
查看>>
HDOJ 1012 u Calculate e
查看>>
[20170104]一条sql优化.txt
查看>>
关闭 Visual Studio 2013 的 Browser Link 功能
查看>>
我的VSTO之路:序
查看>>
【MVP月度主题分享】通过dataV制作实时数据大屏
查看>>
首批获批入驻雄安新区公司名单公布,BAT、京东等48家企业审批通过
查看>>
物联网医疗来了:让患者获得一站式医疗服务
查看>>
Gartner发布独立报告解读大数据问题
查看>>
有了深度学习,传统的机器学习算法没落了吗,还有必要去学习吗?
查看>>