使用rsync建立MySQL从节点

使用场景:MySQL主节点存储较大,使用xtrabackup会遇到异常的情况

前置条件:node-01 与 node-02 做过ssh互信,rsync客户端均已安装,主节点开启binlog

node-01 原主节点,数据存放目录为 /var/lib/mysql

node-02 新建从节点,数据存放目录为 /var/lib/mysql

一、数据复制

  1. node-01上运行使用rsync先传输一份数据副本(数据一致性不保证),用于rsync增量追平,选择非业务忙阶段
shell 复制代码
# 保证 node-02 数据目录为空
export KBPS=5000 # 5MB/s
ssh node-02 "rm -rf /var/lib/mysql"
rsync -avP -e "ssh" /var/lib/mysql/  node-02:/var/lib/mysql  --bwlimit=${KBPS}
  1. 业务低峰运行,需要添加FTWRD实例级别读锁
shell 复制代码
# 加锁
mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "flush tables with read lock;select sleep(28000)" &
# 去掉限速,尽快追平数据
rsync -avP -e "ssh" /var/lib/mysql/  node-02:/var/lib/mysql  --delete

# 再运行,确认和上一次运行的输出一致则为获取到一致性数据
rsync -avP -e "ssh" /var/lib/mysql/  node-02:/var/lib/mysql  --delete

# 获取 FTWRD 的 PID
FTWRD_PID=$(ps -aux |  grep mysql | grep flush | awk '{print $2}')

kill  $FTWRD_PID

二、主库为传统模式

登录到node-02,通过binlog获取主节点的position值,当node-02节点上的数据是node-01上的镜像,所以在node-02解析出来的位点信息也是一样的

shell 复制代码
# 获取最近的 binlog 文件名
ls mysql-bin.0* | sort -r | head -n 1

# 获取最新的位点信息
mysqlbinlog --base64-output=decode-rows   mysql-bin.000970 > target.sql
grep "end_log_pos"  target.sql  | tail -n 1 >point.txt
cat point.txt

保证从节点的server-id 与主节点不一致

shell 复制代码
sed -e "#s#server-id=1#server-id=13#g" /etc/my.cnf

删除当前的server的uuid 重启后自动生成新的

shell 复制代码
rm -f /var/lib/mysql/auto.cnf

开启从MySQL实例,登录到从MySQL执行

sql 复制代码
CHANGE MASTER TO MASTER_HOST='node-01',	MASTER_PORT=3306, MASTER_USER='repl',MASTER_PASSWORD='xxxxx',MASTER_LOG_FILE='mysql-bin.000970',MASTER_LOG_POS={point.txt中的位点信息};

start slave;
show slave status\G

三、主库开启了GTID

登录到node-02,保证从节点的server-id 与主节点不一致

shell 复制代码
sed -e "#s#server-id=1#server-id=13#g" /etc/my.cnf

删除当前的server的uuid 重启后自动生成新的

shell 复制代码
rm -f /var/lib/mysql/auto.cnf

开启从MySQL实例,登录到从MySQL执行

sql 复制代码
CHANGE MASTER TO MASTER_HOST='node-01',	MASTER_PORT=3306, MASTER_USER='repl',MASTER_PASSWORD='xxxxx',MASTER_LOG_POS=1;

start slave;
show slave status\G
相关推荐
阿里云云原生10 分钟前
MySQL 开发的智能助手:通义灵码在 IntelliJ IDEA 中的应用
mysql
科韵小栈11 分钟前
MySQL 安全与权限管理:数据库的城堡守卫系统
数据库·mysql
zeijiershuai17 分钟前
MySQL-SQL-DDL语句、表结构创建语句语法、表约束、表数据类型,表结构-查询SQL、修改SQL、删除SQL
sql·mysql
程序员老周66638 分钟前
从MySQL快速上手大数据Hive
大数据·数据库·hive·hadoop·mysql·mapreduce·数据工程师
不辉放弃38 分钟前
第三章:SQL 高级功能与性能优化
服务器·前端·sql·mysql
m0_687914631 小时前
mysql和sqlite关于data数据的识别问题
数据库·mysql·sqlite
weixin_470880262 小时前
MYSQL——SQL语句到底怎么执行
数据库·mysql·面试
林十一npc3 小时前
ShopXO v2.2.4开源商城手动部署(保姆级)+异常处理
软件测试·数据库·mysql·php·商城·云服务器·shopxo
m0_677904843 小时前
MySQL介绍及使用
mysql
互联网搬砖老肖3 小时前
21 天 Python 计划:MySQL视图、触发器、存储过程、函数与流程控制
python·mysql·adb