详细点的Mysql主从同步
.说明
此操作文档,如果在master机器已开启bin-log及设定好server-id的情况下,可以不锁表,不停机的实现master-slave同步。这一同步可以将master上已有数据同步到slave中,且如果slave出错,或是新增slave,同样可以参照此文档操作。
此文档基于master版本5.7.24,解压安装,非root帐号运行启停。Slave使用容器运行,镜像地址:harbor.xxxx.com.cn/3rd_part/mysql:5.7.24,运行帐号为非root帐号。
.Mysql Master服务器
一,登陆mysql master服务器
ssh dbqry@master
二,查看my.cnf文件配置
/mysql/my.cnf文件
[client] port=3306 socket=/mysql/mysql.sock [mysqld] port=3306 user=mysql basedir=/mysql/mysql datadir=/mysql/data pid-file=/mysql/mysql.pid socket=/mysql/mysql.sock log_error=/mysql/error.log server-id=100 max_allowed_packet = 500M max_connections=10000 log-bin=mysql-bin binlog-format=mixed character-set-server=utf8 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
确认此配置已经过重启。(如果不重启,后面的操作都不能继续)
三,使用root登陆mysql,确认已为django用户赋权。
GRANT ALL ON TestDB.* TO ' rep-user '@'%';
flush privileges;
四,使用root登陆mysql,重置log-bin文件
【以防意外,先备份!!!】
reset master
五,备份TestDB数据库
mysqldump -u root -p TestDB --single-transaction --master-data=2 --default-character-set utf8 --no-autocommit>TestDB.sql
增加--single-transaction --master-data=2是为了能准备记录log-bin开始的文件号和偏移量。
六,将这两个文件cp到mysql slave机器。
.Mysql slave服务器
一,前置准备
删除已有的mysql服务,确认slave机器上没有任何mysql服务和数据。
二,新增docker运行所需文件夹
mkdir /docker/mysql-docker
mkdir /docker/mysql-docker/data
mkdir /docker/mysql-docker/conf
mkdir /docker/mysql-docker/log
mkdir /docker/mysql-docker/back
用于存储mysql的数据,配置,日志及备份
三,新增slave的配置文件
/docker/mysql-docker/conf/mysql_prism.cnf
[client] port = 3306 #socket=/docker/mysql/mysql.sock [mysqld] port=3306 default-time_zone = '+8:00' #user = mysql #basedir = /docker/mysql/mysql #datadir = /docker/mysql/data #pid-file = /docker/mysql/mysql.pid #socket = /docker/mysql/mysql.sock log_error = /var/log/mysql/error.log server-id = 999 relay-log = mysql-relay # replicate-do-db = TestDB character-set-server = utf8 max_allowed_packet = 500M max_connections = 10000 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
server-id 999大于master上的server-id(100)。
四,新增slave上的docker启动脚本
/docker/mysql-docker/start_mysql.sh
#!/bin/sh mysql_dir=/docker/mysql-docker docker run -p 3306:3306 -v "${mysql_dir}/data":/var/lib/mysql -v "${mysql_dir}/conf":/etc/mysql/conf.d -v "${mysql_dir}/back":/back -v "${mysql_dir}/log":/var/log/mysql --user 1234:1234 --name mysql-slave -e MYSQL_ROOT_PASSWORD=xxxxxx -d harbor.xxxx.com.cn/3rd_part/mysql:5.7.24 |
其中--user 1234:1234对应于宿主机的非root用户和组启动mysql。
之后,登陆进docker,更改mysql的root密码。
docker exec -it mysql-slave mysql -u root –p
五,在slave上新建用户及数据库
CREATE USER 'rep-user'@'%' IDENTIFIED BY 'xxxxxxx';
create database TestDB default character set utf8 collate utf8_general_ci;
GRANT ALL ON TestDB.* TO 'rep-user'@'%';
flush privileges;
六,导入备份的数据库数据
mysql -udjango -p TestDB < /back/ TestDB.sql
七,获取TestDB.sql文件里的bin-log编号和位移
head -n 30 TestDB.sql
输出类似如下:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;
八,写入需要同步的master地址等信息
change master to
master_host='master_ip',
master_user='rep-user',
master_password='xxxxxx',
master_log_file='mysql-bin.000003',
master_log_pos=154;
上面的master_log_file和master_log_pos对应于前一步骤的数据。
九,启动主从同步
start slave
十,查看同步状态及排错,验证
1,查看同步状态命令
show slave status\G,
2,排错
查看日志及stop slave或reset slave
3,验证
create table demo( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY ( id ) ); insert into demo (name) values ('cheng'); |
详细点的Mysql主从同步的更多相关文章
- mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...
- mysql主从同步(2)-问题梳理
之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...
- 【实操笔记】MySQL主从同步功能实现
写在前边: 这两天来了个需求,配置部署两台服务器的MySQL数据同步,折腾了两天查了很多相关资料,一直连不上,后来发现其实是数据库授权的ip有问题,我们用的服务器是机房中的虚拟机加上反向代理出来的,坑 ...
- MySQL主从同步那点事儿
一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...
- Mysql主从同步的实现原理与配置实战
1.什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.主从同步有什么好处? 水平扩展数据库的负载能力. 容错,高可用.Failover ...
- mysql主从同步问题梳理
前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...
- zabbix利用percona-toolkit工具监控Mysql主从同步状态
一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...
- zabbix3.0.4监控mysql主从同步
zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...
- MySQL主从同步几个文件
MySQL主从同步: M锁表 M导出S导入 M解锁 M建同步帐号 S获取点位:产生master.info S开启同步 3306: mysql-bin.0000x mysql-bin.index ...
随机推荐
- Vmware解决虚拟机不能联网的问题
1. 设置为NAT模式 2. 启动win7的服务,命令窗口输入services.msc 回车 3. 修改Vmware的设置
- idea 打开eclipse 项目 编译出现 Error:(1, 1) java: 非法字符: ‘\ufeff’
原因分析: Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,IDEA没有这个智能转换. 解决: 1 用IDEA转换,先转换为GBK,再转回UTF-8
- Java调用动态链接库so文件(传参以及处理返回值问题)
刚来到公司,屁股还没坐稳,老板把我叫到办公室,就让我做一个小程序.我瞬间懵逼了.对小程序一窍不通,还好通过学习小程序视频,两天的时间就做了一个云开发的小程序,但是领导不想核心的代码被别人看到,给了我一 ...
- 将SpringCloud Eureka 服务注册与发现部署到docker
一.前言 最近在学习docker,顺便把之前学习的spring cloud 部署到Docker 中.至于什么是SpringCloud的服务注册与发现,什么是docker,我这里就不作赘述了.可以先去学 ...
- 全能中间件v19.5.7 正式版发布
v19.5.7 更新=========================1.新增 支持更多微信公众号API.2.优化 AccessToken 刷新机制.3.修复 微信公众号“消息加解密方式”为“安全模式 ...
- python 通过Sybase ASE ODBC Driver访问sybase数据库,无需配置DSN【自己整理的】
Python语言对于开发工程师或者测试工程师来说,应该是最高效的开发语言之一.但python访问sybase数据库的资料相对少见.而且sybase字符集为GB1803时,python访问sybase库 ...
- C语言合并果子-贪心算法
/*有几堆水果.每次你把两堆东西移到一起,形成更大的一堆.每个动作消耗的能量是两堆水果的总重量.如何把所有的水果堆在一起,消耗最少的能量?*/ 以上是题目,该题首先要读懂题目,每次移到一起以后都要将数 ...
- Mongodb 的事务在python中的操作
代码实现如下: import pymongo mgClient = pymongo.MongoClient("ip", "port") session = mg ...
- T100 GR 报表常见知识点 (含套版制作)
轉載至赫非域 > T100 GR 报表常见知识点 前端操作 bron1984 7小时前 5浏览 0评论 8.9.1 注意事项 字体: 如果字型没选对,会造成没设对字型的数据汇出 PDF 格式乱掉 ...
- matlab界面UI设计资料
一个实现图像灰度处理并归类于某已知相似图片的程序 软件:matlab2017a 算法:HU检索图像算法.Zernike算法 资料: ①: matlab遍历文件夹下所有图片和遍历所有子文件夹下图片 - ...