MySQL 手动主从同步不锁表

有时候MySQL主从同步不一致比较严重的时候,需要手动同步。

然而网上看大很多需要锁表的同步的方法基本如下

1.先对主库锁表

FLUSH TABLES WITH READ LOCK;

2.备份数据

mysqldump -uroot -p -hlocalhost > mysql.bak.sql

3.解锁主库

unlock tables;

4.查看主库的binlog文件和位置

show master status; 找出File和Position

5.使用scp命令把文件移动到从库

scp mysql.bak.sql [email protected]:/tmp/

6.在从库上停止同步

mysql> stop slave;

7.导入数据

mysql> source /tmp/mysql.bak.sql

8.设置从库的同步开始文件和开始位置

change master to master_host = '主库主机', master_user = '同步用户名', master_port=3306, master_password='', master_log_file = '第3步中获取的file', master_log_pos=第3步中获取的position;

9.从库上启动同步并检查

mysql> start slave;

mysql> show slave status\G  查看:
 
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
 
上网查了下,有外国友人说不需要锁表的方法。 大致是不需要执行第1和第3步,在第2导出数据的时候加上参数
mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A
 
--skip-lock-tables 不锁表
--master-data=2 在导出的时候同时生成binlog文件名和位置在导出的文件开头。这个很重要。因此第4步也不需要执行了,binlog的文件和位置可以从这里拿到。
--single-transaction 通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照
其他参数意义可以看这里:http://www.penglixun.com/tech/database/the_process_of_mysqldump.html(有翻译)
最后把第8步的binlog文件和位置替换成导出的文件开头找到的那个带有注释的file和position就好了。
 
 
转载并总结自:http://plusbryan.com/mysql-replication-without-downtime 但也不保证100%一丝不漏的同步过来。 不过也请熟悉这方面的朋友发表下看法。

,

Related posts

mysql utf8mb4 支持emoji表情

测试环境

1、修复my.cnf 配置编码

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

2、修复php程序mysql连接编码

完成以上两步后发现mysql报  SQLSTATE Can't initialize...

MySQL查询优化-explain

摘要:  在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们查询,让查询优化器能够更好的工作。

       一、MySQL 查询优化器是如何工作的

        MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT...

mysql备份脚本

#!/bin/bash

USERNAME=mysqlbackup
PASSWORD=mysql_ritto

DATE=`date +%Y-%m-%d`
OLDDATE=`date +%Y-%m-%d -d '-20 days'`
FTPOLDDATE=`date +%Y-%m-%d -d '-60 days'`

MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
MYSQLADMIN=/usr/local/mysql/bin/mysqladmin
SOCKET=/tmp/mysql.sock

BACKDIR=/data/backup/db
[...

Latest posts

CloudflareCDN+nginx配置特定IP访问限制

Cloudflare公开中国节点IP段
https://www.cloudflare.com/zh-cn/ips/

# 获取CF代理IP
# 配置加入nginx Server前
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from...

git系统间换行符的问题CRLF/LF/CR

CR回车 LF换行Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r

一、AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global...

数据采集触发防火墙

通过dns分析,目标网站使用阿里云ECS云盾.网站流量先经过aliyunddos1001.com服务器

经过反复尝试将之前Curl请求改成基于HTTP_Request2的Socket请求,顺利绕过防火墙.
通过tcpdump抓包比较

# socket
23:37:37.498916 IP localhost.58718 > localhost.http: Flags , seq 258486799, win 65495, options [mss...

wsl2使用genie守护进程

安装 wsl-transdebian

sudo apt install apt-transport-https

wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
deb...

CloudFlare的SSL证书浏览器提示不安全原因

Cloudflare Origin CA 证书安装说明

1、先创建CA证书

2、将证书文件下载

3、获取CloudFlare的根证书

4、将根证书合并的xxxxx.pem的后面

再将证书部署到服务器,浏览器刷新显示“连接安全”。

Leave a Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注