阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

119次阅读
没有评论

共计 2112 个字符,预计需要花费 6 分钟才能阅读完成。

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

环境:

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 解压命令如下:

mkdir /tmp/mysql  # /tmp/mysql 这是个临时存放拷贝过来的数据库解压文件目录, 和 mysql 的自己的 datadir 没有任何关系

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 就启动好了

2 lz4 加速版:

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

node1 上备份:

innobackupex –user=root \
–password=root \
–socket=/var/lib/mysql/mysql.sock \
–parallel=4 \
–no-timestamp \
–stream=xbstream . | lz4 -B4 > /root/bak

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

然后去 node2 执行如下命令:

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 管道加强版:

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 上去还原:

mkdir /tmp/mysql
cat /tmp/bak | lz4 -d -B7 | 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 就启动好了

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

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

然后再 node1 上执行:

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”

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140736.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2112字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中