前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​快速创建一个MySQL从库的方法

​快速创建一个MySQL从库的方法

作者头像
保持热爱奔赴山海
发布2019-09-18 15:14:03
1.3K0
发布2019-09-18 15:14:03
举报
文章被收录于专栏:数据库相关数据库相关

快速创建一个从库的方法:

##  摘录自  《最快创建一个MySQL从机的姿势》  姜承尧 InsideMySQL 微信公众号

这里对原文有删减,只列出了几种感觉用得到的。文中省略了change master to 的步骤,不是这篇文章中关注的重点。

以快速创建一个从库的需求出发,如下几种备选方案:

环境:

  node1  主库

  node2  新服务器,需要做成node1从库  (node1已经配置免密码SSH登陆到node2)

软件版本:

  CentOS7 64位

  MySQL 官方5.6版本,数据库的用户名和密码都是root

  都安装了percona-xtrabackup

0 弱鸡版:【最耗时间】

mysqldump -uroot -proot -q --single-transaction -A --master-data=2 > /root/all.sql  # 备份

mysql -uroot -proot < /root/all.sql   # 还原

这种方式最简单的,不多说。

1 初级版:

innobackupex --user=root --password=root --socket=/var/lib/mysql/mysql.sock --parallel=4 --no-timestamp /root/bak

缺点速度慢,备份的文件较大。好处是相对于mysqldump而言,这个工具能并行备份操作。

scp /root/bak root@node2:/root   # 将/root/bak这个压缩后的文件scp到目标主机node2,

然后去node2解压命令如下:

代码语言:javascript
复制
mkdir /tmp/mysql   # /tmp/mysql 这是个临时存放拷贝过来的数据库解压文件目录,和mysql的自己的datadir没有任何关系
代码语言:javascript
复制
cat /root/bak | lz4 -d | xbstream -x -C /tmp/mysql
代码语言:javascript
复制
innobackupex --apply-log /tmp/mysql/# 导入数据后,还要执行下整理操作
innobackupex --copy-back  /tmp/mysql/  # 将整理好的数据库文件导入到原先的mysql datadir里

chown mysql.mysql  /data/mysql/ -R
/etc/init.d/mysql start 这样一台mysql就启动好了

2 lz4加速版:

yum install lz4 -y   # 先在2台主机上安装这个压缩工具,性能比gzip、bzip2强很多。

node1上备份:

代码语言:javascript
复制
innobackupex --user=root \
--password=root \
--socket=/var/lib/mysql/mysql.sock \
--parallel=4 \
--no-timestamp \
--stream=xbstream . | lz4 -B4 > /root/bak
代码语言:javascript
复制
scp /root/bak root@node2:/root   # 将/root/bak这个压缩后的文件scp到目标主机node2,

然后去node2执行如下命令:

代码语言:javascript
复制
mkdir /tmp/mysql
cat /root/bak | lz4 -d | xbstream -x -C /tmp/mysql   

innobackupex --apply-log /tmp/mysql/# 导入数据后,还要执行下整理操作
innobackupex --copy-back  /tmp/mysql/  # 将整理好的数据库文件导入到原先的mysql datadir里

chown mysql.mysql  /data/mysql/ -R
/etc/init.d/mysql start 这样一台mysql就启动好了

3 管道加强版:

代码语言:javascript
复制
innobackupex --user=root \
--password=root \
--parallel=4 \
--socket=/var/lib/mysql/mysql.sock \
--no-timestamp \
--stream=xbstream . |\
lz4 -B4 |\
ssh root@node2 \
"cat - > /tmp/bak"

# 上面这条命令是直接压缩并备份到远程的/tmp目录下

然后到node2上去还原:

代码语言:javascript
复制
mkdir /tmp/mysql
cat /tmp/bak | lz4 -d -B7 | xbstream -x -C /tmp/mysql
代码语言:javascript
复制
innobackupex --apply-log /tmp/mysql/# 导入数据后,还要执行下整理操作
innobackupex --copy-back  /tmp/mysql/  # 将整理好的数据库文件导入到原先的mysql datadir里
chown mysql.mysql  /data/mysql/ -R
/etc/init.d/mysql start 这样一台mysql就启动好了

4 直接备份到远程同时还原版: 【推荐使用方法4】

首先需要在node2上创建个/tmp/mysql目录,不然node1备份文件发送过去没目录存放。

然后再node1上执行:

代码语言:javascript
复制
innobackupex --user=root \
--password=root \
--parallel=4 \
--socket=/var/lib/mysql/mysql.sock \
--no-timestamp \
--stream=xbstream . |\
lz4 -B4 |\
ssh node2 \
"cat - | lz4 -d -B7 | xbstream -x -C /tmp/mysql"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/01/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档